public async Task GetOrAddAatfDeliveryLocation_NoMatchingApprovalNumber_ReturnsNewAatfDeliveryLocation()
        {
            // Arrange
            var dbContextHelper = new DbContextHelper();
            var context = A.Fake<WeeeContext>();

            var aatfDeliveryLocationDb = new AatfDeliveryLocation("xxx", "BBB");
            var aatfDeliveryLocations = dbContextHelper.GetAsyncEnabledDbSet(new List<AatfDeliveryLocation> { aatfDeliveryLocationDb });
            A.CallTo(() => context.AatfDeliveryLocations)
                .Returns(aatfDeliveryLocations);

            var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy<Scheme>(), A.Dummy<Quarter>(), context);

            // Act
            var result = await dataAccess.GetOrAddAatfDeliveryLocation("AAA", "BBB");

            // Assert
            Assert.NotNull(result);
            Assert.NotSame(aatfDeliveryLocationDb, result);
            Assert.Equal("AAA", result.ApprovalNumber);
            Assert.Equal("BBB", result.FacilityName);
            Assert.Contains(result, dataAccess.CachedAatfDeliveryLocations.Values);
            A.CallTo(() => aatfDeliveryLocations.Add(result))
                .MustHaveHappened();
        }
        public async Task FetchDataReturnOrDefault_ReturnsDataReturnForSpecifiedYearOnly()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper helper = new ModelHelper(database.Model);
                DomainHelper domainHelper = new DomainHelper(database.WeeeContext);

                var scheme = helper.CreateScheme();
                helper.CreateDataReturnVersion(scheme, 2016, 1, true);

                var dataReturnVersion = helper.CreateDataReturnVersion(scheme, 2017, 1, true);

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2017, QuarterType.Q1), database.WeeeContext);

                // Act
                var result = await dataAccess.FetchDataReturnOrDefault();

                // Assert
                Assert.Equal(2017, result.Quarter.Year);
                Assert.Equal(dataReturnVersion.DataReturn.Id, result.Id);
            }
        }
        public async Task GetOrAddAatfDeliveryLocation_NoMatchingApprovalNumber_ReturnsNewAatfDeliveryLocation()
        {
            // Arrange
            var dbContextHelper = new DbContextHelper();
            var context         = A.Fake <WeeeContext>();

            var aatfDeliveryLocationDb = new AatfDeliveryLocation("xxx", "BBB");
            var aatfDeliveryLocations  = dbContextHelper.GetAsyncEnabledDbSet(new List <AatfDeliveryLocation> {
                aatfDeliveryLocationDb
            });

            A.CallTo(() => context.AatfDeliveryLocations)
            .Returns(aatfDeliveryLocations);

            var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy <Scheme>(), A.Dummy <Quarter>(), context);

            // Act
            var result = await dataAccess.GetOrAddAatfDeliveryLocation("AAA", "BBB");

            // Assert
            Assert.NotNull(result);
            Assert.NotSame(aatfDeliveryLocationDb, result);
            Assert.Equal("AAA", result.ApprovalNumber);
            Assert.Equal("BBB", result.FacilityName);
            Assert.Contains(result, dataAccess.CachedAatfDeliveryLocations.Values);
            A.CallTo(() => aatfDeliveryLocations.Add(result))
            .MustHaveHappened();
        }
