public async Task ReportCountIsControlledBySubmissionOptions(SectorTypes testSector, int testEditableReportCount)
        {
            // Arrange
            var testConfig = new SubmissionOptions {
                EditableReportCount = testEditableReportCount
            };
            var testOrg = new Organisation {
                OrganisationId = 1, SectorType = testSector
            };
            var testUserOrg = new UserOrganisation {
                Organisation = testOrg
            };
            DateTime testSnapshotDate = mockSharedBusinessLogic.GetAccountingStartDate(testOrg.SectorType);

            var mockService = new Mock <SubmissionPresenter>(
                mockDataRepo.Object,
                mockScopeBL.Object,
                null,
                mockDraftFileBL.Object,
                MoqHelpers.CreateIOptionsSnapshotMock(testConfig));

            // Call the real functions unless overridden
            mockService.CallBase = true;

            // Act
            SubmissionPresenter    testService   = mockService.Object;
            List <ReportInfoModel> actualResults = await testService.GetAllEditableReportsAsync(testUserOrg, testSnapshotDate);

            // Assert
            Assert.AreEqual(
                testEditableReportCount,
                actualResults.Count,
                $"Expected editable report count to be {testEditableReportCount}");
        }
Beispiel #2
0
        public async Task DraftFile_GetDraftFile_Returns_A_Valid_DraftAsync()
        {
            // Arrange
            User         mockedUser         = UserHelper.GetNotAdminUserWithVerifiedEmailAddress();
            Organisation mockedOrganisation = OrganisationHelper.GetPublicOrganisation();

            mockedOrganisation.OrganisationId = new Random().Next(1000, 9999);
            UserOrganisation mockedUserOrganisation = UserOrganisationHelper.LinkUserWithOrganisation(mockedUser, mockedOrganisation);
            Return           mockedReturn           = ReturnHelper.GetSubmittedReturnForOrganisationAndYear(mockedUserOrganisation, ConfigHelpers.SharedOptions.FirstReportingYear);

            OrganisationHelper.LinkOrganisationAndReturn(mockedOrganisation, mockedReturn);

            var testDraftFileBL       = new DraftFileBusinessLogic(null, new SystemFileRepository(new StorageOptions()));
            var sharedBusinessLogic   = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();
            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), testDraftFileBL);
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Act
            Draft actualDraft = await testPresenter.GetDraftFileAsync(
                mockedOrganisation.OrganisationId,
                mockedOrganisation.SectorType.GetAccountingStartDate().Year,
                mockedUser.UserId);

            // Assert
            Assert.NotNull(actualDraft);
            Assert.True(actualDraft.IsUserAllowedAccess);
            Assert.AreEqual(mockedUser.UserId, actualDraft.LastWrittenByUserId);

            // Clean up
            await testDraftFileBL.DiscardDraftAsync(actualDraft);
        }
Beispiel #3
0
        public void IsCurrentSnapshotYear_Returns_true_When_SnapshotYear_is_the_Current_Year()
        {
            var currentSnapshotYear = 2001;
            var testSnapshotYear    = 2001;

            // Mocks
            var mockService = new Mock <SubmissionPresenter>(
                mockDataRepo.Object,
                mockScopeBL.Object,
                mockFileRepo.Object,
                _mockDraftFileBL.Object,
                null);

            mockService.CallBase = true;

            // Override GetReportingStartDate and return expectedYear
            mockService.Setup(ss => ss.GetSnapshotDate(It.IsAny <SectorTypes>(), It.IsAny <int>()))
            .Returns(new DateTime(currentSnapshotYear, 4, 5));

            // Sanity checks
            Expect(currentSnapshotYear == testSnapshotYear, "SanityCheck: curReportingYear should equal the testReportingStartYear");

            // Assert
            SubmissionPresenter testService = mockService.Object;

            Expect(testService.IsCurrentSnapshotYear(SectorTypes.Private, testSnapshotYear));
        }
        public void ReturnsFalseWhenNotCurrentYear(SectorTypes testSector, int testYear)
        {
            // Arrange
            DateTime testSnapshotDate            = mockSharedBusinessLogic.GetAccountingStartDate(testSector);
            var      expectCalledGetSnapshotDate = false;

            // Mocks
            var mockService = new Mock <SubmissionPresenter>(
                mockDataRepo.Object,
                mockScopeBL.Object,
                mockFileRepo.Object,
                mockDraftFileBL.Object,
                null);

            mockService.CallBase = true;

            // Override GetPreviousReportingStartDate and return expectedYear
            mockService.Setup(ss => ss.GetSnapshotDate(It.IsIn(testSector), It.IsAny <int>()))
            .Returns(
                () => {
                expectCalledGetSnapshotDate = true;
                return(testSnapshotDate);
            });

            // Assert
            SubmissionPresenter testService = mockService.Object;
            bool actual = testService.IsCurrentSnapshotYear(testSector, testYear);

            Assert.IsTrue(expectCalledGetSnapshotDate, "Expected to call GetSnapshotDate");
            Assert.IsFalse(actual, "Expected IsCurrentSnapshotYear to return true");
        }
