public void UpdateReport_WithValidModel_Returns_OkResult()
        {
            // Arrange
            var reportServiceMock = new Mock <IReportService>();

            reportServiceMock.Setup(service => service
                                    .GetReportByIdAsync(It.IsAny <int>()))
            .Returns(Task.FromResult(GetReport()));

            reportServiceMock.Setup(service => service
                                    .UpdateReportAsync(It.IsAny <ReportDTO>()))
            .Returns(Task.FromResult(true));

            var loggerMock = new Mock <ILogger>();

            loggerMock.Setup(c => c.Information(It.IsAny <string>()));

            var controller = new ReportsController(reportServiceMock.Object, loggerMock.Object);
            var profileDTO = new ReportDTO {
                Id = 1
            };

            // Act
            var result = controller.UpdateReport(profileDTO).GetAwaiter().GetResult();

            // Assert
            var okResult = Assert.IsType <OkObjectResult>(result);

            Assert.IsAssignableFrom <ReportDTO>(okResult.Value);
        }
        public void UpdateReport_WithNonexistingId_Returns_NotFoundResult()
        {
            // Arrange
            var reportServiceMock = new Mock <IReportService>();

            reportServiceMock.Setup(service => service
                                    .GetReportByIdAsync(It.IsAny <int>()))
            .Returns(Task.FromResult(GetNullReport()));

            var loggerMock = new Mock <ILogger>();

            loggerMock.Setup(c => c.Warning(It.IsAny <string>()));

            var controller = new ReportsController(reportServiceMock.Object, loggerMock.Object);
            var profileDTO = new ReportDTO {
                Id = 1
            };

            // Act
            var result = controller.UpdateReport(profileDTO).GetAwaiter().GetResult();

            // Assert
            var notFoundObjectResult = Assert.IsType <NotFoundObjectResult>(result);

            Assert.IsAssignableFrom <int>(notFoundObjectResult.Value);
        }
        public void UpdateReport_WithUpdateError_Returns_ConflictResult()
        {
            // Arrange
            var reportServiceMock = new Mock <IReportService>();

            reportServiceMock.Setup(service => service
                                    .GetReportByIdAsync(It.IsAny <int>()))
            .Returns(Task.FromResult(GetReport()));

            reportServiceMock.Setup(service => service
                                    .UpdateReportAsync(It.IsAny <ReportDTO>()))
            .Returns(Task.FromResult(false));

            var loggerMock = new Mock <ILogger>();

            loggerMock.Setup(c => c.Warning(It.IsAny <string>()));

            var controller = new ReportsController(reportServiceMock.Object, loggerMock.Object);
            var profileDTO = new ReportDTO {
                Id = 1
            };

            // Act
            var result = controller.UpdateReport(profileDTO).GetAwaiter().GetResult();

            // Assert
            var conflictResult = Assert.IsType <ConflictResult>(result);
        }
