コード例 #1
0
        public void ThenDataHistoryIsUpdatedWithStagingRecords()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 1, SchemePAYERef = "999/RD11111"
            }).Wait();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 2, SchemePAYERef = "999/RD11112"
            }).Wait();

            HmrcDataTestsRepository.InsertIntoHistory(new DataHistoryRecord {
                Record_ID = 100, SourceFile_ID = 99, SchemePAYERef = "999/RD11112"
            }).Wait();


            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            var loadControl = HmrcDataTestsRepository.GetLoadControl().Result;

            loadControl.Flag_LoadedSuccessfullyintoHistoryTable.Should().BeTrue();
        }
コード例 #2
0
        public void AndValidationHasFlagToStopLoad_ThenValidationFailuresAreLoggedIntoConfigurationDataQualityTestsAndLoadDoesntTakePlace()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                SchemePAYERef = "123456789"
            }).Wait();

            InsertQualityTestRecord(true);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            AssertTestFailLogged("SchemePAYERef", "String length exceeds Specification. Actual: 9 Against spec size: 5");
            AssertLoadHalted();
        }
コード例 #3
0
        public void AndValidationHasFlagToStopLoad_ThenValidationFailuresAreLoggedIntoConfigurationDataQualityTestsAndLoadDoesntTakePlace()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                TaxPeriodMonth = "14"
            }).Wait();

            InsertQualityTestRecord(true);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            AssertTestFailLogged("TaxPeriodMonth", "Numeric column value outside acceptable values. Actual: 14. Range: 1 - 12");
            AssertLoadHalted();
        }
コード例 #4
0
        public void AndValidationHasFlagToStopLoad_ThenValidationFailuresAreLoggedIntoConfigurationDataQualityTestsAndLoadDoesntTakePlace()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                EnglishFraction = "2123312.121212"
            }).Wait();

            InsertQualityTestRecord(stopLoadOnError: true);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            AssertTestFailLogged("EnglishFraction", "Decimal places do not match specification. Actual: 2123312.121212 Expected Decimal Places: 5");
            AssertLoadHalted();
        }
コード例 #5
0
        public void AndValidationHasFlagToStopLoad_ThenValidationFailuresAreLoggedIntoConfigurationDataQualityTestsAndLoadDoesntTakePlace()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                SchemePAYERef = "DG123"
            }).Wait();

            InsertQualityTestRecord(true);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            AssertTestFailLogged("SchemePAYERef", "Column pattern does not match specification. Actual: DG123 Expected Pattern: [0-9][0-9][0-9]/[A-Z]%");
            AssertLoadHalted();
        }
コード例 #6
0
        public void ThenValidationFailuresAreLoggedIntoConfigurationDataQualityTests()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                SchemePAYERef = "123456789"
            }).Wait();

            InsertQualityTestRecord(false);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            AssertTestFailLogged("SchemePAYERef", "String length exceeds Specification. Actual: 9 Against spec size: 5");
            AssertLoadCompleted();
        }
コード例 #7
0
        public void ThenValidationFailuresAreLoggedIntoConfigurationDataQualityTests()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                TaxPeriodMonth = "14"
            }).Wait();

            InsertQualityTestRecord(false);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            AssertTestFailLogged("TaxPeriodMonth", "Numeric column value outside acceptable values. Actual: 14. Range: 1 - 12");
            AssertLoadCompleted();
        }
コード例 #8
0
        public void ThenValidationPassesAreNotLoggedIntoConfigurationDataQualityTests()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                SchemePAYERef = "12345"
            }).Wait();

            InsertQualityTestRecord(false);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            HmrcDataTestsRepository.GetQualityLogs().Result.Count().Should().Be(0, because: "there should be no quality test failures");

            AssertLoadCompleted();
        }
コード例 #9
0
        public void ThenValidationPassesAreNotLoggedIntoConfigurationDataQualityTests_AndLiveTableIsInserted()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                EnglishFraction = "678.34567"
            }).Wait();

            InsertQualityTestRecord(stopLoadOnError: true);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            HmrcDataTestsRepository.GetQualityLogs().Result.Count().Should().Be(0, because: "there should be no quality test failures");

            AssertLoadCompleted();
        }
コード例 #10
0
        public void ThenValidationPassesAreNotLoggedIntoConfigurationDataQualityTests_AndLoadTakesPlace()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                TaxPeriodMonth = "12"
            }).Wait();

            InsertQualityTestRecord(true);

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            HmrcDataTestsRepository.GetQualityLogs().Result.Count().Should().Be(0, because: "there should be no quality test failures");

            AssertLoadCompleted();
        }
コード例 #11
0
        public void ThenDataLiveShouldRemainEmpty()
        {
            HmrcDataTestsRepository.InsertIntoLoadControl(new LoadControlRecord
            {
                SourceFile_Name   = "TestImport.psv",
                SourceFile_Status = "Complete",
                InsertDate        = DateTime.Now
            }).Wait();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord()
            {
                Record_ID = 1, SchemePAYERef = "999/RD11111"
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            HmrcDataTestsRepository.GetDataLiveCount().Result.Should().Be(0);
        }
コード例 #12
0
        public void ThenTheNumberOfRecordsInDataLiveShouldMatchDataStaging()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 1, SchemePAYERef = "999/RD11111"
            }).Wait();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 2, SchemePAYERef = "999/RD11112"
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            HmrcDataTestsRepository.GetDataLiveCount().Result.Should().Be(2);
        }
