Exemplo n.º 1
0
        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();
        }