Ejemplo n.º 4
0
        public async Task IndexGet_ValidRequest_Success()
        {
            // Arrange
            var expectedReportItems = _fixture.CreateMany <ReportItem>().ToList();

            _mediatorMock
            .Setup(x => x.Send(
                       It.IsAny <ReportItemAll.Query>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(expectedReportItems);

            var target = new ReportsController(_mediatorMock.Object);

            // Act
            var result = await target.Index();

            // Assert
            var viewResult = result
                             .Should()
                             .BeOfType <ViewResult>().Subject;

            var model = viewResult.ViewData.Model
                        .Should()
                        .BeOfType <ReportViewModel>().Subject;

            model.ReportItems
            .Should()
            .HaveCount(expectedReportItems.Count);
        }
 public ReportViewModel(ReportsController controller, ApplicationsController applicationsController, IAppNavigationService navigationService)
 {
     ApplicationsController = applicationsController;
     _controller            = controller;
     _navigationService     = navigationService;
     Messenger.Register <ReportMessage>(this, OnNewReport);
 }
Ejemplo n.º 6
0
        private void InitializeViews()
        {
            _browserView   = new BrowserView();
            _dataViewModel = new DataViewModel();
            _dataViewModel.ReportSelectionChanged += OnReportSelectionChanged;
            _dataView = new DataView
            {
                DataContext = _dataViewModel
            };

            _reportViewModel = new ReportViewModel(_browserView, _dataViewModel, _dataView, ReportsController.SelectedProject);
            _reportView      = new ReportView
            {
                DataContext = _reportViewModel
            };

            var reports = ReportsController.GetReports(false).Result;

            _reportsNavigationViewModel = new ReportsNavigationViewModel(reports, GetSettings(), _pathInfo);
            _reportsNavigationViewModel.ReportSelectionChanged += OnReportSelectionChanged;
            _reportsNavigationViewModel.ReportViewModel         = _reportViewModel;
            _reportsNavigationViewModel.ProjectLocalFolder      = ReportsController.GetProjectLocalFolder();

            _reportsNavigationView = new ReportsNavigationView(_reportsNavigationViewModel);
            _reportsNavigationViewModel.ReportsNavigationView = _reportsNavigationView;

            _reportViewControl.UpdateViewModel(_reportView);
            _reportsNavigationViewControl.UpdateViewModel(_reportsNavigationView);
        }
Ejemplo n.º 7
0
        public void Init()
        {
            var dispatchService           = new Mock <IDispatchService>();
            var receiveService            = new Mock <IReceiveService>();
            var userProfileService        = new Mock <IUserProfileService>();
            var hubService                = new Mock <IHubService>();
            var transactionService        = new Mock <ITransactionService>();
            var commodityService          = new Mock <ICommodityService>();
            var commodityTypeService      = new Mock <ICommodityTypeService>();
            var programService            = new Mock <IProgramService>();
            var adminUnitService          = new Mock <IAdminUnitService>();
            var dispatchAllocationService = new Mock <IDispatchAllocationService>();
            var commoditySourceService    = new Mock <ICommoditySourceService>();

            _reportsController = new ReportsController(
                dispatchService.Object,
                receiveService.Object,
                userProfileService.Object,
                hubService.Object,
                transactionService.Object,
                commodityService.Object,
                commodityTypeService.Object,
                programService.Object,
                adminUnitService.Object,
                dispatchAllocationService.Object,
                commoditySourceService.Object

                );
        }
Ejemplo n.º 8
0
        [InlineData("e48d6b01-3dc8-4f11-a86c-c35affb09c0c", -1, false)] // Unsuccessful ReportUser
        public void TestReportUser(string userAspId, int targetUserId, bool expectingSuccess)
        {
            var controllerContextMock = new Mock <ControllerContext>()
            {
                CallBase = true
            };
            var contextMock = new Mock <ApplicationDbContext>()
            {
                CallBase = true
            };

            contextMock.Setup(c => c.SaveChanges()).Returns(1);

            var controller = new ReportsController
            {
                ControllerContext = controllerContextMock.Object,
                Context           = contextMock.Object,
                GetUserId         = () => userAspId
            };

            var result = controller.ReportUser(targetUserId);

            if (expectingSuccess)
            {
                Assert.True(result is ViewResult);
            }
            else
            {
                Assert.True(result is HttpNotFoundResult);
            }
        }
Ejemplo n.º 9
0
        public void GetDetailsEventsTestApi()
        {
            var controller = new ReportsController();
            var results    = controller.GetDetailsEvents(1);


            Assert.Null(results);
        }
Ejemplo n.º 10
0
        public void PutProduct_ShouldFail_WhenDifferentID()
        {
            var controller = new ReportsController(new TestReportAppContext());

            var badresult = controller.PutReport(5, GetDemoReport());

            Assert.IsInstanceOfType(badresult, typeof(BadRequestResult));
        }
Ejemplo n.º 11
0
        public void DrillDownEventNegativeTestApi()
        {
            var controller = new ReportsController();
            var results    = controller.DrillDownEvent(-1);

            Assert.IsType <List <dynamic> >(results);
            Assert.Equal(0, results.Count);
        }
Ejemplo n.º 12
0
 public FrmReportsViewer(mz.erp.ui.controllers.ReportsController uiController, string _ProcesoLlamador, string _Tarea)
 {
     InitializeComponent();
     _uiController = uiController;
     KeyPreview    = true;
     InitEvents();
     InitInterface(_ProcesoLlamador, _Tarea);
 }
Ejemplo n.º 13
0
 public void BeforeEachTest()
 {
     Context.BlogPosts.Add(Post);
     Target = new ReportsController(Context)
     {
         Today = Today
     };
 }
Ejemplo n.º 14
0
        public Reports(ReportsController my_controller, String id, int type)
        {
            InitializeComponent();
            userid=id;
            setup(id, "FAFOS Report");
            this.ddlPickReport.SelectedIndexChanged += new EventHandler(my_controller.prepareReport);

            chartReport.ChartAreas[0].AxisY.Minimum = 0;
        }
        public void BeforeEachTest()
        {
            Context.Authors.Add(AuthorWithOnePost);

            Target = new ReportsController(Context)
            {
                Today = Today
            };
        }
Ejemplo n.º 16
0
        public override void SaveSettings(Dictionary <string, string> VisualizerSettings)
        {
            VisualizerSettings[ReportsController.SETTING_Xslt_TransformFile] = this.ctlTransform.Url;

            if (this.StoredExtensionObjects != null && this.ParentModule.UserInfo.IsSuperUser)
            {
                ReportsController.SetXsltExtensionObjects(this.TabModuleId, this.StoredExtensionObjects);
            }
        }
Ejemplo n.º 17
0
        public ReportsControllerTests()
        {
            fixture    = new Fixture();
            weeeClient = A.Fake <IWeeeClient>();
            breadcrumb = A.Fake <BreadcrumbService>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <IRequest <UserStatus> > ._)).Returns(UserStatus.Active);

            controller = new ReportsController(() => weeeClient, breadcrumb);
        }