Beispiel #5
0
        public async Task GetSubmissionForSnapshotYear_Returns_null_when_year_does_not_exist()
        {
            // Mocks
            mockDataRepo.Setup(dr => dr.GetAll <Return>())
            .Returns(
                new[] {
                new Return {
                    ReturnId = 1, OrganisationId = 2, AccountingDate = new DateTime(1999, 1, 1)
                },
                new Return {
                    ReturnId = 2, OrganisationId = 1, AccountingDate = new DateTime(1999, 1, 2)
                },
                new Return {
                    ReturnId = 3, OrganisationId = 1, AccountingDate = new DateTime(2000, 1, 3)
                },
                new Return {
                    ReturnId = 4, OrganisationId = 1, AccountingDate = new DateTime(2000, 1, 4)
                },
                new Return {
                    ReturnId = 5, OrganisationId = 2, AccountingDate = new DateTime(2000, 1, 5)
                }
            }.AsQueryable()
                .BuildMock()
                .Object);

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Assert
            Return actualReturn = await testPresenter.GetReturnFromDatabaseAsync(1, 1998);

            Expect(actualReturn == null);
        }
Beispiel #6
0
        public void GetSubmissionChangeSummary_Detects_when_the_website_url_has_changed()
        {
            var testOldReturn = new Return {
                CompanyLinkToGPGInfo = "", Organisation = new Organisation {
                    SectorType = SectorTypes.Private
                }
            };

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            // Mocks
            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Copy the original
            var testNewReturn = (Return)testOldReturn.CopyProperties(new Return());

            // Make the change
            testNewReturn.CompanyLinkToGPGInfo = "http://unittesting";

            // Assert
            SubmissionChangeSummary testChangeSummary = testPresenter.GetSubmissionChangeSummary(testNewReturn, testOldReturn);
            string failMessage = $"Assert: Failed to detect {nameof(testNewReturn.CompanyLinkToGPGInfo)} had changed";

            Expect(testChangeSummary.HasChanged, failMessage);
            Expect(testChangeSummary.FiguresChanged == false, failMessage);
            Expect(testChangeSummary.OrganisationSizeChanged == false, failMessage);
            Expect(testChangeSummary.PersonResonsibleChanged == false, failMessage);
            Expect(testChangeSummary.WebsiteUrlChanged, failMessage);
        }
        public void ReturnsTrueForCurrentYear(SectorTypes testSector)
        {
            // Arrange
            DateTime testSnapshotDate = mockSharedBusinessLogic.GetAccountingStartDate(testSector);
            int      testYear         = testSnapshotDate.Year;

            // Mocks
            var testSubmissionService = new SubmissionService(mockSharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Assert
            bool actual = testPresenter.IsCurrentSnapshotYear(testSector, testYear);

            Assert.IsTrue(actual, "Expected IsCurrentSnapshotYear to return true");
        }
Beispiel #8
0
        public void GetSubmissionChangeSummary_Detects_no_changes()
        {
            var testOldReturn = new Return {
                DiffMeanBonusPercent        = 100,
                DiffMeanHourlyPayPercent    = 99,
                DiffMedianBonusPercent      = 98,
                DiffMedianHourlyPercent     = 97,
                FemaleLowerPayBand          = 96,
                FemaleMedianBonusPayPercent = 95,
                FemaleMiddlePayBand         = 94,
                FemaleUpperPayBand          = 93,
                FemaleUpperQuartilePayBand  = 92,
                MaleLowerPayBand            = 91,
                MaleMedianBonusPayPercent   = 90,
                MaleUpperQuartilePayBand    = 89,
                MaleMiddlePayBand           = 88,
                MaleUpperPayBand            = 87,
                FirstName            = "Test",
                LastName             = "User",
                JobTitle             = "QA",
                CompanyLinkToGPGInfo = "http://unittesting",
                MinEmployees         = 250,
                MaxEmployees         = 499,
                Organisation         = new Organisation {
                    SectorType = SectorTypes.Private
                }
            };

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            // Mocks
            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Copy the original
            var testNewReturn = (Return)testOldReturn.CopyProperties(new Return());

            // Assert
            SubmissionChangeSummary testChangeSummary = testPresenter.GetSubmissionChangeSummary(testNewReturn, testOldReturn);
            string failMessage = $"Assert: Failed to detect {nameof(testNewReturn.CompanyLinkToGPGInfo)} had changed";

            Expect(testChangeSummary.HasChanged == false, failMessage);
            Expect(testChangeSummary.FiguresChanged == false, failMessage);
            Expect(testChangeSummary.OrganisationSizeChanged == false, failMessage);
            Expect(testChangeSummary.PersonResonsibleChanged == false, failMessage);
            Expect(testChangeSummary.WebsiteUrlChanged == false, failMessage);
        }
Beispiel #9
0
        public void ShouldUpdateLatestReturn_When_LatestReturn_is_null_returns_true()
        {
            // Setup
            var testOrg = new Organisation {
                LatestReturn = null
            };
            var testSnapshotYear = 2000;

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Assert
            bool actual = testPresenter.ShouldUpdateLatestReturn(testOrg, testSnapshotYear);

            Expect(actual);
        }
Beispiel #10
0
        GetViewModelForSubmission_Given_a_new_submission_Then_returns_empty_model_with_org_id_and_reporting_date_onlyAsync()
        {
            var testUserId = 123;
            int testYear   = VirtualDateTime.Now.AddYears(-1).Year;

            // Mocks
            var testOrganisation = new Organisation {
                OrganisationId = 524124, SectorType = SectorTypes.Private
            };

            mockDataRepo.Setup(dr => dr.GetAll <UserOrganisation>())
            .Returns(
                new[] {
                new UserOrganisation {
                    UserId = testUserId, OrganisationId = testOrganisation.OrganisationId, Organisation = testOrganisation
                }
            }.AsQueryable()
                .BuildMock()
                .Object);

            mockDataRepo.Setup(dr => dr.GetAll <Return>())
            .Returns(new Return[] { }.AsQueryable().BuildMock().Object);

            var   testDraftFileFileBusinessLogic = new DraftFileBusinessLogic(null, new SystemFileRepository(new StorageOptions()));
            Draft actualDraftFile = await testDraftFileFileBusinessLogic.GetExistingOrNewAsync(
                testOrganisation.OrganisationId,
                testYear,
                testUserId);

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), testDraftFileFileBusinessLogic);
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Test
            ReturnViewModel actualModel = await testPresenter.GetReturnViewModelAsync(testOrganisation.OrganisationId, testYear, testUserId);

            // Assert
            Assert.NotNull(actualModel);
            Assert.AreEqual(testOrganisation.OrganisationId, actualModel.OrganisationId);
            Assert.AreEqual(testYear, actualModel.AccountingDate.Year);

            await testDraftFileFileBusinessLogic.DiscardDraftAsync(actualDraftFile);
        }
