public void ShouldNot_ReturnNullInSenderAndEmptyCollectionInReceiverFields_WhenCallingConvertMethodWhenSenderAndReceiverIsNotExistInRepository()
        {
            //arrange
            var receiver = new MailAddress("*****@*****.**");
            var mailMessage = new DomainModel.Input.MailMessage
                                  {
                                      Body = "",
                                      Subject="",
                                      Date = new DateTime(2000,1,1),
                                      Receivers = new List<MailAddress>{receiver},
                                      Sender = new MailAddress("*****@*****.**")
                                  };

            //act;
            var result = converter.Convert(mailMessage);

            //assert
            Assert.IsNotNull(result.Sender);
            CollectionAssert.IsNotEmpty(result.Receivers);
        }
        public void Should_CallSaveMethodOfRepositoryObjectForClientAndEmployee_WhenCallingConvertWithUnknownYetMailAddressesOfClientAndEmployee()
        {
            //arrange
            var receiver = new MailAddress("*****@*****.**", "Employee 1");
            var mailMessage = new DomainModel.Input.MailMessage
            {
                Body = "Body",
                Date = new DateTime(2012, 1, 1),
                Subject = "Subject",
                Sender = new MailAddress("*****@*****.**", "Client 1"),
                Receivers = new List<MailAddress> { receiver }
            };

            var addingClient = new Person
            {
                CreationDate = mailMessage.Date,
                FirstName = "Client",
                LastName = "1",
                Email = "*****@*****.**"
            };

            var addingEmployee = new Person
            {
                CreationDate = mailMessage.Date,
                FirstName = "Employee",
                LastName = "1",
                Email = "*****@*****.**"
            };

            //act
            var result=converter.Convert(mailMessage);

            //assert
            mock.Verify(x =>x.Save(addingClient), Times.Once());
            mock.Verify(x=>x.Save(addingEmployee), Times.Once());
        }
        public void Should_ReturnMailMessageWithRightData_WhenCallingConvertMethod()
        {
            //arrange
            var receiver1 = new MailAddress("*****@*****.**", "Employee Petrov");
            var receiver2 = new MailAddress("*****@*****.**", "Employee Kozlov");

            var mailMessage = new DomainModel.Input.MailMessage
            {
                Body = "This is Body",
                Date = new DateTime(2012, 1, 1),
                Subject = "This is Subject",
                Sender = new MailAddress("*****@*****.**", "Client Ivanov"),
                Receivers=new List<MailAddress> {receiver1,receiver2}
            };

            var expectedPerson = new Person
            {
                Id = 1,
                Role = (int)PersonRole.Client,
                CreationDate = new DateTime(2000, 1, 1),
                FirstName = "Client",
                LastName = "Ivanov",
                Email = "*****@*****.**",
            };

            var expectedReceiver1 = new Person
            {
                Id = 2,
                Role = (int)PersonRole.Employee,
                CreationDate = new DateTime(2000, 1, 1),
                FirstName = "Employee",
                LastName = "Petrov",
                Email = "*****@*****.**"
            };

            var expectedReceiver2 = new Person
            {
                Id = 3,
                Role = (int) PersonRole.Employee,
                CreationDate = new DateTime(2000, 1, 1),
                FirstName = "Employee",
                LastName = "Kozlov",
                Email = "*****@*****.**"
            };

            mock.Setup(it => it.Query<Person>()).Returns(new List<Person> { expectedPerson, expectedReceiver1, expectedReceiver2 }.AsQueryable());

            //act
            var result=converter.Convert(mailMessage);

            //assert
            Assert.AreEqual("This is Body", result.Body);
            Assert.AreEqual("This is Subject", result.Subject);
            Assert.AreEqual(new DateTime(2012, 1, 1), result.Date);
            Assert.AreEqual(expectedPerson, result.Sender);
            CollectionAssert.Contains(result.Receivers, expectedReceiver1);
            CollectionAssert.Contains(result.Receivers, expectedReceiver2);
            Assert.AreEqual(2,result.Receivers.Count);
        }