Ejemplo n.º 18
0
        public void Controller_Get_Should_Be_NoContentResult()
        {
            var fixture    = new DbContextFixture();
            var logger     = new Mock <ILogger <ReportsController> >().Object;
            var repository = new ReportRepository(fixture.context);
            var controller = new ReportsController(logger, repository);
            ActionResult <IQueryable <Report> > result = controller.Get();

            result.Result.Should().BeOfType <NoContentResult>();
        }
Ejemplo n.º 19
0
 private void ProjectsControllerOnCurrentProjectChanged(object sender, EventArgs e)
 {
     _reportsController = new ReportsController(_projectsController.CurrentProject, _pathInfo, _taskTemplateIdProvider);
     if (_reportsNavigationViewModel != null)
     {
         _reportsNavigationViewModel.SelectedProject    = _reportsController.Project;
         _reportsNavigationViewModel.ProjectLocalFolder = _reportsController.ProjectLocalFolder;
         RefreshView();
     }
 }
Ejemplo n.º 20
0
        public void GetAllBeInvalidOperationException()
        {
            _mockReportService.SetupAsync(v => v.GetAllAsync()).Throws <InvalidOperationException>();

            ReportsController reportsController = new ReportsController(_mockReportService.Object, _mockMapper.Object);

            var result = (ExceptionResult)reportsController.GetAll().Result;

            result.Exception.Should().BeOfType <InvalidOperationException>();
        }
Ejemplo n.º 21
0
        public void GetAllBeOk()
        {
            _mockReportService.SetupAsync(v => v.GetAllAsync()).Returns(_reportDtos);

            ReportsController reportsController = new ReportsController(_mockReportService.Object, _mockMapper.Object);

            var result = (OkNegotiatedContentResult <IEnumerable <ReportShort> >)reportsController.GetAll().Result;

            result.Content.Should().BeEquivalentTo(_reportShorts);
        }
        private void Controller_ProjectChanged(object sender, Sdl.Reports.Viewer.API.Events.ProjectChangedEventArgs e)
        {
            if (_reportsNavigationViewModel != null)
            {
                _reportsNavigationViewModel.ProjectLocalFolder = ReportsController.GetProjectLocalFolder();
                _reportsNavigationViewModel.RefreshView(GetSettings(), e.Reports);
            }

            EnableControls(false);
        }