Beispiel #11
0
        public void ShouldUpdateLatestReturn_when_LatestReturnYear_greaterthan_ReportingStartYear_returns_false()
        {
            // Setup
            var testOrg = new Organisation {
                LatestReturn = new Return {
                    AccountingDate = new DateTime(2018, 4, 5)
                }
            };
            var testSnapshotYear = 2017;

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Assert
            bool actual = testPresenter.ShouldUpdateLatestReturn(testOrg, testSnapshotYear);

            Expect(actual == false);
        }
Beispiel #12
0
        public void GetViewModelForSubmission_Throws_AuthenticationException_when_the_user_organisation_isnt_found()
        {
            var testUserId         = 123;
            var testOrganisationId = 524124;

            // Mocks
            mockDataRepo.Setup(dr => dr.GetAll <UserOrganisation>()).Returns(new UserOrganisation[] { }.AsQueryable().BuildMock().Object);

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);
            // Test
            var ex = Assert.ThrowsAsync <AuthenticationException>(
                () => testPresenter.GetReturnViewModelAsync(testOrganisationId, 2001, testUserId));

            // Assert
            Assert.That(
                ex.Message.Contains(
                    $"GetViewModelForSubmission: Failed to find the UserOrganisation for userId {testUserId} and organisationId {testOrganisationId}"));
        }
