コード例 #1
0
        public void Validate_WhenCalled_ReturnsValidator()
        {
            IGetPostalCodeCollectionQuery sut = CreateSut();

            IValidator result = sut.Validate(_validatorMockContext.ValidatorMock.Object, _contactRepositoryMock.Object);

            Assert.That(result, Is.EqualTo(_validatorMockContext.ValidatorMock.Object));
        }
コード例 #2
0
        public void Validate_WhenContactRepositoryIsNull_ThrowsArgumentNullException()
        {
            IGetPostalCodeCollectionQuery sut = CreateSut();

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.Validate(_validatorMockContext.ValidatorMock.Object, null));

            Assert.That(result.ParamName, Is.EqualTo("contactRepository"));
        }
コード例 #3
0
        public async Task QueryAsync_WhenCalledAndPostalCodeCollectionWasNotReturnedFromContactRepository_AssertApplyLogicForPrincipalWasNotCalledOnCountryHelperForAnyPostalCode()
        {
            QueryHandler sut = CreateSut(false);

            IGetPostalCodeCollectionQuery query = CreateQueryMock().Object;
            await sut.QueryAsync(query);

            _countryHelperMock.Verify(m => m.ApplyLogicForPrincipal(It.IsAny <ICountry>()), Times.Never);
        }
コード例 #4
0
        public async Task QueryAsync_WhenCalled_AssertGetPostalCodesAsyncWasCalledOnContactRepository()
        {
            QueryHandler sut = CreateSut();

            string countryCode = _fixture.Create <string>();
            IGetPostalCodeCollectionQuery query = CreateQueryMock(countryCode).Object;
            await sut.QueryAsync(query);

            _contactRepositoryMock.Verify(m => m.GetPostalCodesAsync(It.Is <string>(value => string.CompareOrdinal(value, countryCode) == 0)), Times.Once);
        }
コード例 #5
0
        public async Task QueryAsync_WhenCalledAndPostalCodeCollectionWasReturnedFromContactRepository_ReturnsPostalCodeCollectionFromContactRepository()
        {
            IEnumerable <IPostalCode> postalCodeCollection = _fixture.CreateMany <IPostalCode>(_random.Next(10, 25)).ToList();
            QueryHandler sut = CreateSut(postalCodeCollection: postalCodeCollection);

            IGetPostalCodeCollectionQuery query  = CreateQueryMock().Object;
            IEnumerable <IPostalCode>     result = await sut.QueryAsync(query);

            Assert.That(result, Is.EqualTo(postalCodeCollection));
        }
コード例 #6
0
        public async Task QueryAsync_WhenCalledAndPostalCodeCollectionWasNotReturnedFromContactRepository_ReturnsEmptyPostalCodeCollection()
        {
            QueryHandler sut = CreateSut(false);

            IGetPostalCodeCollectionQuery query  = CreateQueryMock().Object;
            IList <IPostalCode>           result = (await sut.QueryAsync(query)).ToList();

            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.Empty);
        }
コード例 #7
0
        public async Task QueryAsync_WhenCalledAndPostalCodeCollectionWasReturnedFromContactRepository_AssertApplyLogicForPrincipalWasCalledOnCountryHelperForEachPostalCodeFromContactRepository()
        {
            IEnumerable <IPostalCode> postalCodeCollection = _fixture.CreateMany <IPostalCode>(_random.Next(10, 25)).ToList();
            QueryHandler sut = CreateSut(postalCodeCollection: postalCodeCollection);

            IGetPostalCodeCollectionQuery query = CreateQueryMock().Object;
            await sut.QueryAsync(query);

            foreach (IPostalCode postalCode in postalCodeCollection)
            {
                _countryHelperMock.Verify(m => m.ApplyLogicForPrincipal(It.Is <ICountry>(value => value == postalCode.Country)), Times.Once);
            }
        }
コード例 #8
0
        public void Validate_WhenCalled_AssertShouldBeKnownValueWasCalledOnObjectValidator()
        {
            string countryCode = _fixture.Create <string>();
            IGetPostalCodeCollectionQuery sut = CreateSut(countryCode);

            sut.Validate(_validatorMockContext.ValidatorMock.Object, _contactRepositoryMock.Object);

            _validatorMockContext.ObjectValidatorMock.Verify(m => m.ShouldBeKnownValue(
                                                                 It.Is <string>(value => string.CompareOrdinal(value, countryCode.ToUpper()) == 0),
                                                                 It.IsNotNull <Func <string, Task <bool> > >(),
                                                                 It.Is <Type>(value => sut.GetType() == value),
                                                                 It.Is <string>(value => string.CompareOrdinal(value, "CountryCode") == 0),
                                                                 It.Is <bool>(value => value == false)),
                                                             Times.Once());
        }
コード例 #9
0
        public async Task QueryAsync_WhenCalledAndPostalCodeCollectionWasNotReturnedFromContactRepository_AssertCountrySetterWasNotCalledOnAnyPostalCode()
        {
            IEnumerable <Mock <IPostalCode> > postalCodeMockCollection = new List <Mock <IPostalCode> >
            {
                _fixture.BuildPostalCodeMock(),
                                              _fixture.BuildPostalCodeMock(),
                                              _fixture.BuildPostalCodeMock()
            };
            QueryHandler sut = CreateSut(false, postalCodeMockCollection.Select(m => m.Object).ToList());

            IGetPostalCodeCollectionQuery query = CreateQueryMock().Object;
            await sut.QueryAsync(query);

            foreach (Mock <IPostalCode> postalCodeMock in postalCodeMockCollection)
            {
                postalCodeMock.VerifySet(m => m.Country = It.IsAny <ICountry>(), Times.Never);
            }
        }
コード例 #10
0
        public async Task QueryAsync_WhenCalledAndPostalCodeCollectionWasReturnedFromContactRepository_AssertCountrySetterWasCalledOnEachPostalCodeFromContactRepository()
        {
            IEnumerable <Mock <IPostalCode> > postalCodeMockCollection = new List <Mock <IPostalCode> >
            {
                _fixture.BuildPostalCodeMock(),
                                              _fixture.BuildPostalCodeMock(),
                                              _fixture.BuildPostalCodeMock()
            };
            ICountry     country = _fixture.BuildCountryMock().Object;
            QueryHandler sut     = CreateSut(postalCodeCollection: postalCodeMockCollection.Select(m => m.Object).ToList(), country: country);

            IGetPostalCodeCollectionQuery query = CreateQueryMock().Object;
            await sut.QueryAsync(query);

            foreach (Mock <IPostalCode> postalCodeMock in postalCodeMockCollection)
            {
                postalCodeMock.VerifySet(m => m.Country = It.Is <ICountry>(value => value == country), Times.Once);
            }
        }
        public async Task <IEnumerable <IPostalCode> > QueryAsync(IGetPostalCodeCollectionQuery query)
        {
            NullGuard.NotNull(query, nameof(query));

            query.Validate(_validator, _contactRepository);

            IEnumerable <IPostalCode> postalCodes = await _contactRepository.GetPostalCodesAsync(query.CountryCode);

            if (postalCodes == null)
            {
                return(new List <IPostalCode>(0));
            }

            return(postalCodes.Select(postalCode =>
            {
                postalCode.Country = _countryHelper.ApplyLogicForPrincipal(postalCode.Country);
                return postalCode;
            })
                   .ToList());
        }