public void ReadById_AddressRecord_ExpectedAddressRecordForProvidedAddressId()
        {
            int addressId = 1;

            DataModel.Address address;
            DataModel.Contact contact = new DataModel.Contact()
            {
                Id        = 1,
                FirstName = "FirstName",
                LastName  = "LastName",
                Type      = new DataModel.ContactType()
                {
                    Id   = 1,
                    Type = "PERSON"
                }
            };

            mockAddressRepository.Setup((item) => item.Read(addressId)).Returns(
                address = new DataModel.Address()
            {
                Id = 1, Street = "Street", Contact = contact
            }
                );

            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );

            var result = addressRepository.Read(addressId);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.FullAddress == GetFullAddress(address));
            Assert.IsTrue(result.ContactId == contact.Id);
        }
        public void ReadByContactId_AddressRecord_ExpectedNoRecordsProvidedContactId()
        {
            DataModel.Contact contact = new DataModel.Contact()
            {
                Id        = 1,
                FirstName = "FirstName",
                LastName  = "LastName",
                Type      = new DataModel.ContactType()
                {
                    Id   = 1,
                    Type = "PERSON"
                }
            };

            mockAddressRepository.Setup((item) => item.ReadByContactId(contact.Id)).Returns(new DataModel.Address[] { });

            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );

            var result = addressRepository.ReadByContactId(contact.Id);

            Assert.IsNotNull(result);
            Assert.IsEmpty(result);
            Assert.IsNull(result.SingleOrDefault((item) => item.Id == 1));
            Assert.IsNull(result.SingleOrDefault((item) => item.Street == "Street1"));
        }
        public void Create_AddressRecord_ExpectedFailedCreationFlag()
        {
            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );

            mockAddressRepository.Setup((item) => item.Create(addressModel)).Returns(false);

            Assert.IsFalse(addressRepository.Create(addressModel));
        }
        public void Update_AddressRecord_ExpectedSuccessfulUpdateFlag()
        {
            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );


            mockAddressRepository.Setup((item) => item.Update(addressModel)).Returns(true);

            Assert.IsTrue(addressRepository.Update(addressModel));
        }
        public void Delete_AddressRecord_ExpectedFailedDeleteFlag()
        {
            int addressId = 1;

            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );

            mockAddressRepository.Setup((item) => item.Delete(addressId)).Returns(false);

            Assert.IsFalse(addressRepository.Delete(addressId));
        }
        public void ReadById_AddressRecord_ExpectedNoRecordsProvidedAddressId()
        {
            int addressId = 1;

            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );

            var result = addressRepository.Read(addressId);

            Assert.IsNull(result);
        }
        public void Get_ReadAll_ExpectedEmptyResult()
        {
            mockAddressRepository.Setup((item) => item.ReadAll()).Returns(new DataModel.Address[] { });

            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );

            var result = addressRepository.ReadAll();

            Assert.IsNotNull(result);
            Assert.IsEmpty(result);
            Assert.IsNull(result.SingleOrDefault((item) => item.Id == 1));
            Assert.IsNull(result.SingleOrDefault((item) => item.Street == "Street1"));
        }
        public void ReadByContactId_AddressRecord_ExpectedAddressRecordForProvidedContactId()
        {
            DataModel.Address address1, address2;
            DataModel.Contact contact = new DataModel.Contact()
            {
                Id        = 1,
                FirstName = "FirstName",
                LastName  = "LastName",
                Type      = new DataModel.ContactType()
                {
                    Id   = 1,
                    Type = "PERSON"
                }
            };

            mockAddressRepository.Setup((item) => item.ReadByContactId(contact.Id)).Returns(new DataModel.Address[] {
                address1 = new DataModel.Address()
                {
                    Id = 1, Street = "Street", Contact = contact
                },
                address2 = new DataModel.Address()
                {
                    Id = 2, Street = "Street1", Contact = contact
                }
            });

            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );

            var result = addressRepository.ReadByContactId(contact.Id);

            Assert.IsNotNull(result);
            Assert.IsNotEmpty(result);
            Assert.IsTrue(result.SingleOrDefault((item) => item.Id == 1).FullAddress == GetFullAddress(address1));
            Assert.IsTrue(result.SingleOrDefault((item) => item.Street == "Street1").ContactId == contact.Id);
        }
        public void ReadAll_AddressRecord_ExpectedAllAdddressList()
        {
            mockAddressRepository.Setup((item) => item.ReadAll()).Returns(new DataModel.Address[] {
                new DataModel.Address()
                {
                    Id = 1, Street = "Street"
                },
                new DataModel.Address()
                {
                    Id = 2, Street = "Street1"
                }
            });

            var addressRepository = new BusinessRepository.AddressRepository(mockLogger.Object,
                                                                             mockAddressRepository.Object
                                                                             );

            var result = addressRepository.ReadAll();

            Assert.IsNotNull(result);
            Assert.IsNotEmpty(result);
            Assert.IsTrue(result.SingleOrDefault((item) => item.Id == 1).Id == 1);
            Assert.IsTrue(result.SingleOrDefault((item) => item.Street == "Street1").Id == 2);
        }