Beispiel #13
0
        public async Task GetSubmissionForSnapshotYear_Returns_latest_submission_for_specified_org_and_yearAsync()
        {
            // Mocks
            var returns = new[] {
                new Return {
                    ReturnId = 1, OrganisationId = 2, AccountingDate = new DateTime(1999, 1, 1), Status = ReturnStatuses.Submitted
                },
                new Return {
                    ReturnId = 2, OrganisationId = 1, AccountingDate = new DateTime(1999, 1, 2), Status = ReturnStatuses.Submitted
                },
                new Return {
                    ReturnId = 3, OrganisationId = 1, AccountingDate = new DateTime(2000, 1, 3), Status = ReturnStatuses.Submitted
                },
                new Return {
                    ReturnId = 4, OrganisationId = 1, AccountingDate = new DateTime(2000, 1, 4), Status = ReturnStatuses.Submitted
                },
                new Return {
                    ReturnId = 5, OrganisationId = 2, AccountingDate = new DateTime(2000, 1, 5), Status = ReturnStatuses.Submitted
                }
            };

            mockDataRepo.SetupGetAll((ICollection <Return>)returns);

            var mockService = new Mock <SubmissionPresenter>(
                mockDataRepo.Object,
                mockScopeBL.Object,
                mockFileRepo.Object,
                _mockDraftFileBL.Object,
                null);

            mockService.CallBase = true;
            mockService.Setup(s => s.IsValidSnapshotYear(It.IsAny <int>())).Returns(true);

            // Assert
            SubmissionPresenter testService = mockService.Object;
            Return actualReturn             = await testService.GetReturnFromDatabaseAsync(1, 2000);

            Expect(actualReturn != null);
            Expect(actualReturn.ReturnId == 4);
        }
Beispiel #14
0
        public void GetSubmissionChangeSummary_Detects_when_the_person_responsible_has_changed()
        {
            var testOldReturn = new Return {
                FirstName = "Test", LastName = "User", JobTitle = "QA", Organisation = new Organisation {
                    SectorType = SectorTypes.Private
                }
            };

            string[] personProps = { nameof(testOldReturn.FirstName), nameof(testOldReturn.LastName), nameof(testOldReturn.JobTitle) };

            var changeValue = "Mr T";

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            // Mocks
            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Assert all figures
            foreach (string personPropName in personProps)
            {
                // Restore the original
                var testNewReturn = (Return)testOldReturn.CopyProperties(new Return());

                // Make the change
                testNewReturn.SetProperty(personPropName, changeValue);

                // Assert
                SubmissionChangeSummary testChangeSummary = testPresenter.GetSubmissionChangeSummary(testNewReturn, testOldReturn);
                string failMessage = $"Assert: Failed to detect {personPropName} had changed";
                Expect(testChangeSummary.HasChanged, failMessage);
                Expect(testChangeSummary.FiguresChanged == false, failMessage);
                Expect(testChangeSummary.OrganisationSizeChanged == false, failMessage);
                Expect(testChangeSummary.PersonResonsibleChanged, failMessage);
                Expect(testChangeSummary.WebsiteUrlChanged == false, failMessage);
            }
        }
