public ActionResult ChooseReport()
        {
            SetBreadcrumb();

            var model = new ChooseReportViewModel();

            return View(model);
        }
        public static void BeforeAllTests(TestContext testContext)
        {
            ServerTimeProvider.Current = Time;
            ClientTimeProvider.Current = Time;
            // start the data service
            _serviceAddress = new Uri("http://localhost:80/Temporary_Listen_Addresses/BBQRMSTestingGivenManagerIsViewingChooseReportScreen/");
            Host.Open(_serviceAddress);
            _dataService = new BBQRMSEntities(_serviceAddress);

            _mockMessageBus = new Mock <IMessageBus>();

            _mockSecurityContext = new Mock <ISecurityContext>();
            var reportingRole = PrepareRole.Named("Reporting").WithPrivelege(Privileges.RunReports);
            var mockEmployee  = PrepareEmployee.With(firstName: "Bob", lastName: "Marley").AndRole(reportingRole);

            _mockSecurityContext.SetupGet(s => s.CurrentUser).Returns(mockEmployee);

            _chooseReportViewModel = new ChooseReportViewModel(_dataService, _mockMessageBus.Object, Time);
        }
        public ActionResult ChooseReport(ChooseReportViewModel model)
        {
            SetBreadcrumb();

            if (!ModelState.IsValid)
            {
                return View(model);
            }

            switch (model.SelectedValue)
            {
                case Reports.ProducerDetails:
                    return RedirectToAction("ProducerDetails");

                case Reports.ProducerPublicRegister:
                    return RedirectToAction("ProducerPublicRegister");

                case Reports.UkWeeeData:
                    return RedirectToAction("UkWeeeData");

                case Reports.ProducerEeeData:
                    return RedirectToAction("ProducerEeeData");

                case Reports.SchemeWeeeData:
                    return RedirectToAction("SchemeWeeeData");

                case Reports.UkEeeData:
                    return RedirectToAction("UkEeeData");

                case Reports.SchemeObligationData:
                    return RedirectToAction("SchemeObligationData");

                case Reports.MissingProducerData:
                    return RedirectToAction("MissingProducerData");

                default:
                    throw new NotSupportedException();
            }
        }
        public void PostChooseReport_WithInvalidSelectedValue_ThrowsNotSupportedException()
        {
            // Arrange
            ReportsController controller = new ReportsController(
               () => A.Dummy<IWeeeClient>(),
               A.Dummy<BreadcrumbService>());

            // Act
            ChooseReportViewModel model = new ChooseReportViewModel { SelectedValue = "SOME INVALID VALUE" };
            Func<ActionResult> testCode = () => controller.ChooseReport(model);

            // Assert
            Assert.Throws<NotSupportedException>(testCode);
        }
        public void PostChooseReport_WithSelectedValue_RedirectsToExpectedAction(string selectedValue, string expectedAction)
        {
            // Arrange
            ReportsController controller = new ReportsController(
               () => A.Dummy<IWeeeClient>(),
               A.Dummy<BreadcrumbService>());

            // Act
            ChooseReportViewModel model = new ChooseReportViewModel { SelectedValue = selectedValue };
            ActionResult result = controller.ChooseReport(model);

            // Assert
            RedirectToRouteResult redirectResult = result as RedirectToRouteResult;
            Assert.NotNull(redirectResult);

            Assert.Equal(expectedAction, redirectResult.RouteValues["action"]);
        }