Пример #4
0
        public async Task GetRegisteredProducer_ReturnsProducerForMatchingRegistrationNumberOnly()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper  helper       = new ModelHelper(database.Model);
                DomainHelper domainHelper = new DomainHelper(database.WeeeContext);

                var scheme = helper.CreateScheme();

                var memberUpload1 = helper.CreateMemberUpload(scheme);
                memberUpload1.ComplianceYear = 2016;
                memberUpload1.IsSubmitted    = true;
                helper.CreateProducerAsCompany(memberUpload1, "AAAA");

                var producer      = helper.GetOrCreateRegisteredProducer(scheme, 2016, "BBBB");
                var memberUpload2 = helper.CreateMemberUpload(scheme);
                memberUpload2.ComplianceYear = 2016;
                memberUpload2.IsSubmitted    = true;
                helper.CreateProducerAsCompany(memberUpload2, "BBBB");

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2016, QuarterType.Q1), database.WeeeContext);

                // Act
                var result = await dataAccess.GetRegisteredProducer("BBBB");

                // Assert
                Assert.Equal("BBBB", result.ProducerRegistrationNumber);
                Assert.Equal(producer.Id, result.Id);
            }
        }
        public async Task GetOrAddAeDeliveryLocation_IgnoresCaseOfApprovalNumberAndOperatorName()
        {
            // Arrange
            var dbContextHelper = new DbContextHelper();
            var context         = A.Fake <WeeeContext>();

            var aeDeliveryLocations = dbContextHelper.GetAsyncEnabledDbSet(new List <AeDeliveryLocation>());

            A.CallTo(() => context.AeDeliveryLocations)
            .Returns(aeDeliveryLocations);

            var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy <Scheme>(), A.Dummy <Quarter>(), context);

            // Act
            var result1 = await dataAccess.GetOrAddAeDeliveryLocation("AAA", "BBB");

            var result2 = await dataAccess.GetOrAddAeDeliveryLocation("aaa", "BBB");

            var result3 = await dataAccess.GetOrAddAeDeliveryLocation("AAA", "bbb");

            var result4 = await dataAccess.GetOrAddAeDeliveryLocation("aaa", "bbb");

            // Assert
            Assert.Contains(result1, dataAccess.CachedAeDeliveryLocations.Values);
            Assert.Same(result1, result2);
            Assert.Same(result1, result3);
            Assert.Same(result1, result4);
            A.CallTo(() => aeDeliveryLocations.Add(A <AeDeliveryLocation> ._))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
Пример #6
0
        public async Task FetchDataReturnOrDefault_ReturnsDataReturnForSpecifiedQuarterOnly()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper  helper       = new ModelHelper(database.Model);
                DomainHelper domainHelper = new DomainHelper(database.WeeeContext);

                var scheme = helper.CreateScheme();
                helper.CreateDataReturnVersion(scheme, 2016, 1, true);

                var dataReturnVersion = helper.CreateDataReturnVersion(scheme, 2016, 2, true);

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2016, QuarterType.Q2), database.WeeeContext);

                // Act
                var result = await dataAccess.FetchDataReturnOrDefault();

                // Assert
                Assert.Equal(QuarterType.Q2, result.Quarter.Q);
                Assert.Equal(dataReturnVersion.DataReturn.Id, result.Id);
            }
        }
        public async Task GetOrAddAatfDeliveryLocation_PopulatesCacheWithDatabaseValues(string approvalNumber, string facilityName)
        {
            // Arrange
            var dbContextHelper = new DbContextHelper();
            var context = A.Fake<WeeeContext>();

            var aatfDeliveryLocationDb = new AatfDeliveryLocation(approvalNumber, facilityName);
            var aatfDeliveryLocations = dbContextHelper.GetAsyncEnabledDbSet(new List<AatfDeliveryLocation> { aatfDeliveryLocationDb });
            A.CallTo(() => context.AatfDeliveryLocations)
                .Returns(aatfDeliveryLocations);

            var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy<Scheme>(), A.Dummy<Quarter>(), context);

            // Act
            await dataAccess.GetOrAddAatfDeliveryLocation(approvalNumber, facilityName);

            // Assert
            Assert.Equal(1, dataAccess.CachedAatfDeliveryLocations.Count);
            Assert.Contains(aatfDeliveryLocationDb, dataAccess.CachedAatfDeliveryLocations.Values);
        }
        public async Task GetOrAddAatfDeliveryLocation_WithMatchingApprovalNumberAndFacilityName_DoesNotAddToCacheAndDatabase(string approvalNumber, string facilityName)
        {
            // Arrange
            var dbContextHelper = new DbContextHelper();
            var context = A.Fake<WeeeContext>();

            var aatfDeliveryLocationDb = new AatfDeliveryLocation(approvalNumber, facilityName);
            var aatfDeliveryLocations = dbContextHelper.GetAsyncEnabledDbSet(new List<AatfDeliveryLocation> { aatfDeliveryLocationDb });
            A.CallTo(() => context.AatfDeliveryLocations)
                .Returns(aatfDeliveryLocations);

            var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy<Scheme>(), A.Dummy<Quarter>(), context);

            // Act
            var result = await dataAccess.GetOrAddAatfDeliveryLocation(approvalNumber, facilityName);

            // Assert
            Assert.Equal(1, dataAccess.CachedAatfDeliveryLocations.Count);
            A.CallTo(() => aatfDeliveryLocations.Add(result))
                .MustNotHaveHappened();
        }