Beispiel #15
0
        public async Task GetViewModelForSubmission_Given_an_existing_submission_Then_returns_return_dataAsync()
        {
            var testUserId         = 123;
            var testOrganisationId = 524124;
            var testYear           = 2001;

            var testReturn = new Return {
                AccountingDate              = new DateTime(testYear, 1, 1),
                OrganisationId              = testOrganisationId,
                DiffMeanBonusPercent        = 100,
                DiffMeanHourlyPayPercent    = 99,
                DiffMedianBonusPercent      = 98,
                DiffMedianHourlyPercent     = 97,
                FemaleLowerPayBand          = 96,
                FemaleMedianBonusPayPercent = 95,
                FemaleMiddlePayBand         = 94,
                FemaleUpperPayBand          = 93,
                FemaleUpperQuartilePayBand  = 92,
                MaleLowerPayBand            = 91,
                MaleMedianBonusPayPercent   = 90,
                MaleUpperQuartilePayBand    = 89,
                MaleMiddlePayBand           = 88,
                MaleUpperPayBand            = 87,
                FirstName            = "Test",
                LastName             = "User",
                JobTitle             = "QA",
                CompanyLinkToGPGInfo = "http://unittesting",
                MinEmployees         = 250,
                MaxEmployees         = 499,
                Status       = ReturnStatuses.Submitted,
                Organisation = new Organisation {
                    SectorType = SectorTypes.Private
                }
            };

            // Mocks
            mockDataRepo.Setup(dr => dr.GetAll <UserOrganisation>())
            .Returns(
                new[] {
                new UserOrganisation {
                    UserId = testUserId, OrganisationId = testOrganisationId, Organisation = testReturn.Organisation
                }
            }.AsQueryable()
                .BuildMock()
                .Object);

            mockDataRepo.Setup(dr => dr.GetAll <Return>()).Returns(new[] { testReturn }.AsQueryable().BuildMock().Object);

            var mockService = new Mock <SubmissionPresenter>(
                mockDataRepo.Object,
                mockScopeBL.Object,
                mockFileRepo.Object,
                _mockDraftFileBL.Object,
                null);

            mockService.CallBase = true;
            mockService.Setup(s => s.IsValidSnapshotYear(It.IsIn(testYear))).Returns(true);

            // Test
            SubmissionPresenter testService = mockService.Object;
            ReturnViewModel     actualModel = await testService.GetReturnViewModelAsync(testOrganisationId, testYear, testUserId);

            // Assert
            Expect(actualModel != null);
            Expect(actualModel.OrganisationId == testOrganisationId);
            Expect(actualModel.AccountingDate.Year == testYear);

            var testOrgSizeRange = actualModel.OrganisationSize.GetAttribute <RangeAttribute>();

            Expect(testReturn.CompanyLinkToGPGInfo == actualModel.CompanyLinkToGPGInfo);
            Expect(testReturn.DiffMeanBonusPercent == actualModel.DiffMeanBonusPercent.Value);
            Expect(testReturn.DiffMeanHourlyPayPercent == actualModel.DiffMeanHourlyPayPercent.Value);
            Expect(testReturn.DiffMedianBonusPercent == actualModel.DiffMedianBonusPercent.Value);
            Expect(testReturn.DiffMedianHourlyPercent == actualModel.DiffMedianHourlyPercent.Value);
            Expect(testReturn.FemaleLowerPayBand == actualModel.FemaleLowerPayBand.Value);
            Expect(testReturn.FemaleMedianBonusPayPercent == actualModel.FemaleMedianBonusPayPercent.Value);
            Expect(testReturn.FemaleMiddlePayBand == actualModel.FemaleMiddlePayBand.Value);
            Expect(testReturn.FemaleUpperPayBand == actualModel.FemaleUpperPayBand.Value);
            Expect(testReturn.FemaleUpperQuartilePayBand == actualModel.FemaleUpperQuartilePayBand.Value);
            Expect(testReturn.FirstName == actualModel.FirstName);
            Expect(testReturn.LastName == actualModel.LastName);
            Expect(testReturn.JobTitle == actualModel.JobTitle);
            Expect(testReturn.MaleLowerPayBand == actualModel.MaleLowerPayBand.Value);
            Expect(testReturn.MaleMedianBonusPayPercent == actualModel.MaleMedianBonusPayPercent.Value);
            Expect(testReturn.MaleUpperQuartilePayBand == actualModel.MaleUpperQuartilePayBand.Value);
            Expect(testReturn.MaleMiddlePayBand == actualModel.MaleMiddlePayBand.Value);
            Expect(testReturn.MaleUpperPayBand == actualModel.MaleUpperPayBand.Value);
            Expect(testReturn.MinEmployees == (int)testOrgSizeRange.Minimum);
            Expect(testReturn.MaxEmployees == (int)testOrgSizeRange.Maximum);
        }
        public async Task SubmitController_DraftComplete_POST_MaleBonusIsZero_ShowsErrors()
        {
            // Arrange
            var user = new User {
                UserId = 1, EmailAddress = "*****@*****.**", EmailVerifiedDate = VirtualDateTime.Now
            };
            var organisation = new Core.Entities.Organisation {
                OrganisationId = 1, SectorType = SectorTypes.Public
            };
            var userOrganisation = new UserOrganisation {
                OrganisationId   = organisation.OrganisationId,
                Organisation     = organisation,
                UserId           = 1,
                PINConfirmedDate = VirtualDateTime.Now,
                PIN = "1"
            };

            //set mock routeData
            var routeData = new RouteData();

            routeData.Values.Add("action", "EnterCalculations");
            routeData.Values.Add("controller", "submit");

            DateTime PrivateAccountingDate = SectorTypeHelper.SnapshotDateHelper.PrivateAccountingDate;

            var returnViewModel = new ReturnViewModel {
                AccountingDate              = PrivateAccountingDate,
                MaleMedianBonusPayPercent   = 0,
                FemaleMedianBonusPayPercent = 50,
                DiffMeanBonusPercent        = -50,
                DiffMedianBonusPercent      = -50,
                DiffMedianHourlyPercent     = 50,
                DiffMeanHourlyPayPercent    = 50,
                FemaleLowerPayBand          = 50,
                FemaleMiddlePayBand         = 50,
                FemaleUpperPayBand          = 50,
                FemaleUpperQuartilePayBand  = 50,
                MaleLowerPayBand            = 50,
                MaleMiddlePayBand           = 50,
                MaleUpperPayBand            = 50,
                MaleUpperQuartilePayBand    = 50,
                SectorType = SectorTypes.Private
            };

            var controller = UiTestHelper.GetController <SubmissionController>(1, routeData, user, organisation, userOrganisation);

            controller.Bind(returnViewModel);

            var sharedBusinessLogic   = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();
            var testDraftFileBL       = new DraftFileBusinessLogic(null, new SystemFileRepository(new StorageOptions()));
            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), testDraftFileBL);
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);


            returnViewModel.ReportInfo.Draft = await testPresenter.GetDraftFileAsync(
                organisation.OrganisationId,
                organisation.SectorType.GetAccountingStartDate().Year,
                user.UserId);

            // Act
            controller.StashModel(returnViewModel);
            controller.ReportingOrganisationId = 1;
            var result = await controller.SaveDraftAsync(returnViewModel) as ViewResult;

            // Assert
            Assert.NotNull(result, "Expected ViewResult");
            Assert.Null(result.ViewName, "Incorrect view returned");
            Assert.NotNull(result.Model as ReturnViewModel, "Expected ReturnViewModel");
            Assert.AreEqual(
                "Do not enter a bonus difference if 0% of your male employees received a bonus",
                result.ViewData.ModelState["DiffMedianBonusPercent"].Errors[0].ErrorMessage);
            Assert.AreEqual(
                "Do not enter a bonus difference if 0% of your male employees received a bonus",
                result.ViewData.ModelState["DiffMeanBonusPercent"].Errors[0].ErrorMessage);
        }
