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 Validate_WhenCalled_AssertShouldNotBeNullWasCalledOnObjectValidatorForName()
        {
            INameCommand    nameCommand = CreateNameCommandMock().Object;
            IContactCommand sut         = CreateSut(nameCommand: nameCommand);

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

            _validatorMockContext.ObjectValidatorMock.Verify(m => m.ShouldNotBeNull(
                                                                 It.Is <INameCommand>(value => value == nameCommand),
                                                                 It.Is <Type>(value => value == sut.GetType()),
                                                                 It.Is <string>(value => string.CompareOrdinal(value, "Name") == 0)),
                                                             Times.Once);
        }
 private IContactDataCommand CreateSut(bool hasNameCommand = true, INameCommand nameCommand = null, bool hasAddressCommand = true, IAddressCommand addressCommand = null, string homePhone = null, string mobilePhone = null, bool hasBirthday = true, DateTime?birthday = null, string mailAddress = null, bool hasCompanyCommand = true, ICompanyCommand companyCommand = null, int?contactGroupIdentifier = null, string acquaintance = null, string personalHomePage = null, int?lendingLimit = null, int?paymentTermIdentifier = null)
 {
     return(_fixture.Build <Sut>()
            .With(m => m.Name, hasNameCommand ? nameCommand ?? CreateNameCommandMock().Object : null)
            .With(m => m.Address, hasAddressCommand ? addressCommand ?? CreateAddressCommandMock().Object : null)
            .With(m => m.HomePhone, homePhone ?? _fixture.Create <string>())
            .With(m => m.MobilePhone, mobilePhone ?? _fixture.Create <string>())
            .With(m => m.Birthday, hasBirthday ? birthday ?? _fixture.Create <DateTime>() : (DateTime?)null)
            .With(m => m.MailAddress, mailAddress ?? _fixture.Create <string>())
            .With(m => m.Company, hasCompanyCommand ? companyCommand ?? CreateCompanyCommandMock().Object : null)
            .With(m => m.ContactGroupIdentifier, contactGroupIdentifier ?? _fixture.Create <int>())
            .With(m => m.Acquaintance, acquaintance ?? _fixture.Create <string>())
            .With(m => m.PersonalHomePage, personalHomePage ?? _fixture.Create <string>())
            .With(m => m.LendingLimit, lendingLimit ?? _fixture.Create <int>())
            .With(m => m.PaymentTermIdentifier, paymentTermIdentifier ?? _fixture.Create <int>())
            .Create());
 }
        private IContactDataCommand CreateSut(INameCommand nameCommand = null, bool hasAddressCommand = true, IAddressCommand addressCommand = null, bool hasHomePhone = true, string homePhone = null, bool hasMobilePhone = true, string mobilePhone = null, bool hasBirthday = true, DateTime?birthday = null, bool hasMailAddress = true, string mailAddress = null, bool hasCompanyCommand = true, ICompanyCommand companyCommand = null, int?contactGroupIdentifier = null, IContactGroup contactGroup = null, int?paymentTermIdentifier = null, bool hasAcquaintance = true, string acquaintance = null, bool hasPersonalHomePage = true, string personalHomePage = null, int?lendingLimit = null, IPaymentTerm paymentTerm = null)
        {
            _contactRepositoryMock.Setup(m => m.GetContactGroupAsync(It.IsAny <int>()))
            .Returns(Task.Run(() => contactGroup ?? _fixture.BuildContactGroupMock().Object));
            _accountingRepositoryMock.Setup(m => m.GetPaymentTermAsync(It.IsAny <int>()))
            .Returns(Task.Run(() => paymentTerm ?? _fixture.BuildPaymentTermMock().Object));

            return(_fixture.Build <Sut>()
                   .With(m => m.Name, nameCommand ?? CreateNameCommandMock().Object)
                   .With(m => m.Address, hasAddressCommand ? addressCommand ?? CreateAddressCommandMock().Object : null)
                   .With(m => m.HomePhone, hasHomePhone ? homePhone ?? _fixture.Create <string>() : null)
                   .With(m => m.MobilePhone, hasMobilePhone ? mobilePhone ?? _fixture.Create <string>() : null)
                   .With(m => m.Birthday, hasBirthday ? birthday ?? _fixture.Create <DateTime>() : (DateTime?)null)
                   .With(m => m.MailAddress, hasMailAddress ? mailAddress ?? _fixture.Create <string>() : null)
                   .With(m => m.Company, hasCompanyCommand ? companyCommand ?? CreateCompanyCommandMock().Object : null)
                   .With(m => m.ContactGroupIdentifier, contactGroupIdentifier ?? _fixture.Create <int>())
                   .With(m => m.Acquaintance, hasAcquaintance ? acquaintance ?? _fixture.Create <string>() : null)
                   .With(m => m.PersonalHomePage, hasPersonalHomePage ? personalHomePage ?? _fixture.Create <string>() : null)
                   .With(m => m.LendingLimit, lendingLimit ?? _fixture.Create <int>())
                   .With(m => m.PaymentTermIdentifier, paymentTermIdentifier ?? _fixture.Create <int>())
                   .Create());
        }