Esempio n. 1
0
        public void SetUp()
        {
            var fixture = new Fixture();

            _ukprn            = fixture.Create <long>();
            _uln              = fixture.Create <long>();
            _jobId            = fixture.Create <long>();
            _academicYear     = fixture.Create <short>();
            _collectionPeriod = fixture.Create <byte>();

            _datalockEvent = fixture.Create <DatalockEvent>();
            _datalockEvent.PayablePeriods.Clear();
            _datalockEvent.NonPayablePeriods.Clear();
            _datalockEvent.PriceEpisodes.Clear();

            _latestSuccessfulJob                  = fixture.Create <LatestSuccessfulJobModel>();
            _latestSuccessfulJob.Ukprn            = _ukprn;
            _latestSuccessfulJob.AcademicYear     = _academicYear;
            _latestSuccessfulJob.CollectionPeriod = _collectionPeriod;
            _latestSuccessfulJob.DcJobId          = _jobId;

            _datalockEventNonPayablePeriod = fixture.Create <DatalockEventNonPayablePeriod>();
            _datalockEventPayablePeriod    = fixture.Create <DatalockEventPayablePeriod>();
            _datalockEventPriceEpisode     = fixture.Create <DatalockEventPriceEpisode>();

            _context = new PaymentsContext(new DbContextOptionsBuilder <PaymentsContext>()
                                           .UseInMemoryDatabase("TestDb", new InMemoryDatabaseRoot())
                                           .Options);

            _sut = new PaymentsDataLockRepository(_context);
        }
        public async Task WhenLatestSuccessfulJobIsNull_ThenBuildsMetrics()
        {
            LatestSuccessfulJobModel job = null;
            var jobsRepository           = moqer.Mock <ISubmissionJobsRepository>();

            jobsRepository.Setup(x =>
                                 x.GetLatestSuccessfulJobForProvider(It.IsAny <long>(), It.IsAny <short>(), It.IsAny <byte>()))
            .ReturnsAsync(job);

            var service = moqer.Create <SubmissionMetricsService>();
            await service.BuildMetrics(1234, 123, 1920, 1, CancellationToken.None).ConfigureAwait(false);

            moqer.Mock <ISubmissionSummaryFactory>().Verify(x => x.Create(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <short>(), It.IsAny <byte>()), Times.Once);
        }
        public void SetUp()
        {
            inMemoryMetricsQueryDataContext = new InMemoryMetricsQueryDataContext();

            moqer       = AutoMock.GetLoose();
            dcEarnings  = TestsHelper.DefaultDcEarnings;
            dasEarnings = TestsHelper.DefaultDasEarnings;
            dataLocks   = TestsHelper.DefaultDataLockedEarnings;

            var dcMetricsDataContext = moqer.Mock <IDcMetricsDataContext>();

            dcMetricsDataContext.Setup(ctx => ctx.GetEarnings(It.IsAny <long>(), It.IsAny <short>(), It.IsAny <byte>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(dcEarnings);

            moqer.Mock <IDcMetricsDataContextFactory>()
            .Setup(factory => factory.CreateContext(It.IsAny <short>()))
            .Returns(dcMetricsDataContext.Object);

            latestSuccessfulJob                  = moqer.Mock <LatestSuccessfulJobModel>().Object;
            latestSuccessfulJob.Ukprn            = 1234;
            latestSuccessfulJob.CollectionPeriod = 1;
            latestSuccessfulJob.AcademicYear     = 1920;
            latestSuccessfulJob.DcJobId          = 123;

            moqer.Mock <ISubmissionSummaryFactory>()
            .Setup(factory =>
                   factory.Create(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <short>(), It.IsAny <byte>()))
            .Returns((long ukprn, long jobId, short academicYear, byte collectionPeriod) => new SubmissionSummary(ukprn, jobId, collectionPeriod, academicYear));

            var jobsRepository = moqer.Mock <ISubmissionJobsRepository>();

            jobsRepository.Setup(x =>
                                 x.GetLatestSuccessfulJobForProvider(It.IsAny <long>(), It.IsAny <short>(), It.IsAny <byte>()))
            .ReturnsAsync(latestSuccessfulJob);

            moqer.Mock <ISubmissionJobsDataContext>();

            submissionMetricsRepository = moqer.Mock <ISubmissionMetricsRepository>();

            submissionMetricsRepository.Setup(repo => repo.GetDasEarnings(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(dasEarnings);
            submissionMetricsRepository.Setup(repo => repo.GetDasEarnings(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(dasEarnings);
            submissionMetricsRepository.Setup(repo => repo.GetDataLockedEarnings(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(dataLocks);
            submissionMetricsRepository.Setup(repo => repo.GetDataLockedEarningsTotal(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(TestsHelper.DefaultDataLockedTotal);
            submissionMetricsRepository.Setup(repo => repo.GetAlreadyPaidDataLockedEarnings(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(TestsHelper.AlreadyPaidDataLockedEarnings);
            submissionMetricsRepository.Setup(repo => repo.GetHeldBackCompletionPaymentsTotal(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(TestsHelper.DefaultHeldBackCompletionPayments);
            submissionMetricsRepository.Setup(repo => repo.GetYearToDatePaymentsTotal(It.IsAny <long>(), It.IsAny <short>(), It.IsAny <byte>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(TestsHelper.DefaultYearToDateAmounts);


            var queryDataContext = moqer.Mock <IMetricsQueryDataContextFactory>();

            queryDataContext.Setup(f => f.Create())
            .Returns(inMemoryMetricsQueryDataContext);

            var realSubmissionMetricsRepository = moqer.Create <SubmissionMetricsRepository>(
                new NamedParameter("metricsQueryDataContextFactory", queryDataContext.Object),
                new AutowiringParameter());

            submissionMetricsRepository
            .Setup(repo => repo.GetRequiredPayments(It.IsAny <long>(), It.IsAny <long>(), It.IsAny <CancellationToken>()))
            .Returns(async(long ukprn, long jobId, CancellationToken cancellationToken) => await realSubmissionMetricsRepository.GetRequiredPayments(ukprn, jobId, cancellationToken));
        }