Beispiel #17
0
        public void CreateDraftSubmissionFromViewModel_Converts_View_Model_to_Return()
        {
            Organisation mockedOrganisation = OrganisationHelper.GetPublicOrganisation();
            var          testModel          = new ReturnViewModel {
                AccountingDate              = new DateTime(1999, 4, 5),
                CompanyLinkToGPGInfo        = "https://CompanyLinkToGPGInfo",
                DiffMeanBonusPercent        = 100,
                DiffMeanHourlyPayPercent    = 99,
                DiffMedianBonusPercent      = 98,
                DiffMedianHourlyPercent     = 97,
                FemaleLowerPayBand          = 96,
                FemaleMedianBonusPayPercent = 95,
                FemaleMiddlePayBand         = 94,
                FemaleUpperPayBand          = 93,
                FemaleUpperQuartilePayBand  = 92,
                FirstName                 = "Test",
                LastName                  = "User",
                JobTitle                  = "QA",
                MaleLowerPayBand          = 91,
                MaleMedianBonusPayPercent = 90,
                MaleUpperQuartilePayBand  = 89,
                MaleMiddlePayBand         = 88,
                MaleUpperPayBand          = 87,
                OrganisationId            = mockedOrganisation.OrganisationId,
                OrganisationSize          = OrganisationSizes.Employees250To499,
                LateReason                = "A LateReason"
            };

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            // Mocks
            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            mockDataRepo.Setup(x => x.Get <Organisation>(It.IsAny <long>())).Returns(mockedOrganisation);

            // Assert
            Return testReturn = testPresenter.CreateDraftSubmissionFromViewModel(testModel);

            var testOrgSizeRange = testModel.OrganisationSize.GetAttribute <RangeAttribute>();

            Expect(testReturn.AccountingDate == testModel.AccountingDate);
            Expect(testReturn.CompanyLinkToGPGInfo == testModel.CompanyLinkToGPGInfo);
            Expect(testReturn.DiffMeanBonusPercent == testModel.DiffMeanBonusPercent.Value);
            Expect(testReturn.DiffMeanHourlyPayPercent == testModel.DiffMeanHourlyPayPercent.Value);
            Expect(testReturn.DiffMedianBonusPercent == testModel.DiffMedianBonusPercent.Value);
            Expect(testReturn.DiffMedianHourlyPercent == testModel.DiffMedianHourlyPercent.Value);
            Expect(testReturn.FemaleLowerPayBand == testModel.FemaleLowerPayBand.Value);
            Expect(testReturn.FemaleMedianBonusPayPercent == testModel.FemaleMedianBonusPayPercent.Value);
            Expect(testReturn.FemaleMiddlePayBand == testModel.FemaleMiddlePayBand.Value);
            Expect(testReturn.FemaleUpperPayBand == testModel.FemaleUpperPayBand.Value);
            Expect(testReturn.FemaleUpperQuartilePayBand == testModel.FemaleUpperQuartilePayBand.Value);
            Expect(testReturn.FirstName == testModel.FirstName);
            Expect(testReturn.LastName == testModel.LastName);
            Expect(testReturn.JobTitle == testModel.JobTitle);
            Expect(testReturn.MaleLowerPayBand == testModel.MaleLowerPayBand.Value);
            Expect(testReturn.MaleMedianBonusPayPercent == testModel.MaleMedianBonusPayPercent.Value);
            Expect(testReturn.MaleUpperQuartilePayBand == testModel.MaleUpperQuartilePayBand.Value);
            Expect(testReturn.MaleMiddlePayBand == testModel.MaleMiddlePayBand.Value);
            Expect(testReturn.MaleUpperPayBand == testModel.MaleUpperPayBand.Value);
            Expect(testReturn.Status == ReturnStatuses.Draft);
            Expect(testReturn.OrganisationId == testModel.OrganisationId);
            Expect(testReturn.MinEmployees == (int)testOrgSizeRange.Minimum);
            Expect(testReturn.MaxEmployees == (int)testOrgSizeRange.Maximum);
            Expect(testReturn.LateReason == testModel.LateReason);
        }
