public void GenerateEmail_WhenPassedValidModel_IncludesPhoneNumberFromModelInEmail()
        {
            var razorEngine = new RazorLightEngineBuilder()
                              .UseEmbeddedResourcesProject(typeof(Program))
                              .UseMemoryCachingProvider()
                              .Build();

            var fixture      = new Fixture();
            var mailSettings = fixture
                               .Build <BencoEmailMessageSettings>()
                               .Create();
            var mockMailSettingsOptions = new Mock <IOptions <BencoEmailMessageSettings> >();

            mockMailSettingsOptions.Setup(m => m.Value).Returns(mailSettings);

            var sut = new ContactUsEmailGenerator(razorEngine, mockMailSettingsOptions.Object);

            var model = fixture.Build <ContactUsModel>()
                        .With(m => m.PhoneNumber, "234-567-8901")
                        .Create();

            var result = sut.GenerateEmail(model);

            Assert.Contains("234-567-8901", result.Body);
        }
        public void CanCreateContactUsEmailGenerator()
        {
            var razorEngine = new Mock <IRazorLightEngine>().Object;

            var fixture      = new Fixture();
            var mailSettings = fixture
                               .Build <BencoEmailMessageSettings>()
                               .Create();
            var mockMailSettingsOptions = new Mock <IOptions <BencoEmailMessageSettings> >();

            mockMailSettingsOptions.Setup(m => m.Value).Returns(mailSettings);

            // ReSharper disable once UnusedVariable
            var sut = new ContactUsEmailGenerator(razorEngine, mockMailSettingsOptions.Object);
        }
        public void CanGenerateEmailFromModel_WhenPassedModelThatIsOfTypeContactUsModel_ReturnsTrue()
        {
            var razorEngine  = new Mock <IRazorLightEngine>().Object;
            var fixture      = new Fixture();
            var mailSettings = fixture
                               .Build <BencoEmailMessageSettings>()
                               .Create();
            var mockMailSettingsOptions = new Mock <IOptions <BencoEmailMessageSettings> >();

            mockMailSettingsOptions.Setup(m => m.Value).Returns(mailSettings);

            var sut = new ContactUsEmailGenerator(razorEngine, mockMailSettingsOptions.Object);

            var model = fixture.Build <ContactUsModel>()
                        .With(m => m.PhoneNumber, RandomDataGenerator.RandomPhoneNumber)
                        .Create();

            Assert.True(sut.CanGenerateEmailFromModel(model));
        }
        public void GenerateEmail_WhenPassedModelThatIsNotOfTypeContactUsModel_ThrowsArgumentException()
        {
            var razorEngine  = new Mock <IRazorLightEngine>().Object;
            var fixture      = new Fixture();
            var mailSettings = fixture
                               .Build <BencoEmailMessageSettings>()
                               .Create();
            var mockMailSettingsOptions = new Mock <IOptions <BencoEmailMessageSettings> >();

            mockMailSettingsOptions.Setup(m => m.Value).Returns(mailSettings);

            var sut = new ContactUsEmailGenerator(razorEngine, mockMailSettingsOptions.Object);

            var model = fixture.Build <BuyPracticeModel>()
                        .With(m => m.ContactPhoneNumber, RandomDataGenerator.RandomPhoneNumber)
                        .Create();

            var exception = Assert.Throws <ArgumentException>(() => sut.GenerateEmail(model));

            Assert.Equal("model", exception.ParamName);
        }
        public void GenerateEmail_WhenPassedValidModel_SetsFromAddressToContactEmailInModel()
        {
            var razorEngine  = new Mock <IRazorLightEngine>().Object;
            var fixture      = new Fixture();
            var mailSettings = fixture
                               .Build <BencoEmailMessageSettings>()
                               .Create();
            var mockMailSettingsOptions = new Mock <IOptions <BencoEmailMessageSettings> >();

            mockMailSettingsOptions.Setup(m => m.Value).Returns(mailSettings);

            var sut = new ContactUsEmailGenerator(razorEngine, mockMailSettingsOptions.Object);

            var model = fixture.Build <ContactUsModel>()
                        .With(m => m.PhoneNumber, RandomDataGenerator.RandomPhoneNumber)
                        .With(m => m.EmailAddress, "*****@*****.**")
                        .Create();

            var result = sut.GenerateEmail(model);

            Assert.Equal("*****@*****.**", result.From);
        }