Пример #9
0
        public async Task GetRegisteredProducer_ReturnsSubmittedProducerOnly()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper  helper       = new ModelHelper(database.Model);
                DomainHelper domainHelper = new DomainHelper(database.WeeeContext);

                var scheme = helper.CreateScheme();
                helper.GetOrCreateRegisteredProducer(scheme, 2016, "BBBB");

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2016, QuarterType.Q1), database.WeeeContext);

                // Act
                var result = await dataAccess.GetRegisteredProducer("BBBB");

                // Assert
                Assert.Null(result);
            }
        }
        public async Task GetOrAddAatfDeliveryLocation_PopulatesCacheWithDatabaseValues(string approvalNumber, string facilityName)
        {
            // Arrange
            var dbContextHelper = new DbContextHelper();
            var context         = A.Fake <WeeeContext>();

            var aatfDeliveryLocationDb = new AatfDeliveryLocation(approvalNumber, facilityName);
            var aatfDeliveryLocations  = dbContextHelper.GetAsyncEnabledDbSet(new List <AatfDeliveryLocation> {
                aatfDeliveryLocationDb
            });

            A.CallTo(() => context.AatfDeliveryLocations)
            .Returns(aatfDeliveryLocations);

            var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy <Scheme>(), A.Dummy <Quarter>(), context);

            // Act
            await dataAccess.GetOrAddAatfDeliveryLocation(approvalNumber, facilityName);

            // Assert
            Assert.Equal(1, dataAccess.CachedAatfDeliveryLocations.Count);
            Assert.Contains(aatfDeliveryLocationDb, dataAccess.CachedAatfDeliveryLocations.Values);
        }
Пример #11
0
        public async Task GetOrAddAeDeliveryLocation_ReturnsAeDeliveryLocation_ForMatchingOperatorName()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper helper = new ModelHelper(database.Model);

                helper.CreateAeDeliveryLocation("APR", "Operator Name1");
                var location = helper.CreateAeDeliveryLocation("APR", "Operator Name2");

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy <Domain.Scheme.Scheme>(), A.Dummy <Quarter>(), database.WeeeContext);

                // Act
                var result = await dataAccess.GetOrAddAeDeliveryLocation("APR", "Operator Name2");

                // Assert
                Assert.NotNull(result);
                Assert.Equal("Operator Name2", result.OperatorName);
                Assert.Equal(location.Id, result.Id);
            }
        }
        public async Task FetchDataReturnOrDefault_ResultIncludesUnsubmittedDataReturn()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper helper = new ModelHelper(database.Model);
                DomainHelper domainHelper = new DomainHelper(database.WeeeContext);

                var scheme = helper.CreateScheme();
                var dataReturn = helper.CreateDataReturn(scheme, 2016, 1);

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2016, QuarterType.Q1), database.WeeeContext);

                // Act
                var result = await dataAccess.FetchDataReturnOrDefault();

                // Assert
                Assert.NotNull(result);
                Assert.Equal(dataReturn.Id, result.Id);
                Assert.Null(dataReturn.CurrentDataReturnVersion);
            }
        }
        public async Task GetOrAddAatfDeliveryLocation_WithMatchingApprovalNumberAndFacilityName_DoesNotAddToCacheAndDatabase(string approvalNumber, string facilityName)
        {
            // Arrange
            var dbContextHelper = new DbContextHelper();
            var context         = A.Fake <WeeeContext>();

            var aatfDeliveryLocationDb = new AatfDeliveryLocation(approvalNumber, facilityName);
            var aatfDeliveryLocations  = dbContextHelper.GetAsyncEnabledDbSet(new List <AatfDeliveryLocation> {
                aatfDeliveryLocationDb
            });

            A.CallTo(() => context.AatfDeliveryLocations)
            .Returns(aatfDeliveryLocations);

            var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy <Scheme>(), A.Dummy <Quarter>(), context);

            // Act
            var result = await dataAccess.GetOrAddAatfDeliveryLocation(approvalNumber, facilityName);

            // Assert
            Assert.Equal(1, dataAccess.CachedAatfDeliveryLocations.Count);
            A.CallTo(() => aatfDeliveryLocations.Add(result))
            .MustNotHaveHappened();
        }
