public async Task Update_Success() { //Arrange var templatesRepository = new Mock<ITemplatesRepository>(); var templatesManager = new TemplatesManager(templatesRepository.Object); var searchingName = "tests template 1"; var searchingLanguage = new CultureInfo("en"); var entities = new List<Template> { new Template { Name = searchingName, Subject = "tests subject 1", HtmlBodyTemplate = "Hi my friend :)", PlainBodyTemplate = "test plain", Priority = EmailMessagePriority.Normal, Tag = "test tag", Language = searchingLanguage.Name, FromAddress = "*****@*****.**", CreatedDateTime = DateTime.UtcNow }, new Template { Name = searchingName, Subject = "tests subject 2", HtmlBodyTemplate = "Hi my friend :)", PlainBodyTemplate = "test plain", Priority = EmailMessagePriority.Normal, Tag = "test tag", Language = "es", FromAddress = "*****@*****.**", CreatedDateTime = DateTime.UtcNow } }; var templatesUpdates = new DefaultTemplate { Name = "test template)", Subject = "test subject", HtmlBodyTemplate = "Hi, it's your email", PlainBodyTemplate = "test plain", Priority = Priority.Low, Tag = "tag 1", Language = new CultureInfo("en"), FromAddress = "*****@*****.**" }; Template actualTemplateUpdates = null; //Expect templatesRepository .Setup(x => x.UpdateAsync(It.IsNotNull<Template>())) .Callback<Template>(template => { actualTemplateUpdates = template; }) .Returns(Task.CompletedTask); templatesRepository .Setup(x => x.GetQuerable()) .Returns(new AsyncEnumerable<Template>(entities)); //Act await templatesManager.Update(searchingName, searchingLanguage, templatesUpdates); //Assert Assert.IsNotNull(actualTemplateUpdates); Assert.AreEqual(searchingName, actualTemplateUpdates.Name); Assert.AreEqual(searchingLanguage.Name, actualTemplateUpdates.Language); Assert.AreEqual(templatesUpdates.Subject, actualTemplateUpdates.Subject); Assert.AreEqual(templatesUpdates.HtmlBodyTemplate, actualTemplateUpdates.HtmlBodyTemplate); Assert.AreEqual(templatesUpdates.PlainBodyTemplate, actualTemplateUpdates.PlainBodyTemplate); Assert.AreEqual(EmailMessagePriority.Low, actualTemplateUpdates.Priority); Assert.AreEqual(templatesUpdates.Tag, actualTemplateUpdates.Tag); Assert.AreEqual(templatesUpdates.FromAddress, actualTemplateUpdates.FromAddress); Assert.AreEqual(entities[0].CreatedDateTime, actualTemplateUpdates.CreatedDateTime); //Verify templatesRepository.VerifyAll(); }