public void Should_SaveMailMessageToRepository_WhenEmployeeSendMessageToClientWithCarbonCopyToOurSystem()
{
//arrange
aeEmailClient.GetUnreadMessages().Returns(new List<MailMessage>
{
new MailMessage
{
Body = "a",
Date = Clock.Now,
Subject = "s",
Sender = new MailAddress("[email protected]","employee"),
Receivers = new List<MailAddress>{new MailAddress("[email protected]","client")},
}
});
var employee = new Person
{
Email = "[email protected]",
FirstName = "employee",
Role = PersonRole.Employee
};
repository.Query<Person>().ReturnsForAnyArgs(new List<Person>
{
employee,
new Person
{
Email="[email protected]",
FirstName = "client",
Role = PersonRole.Client
}
}.AsQueryable());
repository.Query<User>().ReturnsForAnyArgs(new List<User>{new User
{
RelatedPerson = employee,
CurrentTeam = new Team()
}
}.AsQueryable());
//act
mailMessagePersister.ProcessMessage(aeEmailClient, EventArgs.Empty);
//assert
repository.Received().Save(Arg.Is<Entities.MailMessage>(x => x.Sender.Email == "[email protected]"
&& x.Receivers.Any(receiver => receiver.Email == "[email protected]")
&& x.Receivers.Count == 1));
}