Пример #14
0
        public async Task FetchDataReturnOrDefault_ResultIncludesUnsubmittedDataReturn()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper  helper       = new ModelHelper(database.Model);
                DomainHelper domainHelper = new DomainHelper(database.WeeeContext);

                var scheme     = helper.CreateScheme();
                var dataReturn = helper.CreateDataReturn(scheme, 2016, 1);

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2016, QuarterType.Q1), database.WeeeContext);

                // Act
                var result = await dataAccess.FetchDataReturnOrDefault();

                // Assert
                Assert.NotNull(result);
                Assert.Equal(dataReturn.Id, result.Id);
                Assert.Null(dataReturn.CurrentDataReturnVersion);
            }
        }
        public async Task GetOrAddAeDeliveryLocation_IgnoresCaseOfApprovalNumberAndOperatorName()
        {
            // Arrange
            var dbContextHelper = new DbContextHelper();
            var context = A.Fake<WeeeContext>();

            var aeDeliveryLocations = dbContextHelper.GetAsyncEnabledDbSet(new List<AeDeliveryLocation>());
            A.CallTo(() => context.AeDeliveryLocations)
                .Returns(aeDeliveryLocations);

            var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy<Scheme>(), A.Dummy<Quarter>(), context);

            // Act
            var result1 = await dataAccess.GetOrAddAeDeliveryLocation("AAA", "BBB");
            var result2 = await dataAccess.GetOrAddAeDeliveryLocation("aaa", "BBB");
            var result3 = await dataAccess.GetOrAddAeDeliveryLocation("AAA", "bbb");
            var result4 = await dataAccess.GetOrAddAeDeliveryLocation("aaa", "bbb");

            // Assert
            Assert.Contains(result1, dataAccess.CachedAeDeliveryLocations.Values);
            Assert.Same(result1, result2);
            Assert.Same(result1, result3);
            Assert.Same(result1, result4);
            A.CallTo(() => aeDeliveryLocations.Add(A<AeDeliveryLocation>._))
                .MustHaveHappened(Repeated.Exactly.Once);
        }
        public async Task GetRegisteredProducer_ReturnsSubmittedProducerOnly()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper helper = new ModelHelper(database.Model);
                DomainHelper domainHelper = new DomainHelper(database.WeeeContext);

                var scheme = helper.CreateScheme();
                helper.GetOrCreateRegisteredProducer(scheme, 2016, "BBBB");

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2016, QuarterType.Q1), database.WeeeContext);

                // Act
                var result = await dataAccess.GetRegisteredProducer("BBBB");

                // Assert
                Assert.Null(result);
            }
        }
        public async Task GetOrAddAeDeliveryLocation_ReturnsAeDeliveryLocation_ForMatchingOperatorName()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper helper = new ModelHelper(database.Model);

                helper.CreateAeDeliveryLocation("APR", "Operator Name1");
                var location = helper.CreateAeDeliveryLocation("APR", "Operator Name2");

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(A.Dummy<Domain.Scheme.Scheme>(), A.Dummy<Quarter>(), database.WeeeContext);

                // Act
                var result = await dataAccess.GetOrAddAeDeliveryLocation("APR", "Operator Name2");

                // Assert
                Assert.NotNull(result);
                Assert.Equal("Operator Name2", result.OperatorName);
                Assert.Equal(location.Id, result.Id);
            }
        }
        public async Task GetRegisteredProducer_ReturnsProducerForMatchingRegistrationNumberOnly()
        {
            using (DatabaseWrapper database = new DatabaseWrapper())
            {
                // Arrange
                ModelHelper helper = new ModelHelper(database.Model);
                DomainHelper domainHelper = new DomainHelper(database.WeeeContext);

                var scheme = helper.CreateScheme();

                var memberUpload1 = helper.CreateMemberUpload(scheme);
                memberUpload1.ComplianceYear = 2016;
                memberUpload1.IsSubmitted = true;
                helper.CreateProducerAsCompany(memberUpload1, "AAAA");

                var producer = helper.GetOrCreateRegisteredProducer(scheme, 2016, "BBBB");
                var memberUpload2 = helper.CreateMemberUpload(scheme);
                memberUpload2.ComplianceYear = 2016;
                memberUpload2.IsSubmitted = true;
                helper.CreateProducerAsCompany(memberUpload2, "BBBB");

                database.Model.SaveChanges();

                var dataAccess = new DataReturnVersionBuilderDataAccess(domainHelper.GetScheme(scheme.Id), new Quarter(2016, QuarterType.Q1), database.WeeeContext);

                // Act
                var result = await dataAccess.GetRegisteredProducer("BBBB");

                // Assert
                Assert.Equal("BBBB", result.ProducerRegistrationNumber);
                Assert.Equal(producer.Id, result.Id);
            }
        }