Beispiel #18
0
        public void GetSubmissionChangeSummary_Detects_when_the_figures_have_changed()
        {
            var testOldReturn = new Return {
                DiffMeanBonusPercent        = 100,
                DiffMeanHourlyPayPercent    = 99,
                DiffMedianBonusPercent      = 98,
                DiffMedianHourlyPercent     = 97,
                FemaleLowerPayBand          = 96,
                FemaleMedianBonusPayPercent = 95,
                FemaleMiddlePayBand         = 94,
                FemaleUpperPayBand          = 93,
                FemaleUpperQuartilePayBand  = 92,
                MaleLowerPayBand            = 91,
                MaleMedianBonusPayPercent   = 90,
                MaleUpperQuartilePayBand    = 89,
                MaleMiddlePayBand           = 88,
                MaleUpperPayBand            = 87,
                Organisation = new Organisation {
                    SectorType = SectorTypes.Private
                }
            };

            string[] figureProps =
            {
                nameof(testOldReturn.DiffMeanBonusPercent),
                nameof(testOldReturn.DiffMeanHourlyPayPercent),
                nameof(testOldReturn.DiffMedianBonusPercent),
                nameof(testOldReturn.DiffMedianHourlyPercent),
                nameof(testOldReturn.FemaleLowerPayBand),
                nameof(testOldReturn.FemaleMedianBonusPayPercent),
                nameof(testOldReturn.FemaleMiddlePayBand),
                nameof(testOldReturn.FemaleUpperPayBand),
                nameof(testOldReturn.FemaleUpperQuartilePayBand),
                nameof(testOldReturn.MaleLowerPayBand),
                nameof(testOldReturn.MaleMedianBonusPayPercent),
                nameof(testOldReturn.MaleUpperQuartilePayBand),
                nameof(testOldReturn.MaleMiddlePayBand),
                nameof(testOldReturn.MaleUpperPayBand)
            };

            decimal changeValue = 0;

            var sharedBusinessLogic = UiTestHelper.DIContainer.Resolve <ISharedBusinessLogic>();

            // Mocks
            var testSubmissionService = new SubmissionService(sharedBusinessLogic, Mock.Of <ISubmissionBusinessLogic>(), Mock.Of <IScopeBusinessLogic>(), Mock.Of <IDraftFileBusinessLogic>());
            var testPresenter         = new SubmissionPresenter(testSubmissionService, ConfigHelpers.SubmissionOptions, null);

            // Assert all figures
            foreach (string figurePropName in figureProps)
            {
                // Restore the original
                var testNewReturn = (Return)testOldReturn.CopyProperties(new Return());

                // Make the change
                testNewReturn.SetProperty(figurePropName, changeValue);

                // Assert
                SubmissionChangeSummary testChangeSummary = testPresenter.GetSubmissionChangeSummary(testNewReturn, testOldReturn);
                string failMessage = $"Assert: Failed to detect {figurePropName} had changed";
                Expect(testChangeSummary.HasChanged, failMessage);
                Expect(testChangeSummary.FiguresChanged, failMessage);
                Expect(testChangeSummary.OrganisationSizeChanged == false, failMessage);
                Expect(testChangeSummary.PersonResonsibleChanged == false, failMessage);
                Expect(testChangeSummary.WebsiteUrlChanged == false, failMessage);
            }
        }