コード例 #13
0
        public void ThenLoadControl_Flag_Flag_LoadedSuccessfullyintoLiveTable_IsSetToTrue()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 1, SchemePAYERef = "999/RD11111"
            }).Wait();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 2, SchemePAYERef = "999/RD11112"
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            var loadControl = HmrcDataTestsRepository.GetLoadControl().Result;

            loadControl.Flag_LoadedSuccessfullyintoLiveTable.Should().BeTrue();
        }
コード例 #14
0
        public void ThenAMessageShouldBeAddedToProcess_LogTableConfirmingLevyDeclarationSnapshotHasBeenCreated()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 1, SchemePAYERef = "999/RD11111"
            }).Wait();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 2, SchemePAYERef = "999/RD11112"
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            var processLogContents = HmrcDataTestsRepository.GetProcessLogs().Result;

            processLogContents.Any(l => l.ProcessEventName == "Created Levy Snapshot").Should().BeTrue();
        }
コード例 #15
0
        public void ThenLoadControl_SourceFile_Status_IsSetToComplete()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 1, SchemePAYERef = "999/RD11111"
            }).Wait();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 2, SchemePAYERef = "999/RD11112"
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            var loadControl = HmrcDataTestsRepository.GetLoadControl().Result;

            loadControl.SourceFile_Status.Should().Be("Complete");
        }
コード例 #16
0
        public void ThenDataStagingSourceFileIdIsUpdatedFromLoadControl()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 1, SchemePAYERef = "999/RD11111"
            }).Wait();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 2, SchemePAYERef = "999/RD11112"
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            var stagingRecords = HmrcDataTestsRepository.GetStagingRecords().Result;

            stagingRecords.All(r => r.SourceFile_ID == 1).Should().BeTrue();
        }
コード例 #17
0
        public void ThenOnlyNullCessationDatesAreReplacedWith31122999()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 1, SchemePAYERef = "999/RD11111", CessationDate = null
            }).Wait();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 2, SchemePAYERef = "999/RD11112", CessationDate = "20180125"
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            var stagingRecords = HmrcDataTestsRepository.GetStagingRecords().Result;

            stagingRecords.Single(r => r.Record_ID == 1).CessationDate.Should().Be("29991231");
            stagingRecords.Single(r => r.Record_ID == 2).CessationDate.Should().NotBe("29991231");
        }
コード例 #18
0
        public void AndValidationHasFlagToStopLoad_ThenValidationFailuresAreLoggedIntoConfigurationDataQualityTestsAndLoadDoesntTakePlace()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                TaxPeriodMonth = "n"
            }).Wait();

            HmrcDataTestsRepository.InsertIntoDataQualityTests(new DataQualityTestRecord
            {
                ColumnName              = "TaxPeriodMonth",
                ColumnNullable          = true,
                ColumnType              = "INT",
                RunColumnTests          = true,
                StopLoadIfTestIsNumeric = true
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            AssertTestFailLogged("TaxPeriodMonth", "Numeric type field not Numeric. Actual: n");
            AssertLoadHalted();
        }
コード例 #19
0
        public void AndValidationHasFlagToStopLoad_ThenValidationPassesAreNotLoggedIntoConfigurationDataQualityTestsAndLoadTakesPlace()
        {
            InsertPendingLoadControl();

            HmrcDataTestsRepository.InsertIntoStaging(new DataStagingRecord {
                TaxPeriodMonth = "2"
            }).Wait();

            HmrcDataTestsRepository.InsertIntoDataQualityTests(new DataQualityTestRecord
            {
                ColumnName              = "TaxPeriodMonth",
                ColumnNullable          = true,
                ColumnType              = "INT",
                RunColumnTests          = true,
                StopLoadIfTestIsNumeric = true
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            HmrcDataTestsRepository.GetQualityLogs().Result.Count().Should().Be(0, because: "there should be no quality test failures");

            AssertLoadCompleted();
        }
コード例 #20
0
        public void ThenALevyDeclarationSnapshotForTheCurrentDataShouldBeCreated()
        {
            var expectedTableName = $"DAS_LevyDeclarations_Snapshot_{DateTime.Today:yyyyMMdd}";

            HmrcDataTestsRepository.RemoveLevyDeclarationSnapshotTable(expectedTableName).Wait();

            InsertPendingLoadControl();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 1, SchemePAYERef = "999/RD11111"
            }).Wait();

            HmrcDataTestsRepository
            .InsertIntoStaging(new DataStagingRecord {
                Record_ID = 2, SchemePAYERef = "999/RD11112"
            }).Wait();

            HmrcDataTestsRepository.ExecuteLoadData().Wait();

            var tables = HmrcDataTestsRepository.GetLevyDeclarationSnapshotTableNames().Result;

            tables.Any(l => l == expectedTableName).Should().BeTrue();
        }