Ejemplo n.º 23
0
        public Reports(ReportsController my_controller, String id, int type)
        {
            InitializeComponent();
            userid = id;
            setup(id, "FAFOS Report");
            this.ddlPickReport.SelectedIndexChanged += new EventHandler(my_controller.prepareReport);


            chartReport.ChartAreas[0].AxisY.Minimum = 0;
        }
        public void Check_If_Student_Payment_Schedule_View_Page_Exists()
        {
            // Arrange
            ReportsController controller = new ReportsController();

            // Act
            ViewResult result = controller.PaymentSchedule() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
        public void Check_If_Student_Attendance_View_Page_Exists()
        {
            // Arrange
            ReportsController controller = new ReportsController();

            // Act
            ViewResult result = controller.AttendanceReview() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
Ejemplo n.º 26
0
        public void Get_GetsReportsForOrganization()
        {
            var orgId    = 1;
            var _reports = new Mock <IReportRepository>();
            var _mapper  = new Mock <IMapper>();

            var controller = new ReportsController(_reports.Object, _mapper.Object);

            controller.Get(orgId);
            _reports.Verify(r => r.GetReportsForOrganization(orgId), Times.Once());
        }
        public void Check_If_Student_Grade_History_View_Page_Exists()
        {
            // Arrange
            ReportsController controller = new ReportsController();

            // Act
            ViewResult result = controller.GradeHistory() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
        public void Check_If_Student_Detail_View_Page_Exists()
        {
            // Arrange
            ReportsController controller = new ReportsController();

            // Act
            ViewResult result = controller.StudentDetail() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
Ejemplo n.º 29
0
        public void Controller_Get_ById_Should_Be_NoContentResult()
        {
            var fixture    = new DbContextFixture();
            var logger     = new Mock <ILogger <ReportsController> >().Object;
            var repository = new ReportRepository(fixture.context);
            var controller = new ReportsController(logger, repository);
            var e          = ReportEntityTypeConfiguration.ReportSeed.First().Id;
            ActionResult <Report> result = controller.Get(e);

            result.Result.Should().BeOfType <NoContentResult>();
        }
        public void Check_If_Transcript_View_Page_Exists()
        {
            // Arrange
            ReportsController controller = new ReportsController();

            // Act
            ViewResult result = controller.Transcript() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
Ejemplo n.º 31
0
        public void Controller_Post_Should_Be_OkResult()
        {
            var fixture    = new DbContextFixture();
            var logger     = new Mock <ILogger <ReportsController> >().Object;
            var repository = new ReportRepository(fixture.context);
            var controller = new ReportsController(logger, repository);
            var e          = ReportEntityTypeConfiguration.ReportSeed.ElementAt(0);
            ActionResult <Report> result = controller.Post(e);

            result.Result.Should().BeOfType <OkObjectResult>();
        }
        public async Task GetIndex_WhenUserIsActive_RedirectsToChooseReport()
        {
            // Arrange
            IWeeeClient client = A.Fake<IWeeeClient>();
            A.CallTo(() => client.SendAsync(A<string>._, A<IRequest<UserStatus>>._)).Returns(UserStatus.Active);

            ReportsController controller = new ReportsController(
                () => client,
                A.Dummy<BreadcrumbService>());

            // Act
            ActionResult result = await controller.Index();

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

            Assert.Equal("ChooseReport", redirectResult.RouteValues["action"]);
            Assert.Equal("Reports", redirectResult.RouteValues["controller"]);
        }
        public async Task GetIndex_WhenUserIsNotActive_RedirectsToInternalUserAuthorizationRequired(UserStatus userStatus)
        {
            // Arrange
            IWeeeClient client = A.Fake<IWeeeClient>();
            A.CallTo(() => client.SendAsync(A<string>._, A<IRequest<UserStatus>>._)).Returns(userStatus);

            ReportsController controller = new ReportsController(
                () => client,
                A.Dummy<BreadcrumbService>());

            // Act
            ActionResult result = await controller.Index();

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

            Assert.Equal("InternalUserAuthorisationRequired", redirectResult.RouteValues["action"]);
            Assert.Equal("Account", redirectResult.RouteValues["controller"]);
            Assert.Equal(userStatus, redirectResult.RouteValues["userStatus"]);
        }
        public async Task PostSchemeWeeeData_Always_SetsInternalBreadcrumbToViewReports()
        {
            BreadcrumbService breadcrumb = new BreadcrumbService();

            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                breadcrumb);

            // Act
            ActionResult result = await controller.SchemeWeeeData(A.Dummy<ProducersDataViewModel>());

            // Assert
            Assert.Equal("View reports", breadcrumb.InternalActivity);
        }
        public void GetChooseReport_Always_ReturnsChooseReportView()
        {
            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                A.Dummy<BreadcrumbService>());

            // Act
            ActionResult result = controller.ChooseReport();

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(string.IsNullOrEmpty(viewResult.ViewName) || viewResult.ViewName.ToLowerInvariant() == "choosereport");

            ChooseReportViewModel viewModel = viewResult.Model as ChooseReportViewModel;
            Assert.NotNull(viewModel);
        }
        public async Task PostSchemeWeeeData_WithViewModel_SetsTriggerDownloadToTrue()
        {
            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                A.Dummy<BreadcrumbService>());

            ProducersDataViewModel viewModel = new ProducersDataViewModel();

            // Act
            ActionResult result = await controller.SchemeWeeeData(viewModel);

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.Equal(true, viewResult.ViewBag.TriggerDownload);
        }
        public async Task PostSchemeWeeeData_WithInvalidViewModel_SetsTriggerDownloadToFalse()
        {
            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                A.Dummy<BreadcrumbService>());

            ProducersDataViewModel viewModel = new ProducersDataViewModel();

            // Act
            controller.ModelState.AddModelError("Key", "Error");
            ActionResult result = await controller.SchemeWeeeData(viewModel);

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.Equal(false, viewResult.ViewBag.TriggerDownload);
        }
        public async Task GetDownloadProducerDetailsCsv_WithNoSchemeIdAndNoAuthorityId_ReturnsFileNameWithComplianceYearAndCurrentTime()
        {
            // Arrange
            IWeeeClient client = A.Fake<IWeeeClient>();

            CSVFileData file = new CSVFileData() { FileContent = "Content" };
            A.CallTo(() => client.SendAsync(A<string>._, A<GetMemberDetailsCsv>._))
                .Returns(file);

            ReportsController controller = new ReportsController(
                () => client,
                A.Dummy<BreadcrumbService>());

            // Act
            SystemTime.Freeze(new DateTime(2016, 12, 31, 23, 59, 58));
            ActionResult result = await controller.DownloadProducerDetailsCsv(2015, null, null, false, false);
            SystemTime.Unfreeze();

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("2015_producerdetails_31122016_2359.csv", fileResult.FileDownloadName);
        }
        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 async Task GetUkWeeeData_Always_ReturnsUKWeeeDataProducerDataViewModel()
        {
            // Arrange
            List<int> years = new List<int>() { 2001, 2002 };

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetDataReturnsActiveComplianceYears>._)).Returns(years);

            ReportsController controller = new ReportsController(
                () => weeeClient,
                A.Dummy<BreadcrumbService>());

            // Act
            ActionResult result = await controller.UkWeeeData();

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.True(string.IsNullOrEmpty(viewResult.ViewName) || viewResult.ViewName == "UkWeeeData");

            ProducersDataViewModel model = viewResult.Model as ProducersDataViewModel;
            Assert.NotNull(model);
            Assert.Collection(model.ComplianceYears,
                y1 => Assert.Equal("2001", y1.Text),
                y2 => Assert.Equal("2002", y2.Text));
        }
        public async Task GetMissingProducerData_Always_SetsInternalBreadcrumbToViewReports()
        {
            BreadcrumbService breadcrumb = new BreadcrumbService();

            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                breadcrumb);

            // Act
            await controller.MissingProducerData();

            // Assert
            Assert.Equal("View reports", breadcrumb.InternalActivity);
        }
        public async Task GetDownloadUkWeeeDataCsv_Always_CallsApiAndReturnsFileResultWithContentTypeOfTextCsv()
        {
            // Arrange
            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<GetUkWeeeCsv>._))
                .WhenArgumentsMatch(a => a.Get<int>("complianceYear") == 2015)
                .Returns(A.Dummy<FileInfo>());

            ReportsController controller = new ReportsController(
                () => weeeClient,
                A.Dummy<BreadcrumbService>());

            ProducersDataViewModel viewModel = new ProducersDataViewModel();

            // Act
            ActionResult result = await controller.DownloadUkWeeeDataCsv(2015);

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("text/csv", fileResult.ContentType);
        }
        public async void HttpGet_UkEeeData_ShouldReturnsUkEeeDataView()
        {
            IWeeeClient client = A.Fake<IWeeeClient>();
            ReportsController controller = new ReportsController(
                () => client,
                A.Dummy<BreadcrumbService>());

            A.CallTo(() => client.SendAsync(A<string>._, A<GetDataReturnsActiveComplianceYears>._))
                .Returns(new List<int> { 2015, 2016 });

            var result = await controller.UkEeeData();

            var viewResult = ((ViewResult)result);
            Assert.Equal("UkEeeData", viewResult.ViewName);
        }
        public async Task GetDownloadProducerDetailsCsv_Always_ReturnsFileResultWithContentTypeOfTextCsv()
        {
            // Arrange
            IWeeeClient client = A.Fake<IWeeeClient>();

            CSVFileData file = new CSVFileData() { FileContent = "Content" };
            A.CallTo(() => client.SendAsync(A<string>._, A<GetMemberDetailsCsv>._))
                .Returns(file);

            ReportsController controller = new ReportsController(
                () => client,
                A.Dummy<BreadcrumbService>());

            // Act
            ActionResult result = await controller.DownloadProducerDetailsCsv(2015, null, null, false, false);

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("text/csv", fileResult.ContentType);
        }
        public async Task GetDownloadProducerDetailsCsv_WithNoSchemeIdAndWithAnAuthorityId_ReturnsFileNameWithComplianceYearAuthorityAbbreviationAndCurrentTime()
        {
            // Arrange
            IWeeeClient client = A.Fake<IWeeeClient>();

            CSVFileData file = new CSVFileData() { FileContent = "Content" };
            A.CallTo(() => client.SendAsync(A<string>._, A<GetMemberDetailsCsv>._))
                .Returns(file);

            UKCompetentAuthorityData authorityData = new UKCompetentAuthorityData() { Abbreviation = "AA" };
            A.CallTo(() => client.SendAsync(A<string>._, A<GetUKCompetentAuthorityById>._))
                .WhenArgumentsMatch(a => a.Get<GetUKCompetentAuthorityById>("request").Id == new Guid("703839B3-A081-4491-92B7-FCF969067EA3"))
                .Returns(authorityData);

            ReportsController controller = new ReportsController(
                () => client,
                A.Dummy<BreadcrumbService>());

            // Act
            SystemTime.Freeze(new DateTime(2016, 12, 31, 23, 59, 58));
            ActionResult result = await controller.DownloadProducerDetailsCsv(
                2015,
                null,
                new Guid("703839B3-A081-4491-92B7-FCF969067EA3"),
                false,
                false);
            SystemTime.Unfreeze();

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("2015_AA_producerdetails_31122016_2359.csv", fileResult.FileDownloadName);
        }
        public async Task GetDownloadProducerDetailsCsv_WithSchemeIdAndNoAuthorityId_ReturnsFileNameWithComplianceYearSchemeApprovalNumberAndCurrentTime()
        {
            // Arrange
            IWeeeClient client = A.Fake<IWeeeClient>();

            CSVFileData file = new CSVFileData() { FileContent = "Content" };
            A.CallTo(() => client.SendAsync(A<string>._, A<GetMemberDetailsCsv>._))
                .Returns(file);

            SchemeData schemeData = new SchemeData() { ApprovalName = "WEE/AA1111AA/SCH" };
            A.CallTo(() => client.SendAsync(A<string>._, A<GetSchemeById>._))
                .WhenArgumentsMatch(a => a.Get<GetSchemeById>("request").SchemeId == new Guid("88DF333E-6B2B-4D72-B411-7D7024EAA5F5"))
                .Returns(schemeData);

            ReportsController controller = new ReportsController(
                () => client,
                A.Dummy<BreadcrumbService>());

            // Act
            SystemTime.Freeze(new DateTime(2016, 12, 31, 23, 59, 58));
            ActionResult result = await controller.DownloadProducerDetailsCsv(2015, new Guid("88DF333E-6B2B-4D72-B411-7D7024EAA5F5"), null, false, false);
            SystemTime.Unfreeze();

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("2015_WEEAA1111AASCH_producerdetails_31122016_2359.csv", fileResult.FileDownloadName);
        }
        public async Task GetDownloadSchemeWeeeDataCsv_Always_CallsApiAndReturnsFileResultWithCorrectFileName()
        {
            // Arrange
            FileInfo file = new FileInfo("TEST FILE.csv", new byte[] { 1, 2, 3 });

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetSchemeWeeeCsv>._))
                .WhenArgumentsMatch(a =>
                    a.Get<GetSchemeWeeeCsv>("request").ComplianceYear == 2015 &&
                    a.Get<GetSchemeWeeeCsv>("request").SchemeId == new Guid("B6826CC7-5043-47D2-96C9-7B559BB7DEA1") &&
                    a.Get<GetSchemeWeeeCsv>("request").ObligationType == ObligationType.B2C)
                .Returns(file);

            ReportsController controller = new ReportsController(
                () => weeeClient,
                A.Dummy<BreadcrumbService>());

            ProducersDataViewModel viewModel = new ProducersDataViewModel();

            // Act
            ActionResult result = await controller.DownloadSchemeWeeeDataCsv(
                2015,
                new Guid("B6826CC7-5043-47D2-96C9-7B559BB7DEA1"),
                ObligationType.B2C);

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("TEST FILE.csv", fileResult.FileDownloadName);
        }
        public async Task PostSchemeObligationData_Always_SetsInternalBreadcrumbToViewReports()
        {
            BreadcrumbService breadcrumb = new BreadcrumbService();

            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                breadcrumb);

            // Act
            await controller.SchemeObligationData(A.Dummy<ComplianceYearReportViewModel>());

            // Assert
            Assert.Equal("View reports", breadcrumb.InternalActivity);
        }
        public async Task GetDownloadSchemeWeeeDataCsv_Always_ReturnsFileResultWithContentTypeOfTextCsv()
        {
            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Fake<IWeeeClient>(),
                A.Dummy<BreadcrumbService>());

            ProducersDataViewModel viewModel = new ProducersDataViewModel();

            // Act
            ActionResult result = await controller.DownloadSchemeWeeeDataCsv(
                A.Dummy<int>(),
                A.Dummy<Guid>(),
                A.Dummy<ObligationType>());

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("text/csv", fileResult.ContentType);
        }
        public async Task GetSchemeWeeeData_Always_SetsTriggerDownloadToFalse()
        {
            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                A.Dummy<BreadcrumbService>());

            // Act
            ActionResult result = await controller.SchemeWeeeData();

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.Equal(false, viewResult.ViewBag.TriggerDownload);
        }
        public async Task GetProducerDetails_Always_SetsInternalBreadcrumbToViewReports()
        {
            BreadcrumbService breadcrumb = new BreadcrumbService();

            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                breadcrumb);

            // Act
            ActionResult result = await controller.ProducerDetails();

            // Assert
            Assert.Equal("View reports", breadcrumb.InternalActivity);
        }
        public async Task PostSchemeWeeeData_WithInvalidViewModel_ReturnsSchemeWeeeDataProducerDataViewModel()
        {
            // Arrange
            IWeeeClient weeeClient = A.Fake<IWeeeClient>();

            List<int> years = new List<int>() { 2001, 2002 };
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetDataReturnsActiveComplianceYears>._)).Returns(years);

            List<SchemeData> schemes = new List<SchemeData>();
            schemes.Add(new SchemeData() { Id = new Guid("F0D0B242-7656-46FA-AF15-204E710E9850"), SchemeName = "Scheme 1" });
            schemes.Add(new SchemeData() { Id = new Guid("2FE842AD-E122-4C40-9C39-EC183CFCD9F3"), SchemeName = "Scheme 2" });
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<Weee.Requests.Admin.GetSchemes>._)).Returns(schemes);

            ReportsController controller = new ReportsController(
                () => weeeClient,
                A.Dummy<BreadcrumbService>());

            ProducersDataViewModel viewModel = new ProducersDataViewModel();

            // Act
            controller.ModelState.AddModelError("Key", "Error");
            ActionResult result = await controller.SchemeWeeeData(viewModel);

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.True(string.IsNullOrEmpty(viewResult.ViewName) || viewResult.ViewName == "SchemeWeeeData");

            ProducersDataViewModel model = viewResult.Model as ProducersDataViewModel;
            Assert.NotNull(model);

            Assert.Collection(model.ComplianceYears,
                y1 => Assert.Equal("2001", y1.Text),
                y2 => Assert.Equal("2002", y2.Text));

            Assert.Collection(model.Schemes,
                s1 => Assert.Equal("Scheme 1", s1.Text),
                s2 => Assert.Equal("Scheme 2", s2.Text));
        }
        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"]);
        }
        public async Task PostProducerDetails_WithViewModel_SetsTriggerDownloadToTrue()
        {
            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                A.Dummy<BreadcrumbService>());

            // Act
            ActionResult result = await controller.ProducerDetails(A.Dummy<ReportsFilterViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.Equal(true, viewResult.ViewBag.TriggerDownload);
        }
        public void PostChooseReport_ModelIsInvalid_ReturnsChooseReportView()
        {
            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                A.Dummy<BreadcrumbService>());

            controller.ModelState.AddModelError("Key", "Any error");

            // Act
            ActionResult result = controller.ChooseReport(A.Dummy<ChooseReportViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(string.IsNullOrEmpty(viewResult.ViewName) || viewResult.ViewName.ToLowerInvariant() == "choosereport");
        }
        public async Task PostUKEeeData_ValidModel_SetsTriggerDownloadToTrue()
        {
            // Arrange
            ReportsController controller = new ReportsController(
                () => A.Dummy<IWeeeClient>(),
                A.Dummy<BreadcrumbService>());

            ComplianceYearReportViewModel viewModel = new ComplianceYearReportViewModel();

            // Act
            ActionResult result = await controller.UkEeeData(viewModel);

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.Equal(true, viewResult.ViewBag.TriggerDownload);
        }
        public async Task GetDownloadUkEeeDataCsv_ReturnsFileResultWithContentTypeOfTextCsv()
        {
            // Arrange
            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetUkEeeDataCsv>._)).Returns(new CSVFileData
            {
                FileContent = "UK EEE DATA REPORT",
                FileName = "test.csv"
            });
            
            ReportsController controller = new ReportsController(
                () => weeeClient,
                A.Dummy<BreadcrumbService>());

            // Act
            ActionResult result = await controller.DownloadUkEeeDataCsv(2015);

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);
            Assert.Equal("text/csv", fileResult.ContentType);
        }
        public async Task PostSchemeObligationData_WithInvalidViewModel_ReturnsUkWeeeDataProducerDataViewModel()
        {
            // Arrange
            List<int> years = new List<int>() { 2001, 2002 };

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetDataReturnsActiveComplianceYears>._)).Returns(years);

            ReportsController controller = new ReportsController(
                () => weeeClient,
                A.Dummy<BreadcrumbService>());

            // Act
            controller.ModelState.AddModelError("Key", "Error");
            ActionResult result = await controller.SchemeObligationData(new ComplianceYearReportViewModel());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.True(string.IsNullOrEmpty(viewResult.ViewName) || viewResult.ViewName == "SchemeObligationData");

            ComplianceYearReportViewModel model = viewResult.Model as ComplianceYearReportViewModel;
            Assert.NotNull(model);
            Assert.Collection(model.ComplianceYears,
                y1 => Assert.Equal("2001", y1.Text),
                y2 => Assert.Equal("2002", y2.Text));
        }
        public async Task PostProducerDetails_WithInvalidViewModel_ReturnsSchemeWeeeDataProducerDataViewModel()
        {
            // Arrange
            IWeeeClient weeeClient = A.Fake<IWeeeClient>();

            List<int> years = new List<int>() { 2001, 2002 };
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetMemberRegistrationsActiveComplianceYears>._)).Returns(years);

            UKCompetentAuthorityData authority1 = new UKCompetentAuthorityData()
            {
                Id = new Guid("EB44DAD0-6B47-47C1-9124-4BE91042E563"),
                Abbreviation = "AA1"
            };
            List<UKCompetentAuthorityData> authorities = new List<UKCompetentAuthorityData>() { authority1 };
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<GetUKCompetentAuthorities>._)).Returns(authorities);

            SchemeData scheme1 = new SchemeData()
            {
                Id = new Guid("0F638399-226F-4942-AEF1-E6BC7EB447D6"),
                SchemeName = "Test Scheme"
            };
            List<SchemeData> schemes = new List<SchemeData>() { scheme1 };
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<Weee.Requests.Admin.GetSchemes>._)).Returns(schemes);

            ReportsController controller = new ReportsController(
                () => weeeClient,
                A.Dummy<BreadcrumbService>());

            // Act
            controller.ModelState.AddModelError("Key", "Error");
            ActionResult result = await controller.ProducerDetails(A.Dummy<ReportsFilterViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);
            Assert.True(string.IsNullOrEmpty(viewResult.ViewName) || viewResult.ViewName.ToLowerInvariant() == "producerdetails");

            ReportsFilterViewModel model = viewResult.Model as ReportsFilterViewModel;
            Assert.NotNull(model);

            Assert.Collection(model.ComplianceYears,
                y1 => Assert.Equal("2001", y1.Text),
                y2 => Assert.Equal("2002", y2.Text));

            Assert.Collection(model.AppropriateAuthorities,
                a1 => { Assert.Equal("EB44DAD0-6B47-47C1-9124-4BE91042E563", a1.Value, true); Assert.Equal("AA1", a1.Text); });

            Assert.Collection(model.SchemeNames,
                s1 => { Assert.Equal("0F638399-226F-4942-AEF1-E6BC7EB447D6", s1.Value, true); Assert.Equal("Test Scheme", s1.Text); });
        }
        public async void HttpPost_UkEeeData_ModelIsInvalid_ShouldRedirectViewWithError()
        {
            IWeeeClient client = A.Fake<IWeeeClient>();
            ReportsController controller = new ReportsController(
                () => client,
                A.Dummy<BreadcrumbService>());
            controller.ModelState.AddModelError("Key", "Any error");

            var result = await controller.UkEeeData(new ComplianceYearReportViewModel());

            Assert.IsType<ViewResult>(result);
            Assert.False(controller.ModelState.IsValid);
        }