public void ToDomain_WhenCommandDoesNotHaveAcquaintance_ReturnsContactWithoutAcquaintance()
        {
            IContactDataCommand sut = CreateSut(hasAcquaintance: false);

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Acquaintance;

            Assert.That(result, Is.Null);
        }
        public void ToDomain_WhenCommandDoesNotHaveMailAddress_ReturnsContactWithoutMailAddress()
        {
            IContactDataCommand sut = CreateSut(hasMailAddress: false);

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).MailAddress;

            Assert.That(result, Is.Null);
        }
        public void Validate_WhenAccountingRepositoryIsNull_ThrowsArgumentNullException()
        {
            IContactDataCommand sut = CreateSut();

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

            Assert.That(result.ParamName, Is.EqualTo("accountingRepository"));
        }
        public void ToDomain_WhenCommandDoesNotHaveBirthday_ReturnsContactWithoutBirthday()
        {
            IContactDataCommand sut = CreateSut(hasBirthday: false);

            DateTime?result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Birthday;

            Assert.That(result, Is.Null);
        }
        public void ToDomain_WhenCommandDoesNotHaveMobilePhone_ReturnsContactWithoutPrimaryPhone()
        {
            IContactDataCommand sut = CreateSut(hasMobilePhone: false);

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).PrimaryPhone;

            Assert.That(result, Is.Null);
        }
        public void ToDomain_WhenAccountingRepositoryIsNull_ThrowsArgumentNullException()
        {
            IContactDataCommand sut = CreateSut();

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.ToDomain(_contactRepositoryMock.Object, null));

            Assert.That(result.ParamName, Is.EqualTo("accountingRepository"));
        }
        public void ToDomain_WhenCommandDoesNotHaveAddressCommand_ReturnsContactWithEmptyAddress()
        {
            IContactDataCommand sut = CreateSut(hasAddressCommand: false);

            IAddress result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Address;

            Assert.That(result.DisplayAddress, Is.EqualTo(string.Empty));
        }
        public void ToDomain_WhenCalled_ReturnsContactWithoutExternalIdentifier()
        {
            IContactDataCommand sut = CreateSut();

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).ExternalIdentifier;

            Assert.That(result, Is.Null);
        }
        public void ToDomain_WhenCalled_ReturnsContact()
        {
            IContactDataCommand sut = CreateSut();

            IContact result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object);

            Assert.That(result, Is.TypeOf <Contact>());
        }
        public void ToDomain_WhenCommandDoesNotHaveCompanyCommand_ReturnsContactWithoutCompany()
        {
            IContactDataCommand sut = CreateSut(hasCompanyCommand: false);

            ICompany result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Company;

            Assert.That(result, Is.Null);
        }
        public void ToDomain_WhenCommandDoesNotHavePersonalHomePage_ReturnsContactWithoutPersonalHomePage()
        {
            IContactDataCommand sut = CreateSut(hasPersonalHomePage: false);

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).PersonalHomePage;

            Assert.That(result, Is.Null);
        }
        public void ToDomain_WhenCommandHasMailAddress_ReturnsContactWithMailAddressFromCommand()
        {
            string mailAddress      = _fixture.Create <string>();
            IContactDataCommand sut = CreateSut(mailAddress: mailAddress);

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).MailAddress;

            Assert.That(result, Is.EqualTo(mailAddress));
        }
        public void ToDomain_WhenCommandHasBirthday_ReturnsContactWithBirthdayFromCommand()
        {
            DateTime            birthday = _fixture.Create <DateTime>();
            IContactDataCommand sut      = CreateSut(birthday: birthday);

            DateTime?result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Birthday;

            Assert.That(result, Is.EqualTo(birthday.Date));
        }
        public void ToDomain_WhenCommandHasMobilePhone_ReturnsContactWithMobilePhoneFromCommand()
        {
            string mobilePhone      = _fixture.Create <string>();
            IContactDataCommand sut = CreateSut(mobilePhone: mobilePhone);

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).MobilePhone;

            Assert.That(result, Is.EqualTo(mobilePhone));
        }
        public void ToDomain_WhenCommandHasCompanyCommand_AssertToDomainWasCalledOnCompanyCommand()
        {
            Mock <ICompanyCommand> companyCommandMock = CreateCompanyCommandMock();
            IContactDataCommand    sut = CreateSut(companyCommand: companyCommandMock.Object);

            sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object);

            companyCommandMock.Verify(m => m.ToDomain(), Times.Once);
        }
        public void ToDomain_WhenCalled_ReturnsContactWithContactGroupFromContactRepository()
        {
            IContactGroup       contactGroup = _fixture.BuildContactGroupMock().Object;
            IContactDataCommand sut          = CreateSut(contactGroup: contactGroup);

            IContactGroup result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).ContactGroup;

            Assert.That(result, Is.EqualTo(contactGroup));
        }
        public void ToDomain_WhenCalled_AssertGetPaymentTermAsyncWasCalledOnAccountingRepository()
        {
            int paymentTermIdentifier = _fixture.Create <int>();
            IContactDataCommand sut   = CreateSut(paymentTermIdentifier: paymentTermIdentifier);

            sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object);

            _accountingRepositoryMock.Verify(m => m.GetPaymentTermAsync(It.Is <int>(value => value == paymentTermIdentifier)), Times.Once);
        }
        public void ToDomain_WhenCommandHasAddressCommandWhichAreEmpty_ReturnsContactWithEmptyAddress()
        {
            IAddressCommand     addressCommand = CreateAddressCommandMock(true).Object;
            IContactDataCommand sut            = CreateSut(addressCommand: addressCommand);

            IAddress result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Address;

            Assert.That(result.DisplayAddress, Is.EqualTo(string.Empty));
        }
        public void ToDomain_WhenCommandHasAddressCommandWhichAreEmpty_AssertToDomainWasNotCalledOnAddressCommand()
        {
            Mock <IAddressCommand> addressCommandMock = CreateAddressCommandMock(isEmpty: true);
            IContactDataCommand    sut = CreateSut(addressCommand: addressCommandMock.Object);

            sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object);

            addressCommandMock.Verify(m => m.ToDomain(), Times.Never);
        }
        public void ToDomain_WhenCommandHasAddressCommand_AssertIsEmptyWasCalledOnAddressCommand()
        {
            Mock <IAddressCommand> addressCommandMock = CreateAddressCommandMock();
            IContactDataCommand    sut = CreateSut(addressCommand: addressCommandMock.Object);

            sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object);

            addressCommandMock.Verify(m => m.IsEmpty(), Times.Once());
        }
        public void ToDomain_WhenCommandHasNameCommand_AssertToDomainWasCalledOnNameCommand()
        {
            Mock <INameCommand> nameCommandMock = CreateNameCommandMock();
            IContactDataCommand sut             = CreateSut(nameCommand: nameCommandMock.Object);

            sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object);

            nameCommandMock.Verify(m => m.ToDomain(), Times.Once());
        }
        public void ToDomain_WhenCommandDoesNotHaveAddressCommand_AssertToDomainWasNotCalledOnAddressCommand()
        {
            Mock <IAddressCommand> addressCommandMock = CreateAddressCommandMock();
            IContactDataCommand    sut = CreateSut(hasAddressCommand: false, addressCommand: addressCommandMock.Object);

            sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object);

            addressCommandMock.Verify(m => m.ToDomain(), Times.Never);
        }
        public void ToDomain_WhenCommand_ReturnsContactWithLendingLimitFromCommand()
        {
            int lendingLimit        = _fixture.Create <int>();
            IContactDataCommand sut = CreateSut(lendingLimit: lendingLimit);

            int result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).LendingLimit;

            Assert.That(result, Is.EqualTo(lendingLimit));
        }
        public void ToDomain_WhenCalled_ReturnsContactWithPaymentTermFromAccountingRepository()
        {
            IPaymentTerm        paymentTerm = _fixture.BuildPaymentTermMock().Object;
            IContactDataCommand sut         = CreateSut(paymentTerm: paymentTerm);

            IPaymentTerm result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).PaymentTerm;

            Assert.That(result, Is.EqualTo(paymentTerm));
        }
        public void ToDomain_WhenCommandHasPersonalHomePage_ReturnsContactWithPersonalHomePageFromCommand()
        {
            string personalHomePage = _fixture.Create <string>();
            IContactDataCommand sut = CreateSut(personalHomePage: personalHomePage);

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).PersonalHomePage;

            Assert.That(result, Is.EqualTo(personalHomePage));
        }
        public void ToDomain_WhenCommandHasAcquaintance_ReturnsContactWithAcquaintanceFromCommand()
        {
            string acquaintance     = _fixture.Create <string>();
            IContactDataCommand sut = CreateSut(acquaintance: acquaintance);

            string result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Acquaintance;

            Assert.That(result, Is.EqualTo(acquaintance));
        }
        public void ToDomain_WhenCalled_ReturnsContactWithValueFromToDomainOnNameCommand()
        {
            IName               name        = _fixture.BuildNameMock().Object;
            INameCommand        nameCommand = CreateNameCommandMock(name).Object;
            IContactDataCommand sut         = CreateSut(nameCommand);

            IName result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Name;

            Assert.That(result, Is.EqualTo(name));
        }
        public void ToDomain_WhenCommandHasAddressCommandWhichAreNotEmpty_ReturnsContactWithValueFromToDomainOnAddressCommand()
        {
            IAddress            address        = _fixture.BuildAddressMock().Object;
            IAddressCommand     addressCommand = CreateAddressCommandMock(address: address).Object;
            IContactDataCommand sut            = CreateSut(addressCommand: addressCommand);

            IAddress result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Address;

            Assert.That(result, Is.EqualTo(address));
        }
        public void ToDomain_WhenCommandHasCompanyCommand_ReturnsContactWithCompanyFromCommand()
        {
            ICompany            company        = _fixture.BuildCompanyMock().Object;
            ICompanyCommand     companyCommand = CreateCompanyCommandMock(company).Object;
            IContactDataCommand sut            = CreateSut(companyCommand: companyCommand);

            ICompany result = sut.ToDomain(_contactRepositoryMock.Object, _accountingRepositoryMock.Object).Company;

            Assert.That(result, Is.EqualTo(company));
        }
        public void Validate_WhenCalled_AssertShouldBeKnownValueWasCalledOnObjectValidatorForPaymentTermIdentifier()
        {
            int paymentTermIdentifier = _fixture.Create <int>();
            IContactDataCommand sut   = CreateSut(paymentTermIdentifier: paymentTermIdentifier);

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

            _validatorMockContext.ObjectValidatorMock.Verify(m => m.ShouldBeKnownValue(
                                                                 It.Is <int>(value => value == paymentTermIdentifier),
                                                                 It.IsNotNull <Func <int, Task <bool> > >(),
                                                                 It.Is <Type>(type => type == sut.GetType()),
                                                                 It.Is <string>(field => string.CompareOrdinal(field, "PaymentTermIdentifier") == 0),
                                                                 It.Is <bool>(value => value == false)),
                                                             Times.Once());
        }