public void TestErrorViewOnSubscription()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            var context = new HomeMyDayDbContext(optionsBuilder.Options);

            context.Newspapers.Add(new Newspaper()
            {
                Email = "*****@*****.**"
            });

            context.SaveChanges();

            var repository            = new EFNewspaperRepository(context);
            INewspaperManager manager = new NewspaperManager(repository);
            var target             = new NewspaperController(manager);
            var newspaperViewModel = new NewspaperViewModel()
            {
                Email = "*****@*****.**"
            };
            var result = target.Index(newspaperViewModel);

            Assert.NotNull(result);
            Assert.NotNull(newspaperViewModel);
            Assert.Null(result.ViewName);
            Assert.NotNull(result.ViewData);
            Assert.True(result.ViewData.ModelState.ErrorCount > 0);
        }
        public void TestArgumentExceptionNullOnSubscription()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            var context    = new HomeMyDayDbContext(optionsBuilder.Options);
            var repository = new EFNewspaperRepository(context);

            Assert.Throws <ArgumentNullException>(() => repository.Subscribe(null));
        }
        public void TestInsertWhiteSpaceSubscription()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            var    context    = new HomeMyDayDbContext(optionsBuilder.Options);
            var    repository = new EFNewspaperRepository(context);
            string email      = "  [email protected]  ";

            Assert.True(repository.Subscribe(email));
        }
        public void TestArgumentExceptionEmptyStringOnSubscription()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            var context               = new HomeMyDayDbContext(optionsBuilder.Options);
            var repository            = new EFNewspaperRepository(context);
            INewspaperManager manager = new NewspaperManager(repository);
            var target = new NewspaperController(manager);

            Assert.Throws <ArgumentNullException>(() => target.Index(new NewspaperViewModel()
            {
                Email = ""
            }));
        }
        public void TestInsertDuplicateSubscription()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            var context = new HomeMyDayDbContext(optionsBuilder.Options);

            context.Newspapers.Add(new Newspaper()
            {
                Email = "*****@*****.**"
            });

            context.SaveChanges();

            var    repository = new EFNewspaperRepository(context);
            string email      = "*****@*****.**";

            Assert.False(repository.Subscribe(email));
        }
        public void TestResultViewWithWhiteSpaceOnSubscription()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            var context = new HomeMyDayDbContext(optionsBuilder.Options);
            INewspaperRepository repository = new EFNewspaperRepository(context);
            INewspaperManager    manager    = new NewspaperManager(repository);
            var target             = new NewspaperController(manager);
            var newspaperViewModel = new NewspaperViewModel()
            {
                Email = "  [email protected]  "
            };
            var result = target.Index(newspaperViewModel);

            Assert.NotNull(result);
            Assert.NotNull(newspaperViewModel);
            Assert.NotNull(result.ViewName);
            Assert.Equal("Result", result.ViewName);
        }