public async void ReturnsIActionResult()
        {
            DbContextOptions <LibraryDbContext> options =
                new DbContextOptionsBuilder <LibraryDbContext>()
                .UseInMemoryDatabase("AuthorCreateTestDb")
                .Options;

            using (LibraryDbContext context = new LibraryDbContext(options))
            {
                //Arrange
                Author author = new Author();
                author.Name  = "Miss Kitty";
                author.Genre = Genre.Fantasy;

                //Act
                AuthorController ac = new AuthorController(context);

                var x = ac.Create(author);

                var results = context.Authors.Where(a => a.Name == "Miss Kitty");

                //Assert
                Assert.IsAssignableFrom <IActionResult>(x);
            }
        }
Exemple #2
0
        private void AddAuthor(object sender, EventArgs e)
        {
            var authorName    = authName.Text;
            var authorSurName = authSurName.Text;

            AuthorController.Create(authorName, authorSurName);
        }
Exemple #3
0
        public void Create_PostCallWithInvalidDataReturnsViewResultWithBadStatus()
        {
            var controller = new AuthorController(null, null, null);

            //Problem#1 This controller action uses Response object from HttpContext
            //Unless we supply that it won't
            //Now System provides me a predefined  Mock Object for HttpContext
            var httpContext = new DefaultHttpContext();

            //controoler.HttpContext is readonly
            //controller.HttpContext = httpContext;

            //It is part of ControllerContext
            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = httpContext;


            //Calling Create directly will not run validation and will not
            //Create ModelState Object. This is done by the Mvc Validation Framework
            //And we are not running validation framework
            //I am not testing validation framework
            //My goal is to see, if there is Validation Error,
            //what will be my controllers reaction

            //So we add our own validation error
            controller.ModelState.AddModelError("Name", "Required");

            var result = controller.Create(new Author()
            {
            });

            Assert.IsType <ViewResult>(result);

            Assert.Equal(400, controller.Response.StatusCode);
        }
        public void CreateView_NotNull()
        {
            var mock = new Mock <IAuthorLogic>();

            mock.Setup(a => a.Add(new Author()));
            AuthorController controller = new AuthorController(mock.Object);
            ViewResult       result     = controller.Create() as ViewResult;

            Assert.IsNotNull(result);
        }
        public void CreatePostAction_ModelError()
        {
            var mock = new Mock <IAuthorLogic>();
            CreateAuthorViewModel author     = new CreateAuthorViewModel();
            AuthorController      controller = new AuthorController(mock.Object);

            controller.ModelState.AddModelError("Name", "Model have no name");
            ViewResult result = controller.Create(author) as ViewResult;

            Assert.IsNotNull(result);
        }
Exemple #6
0
        public void Create()
        {
            // Arrange
            AuthorController controller = new AuthorController();

            // Act
            ViewResult result = controller.Create() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
        public void Create_GET_ReturnsCorrectView()
        {
            //Arrange
            IRepository mockRepo = Substitute.For <IRepository>();

            //Act
            AuthorController target = new AuthorController(mockRepo);
            ActionResult     result = target.Create();

            //Assert
            Assert.IsInstanceOf <ViewResult>(result);
        }
        public void Create_ShouldInsertItem()
        {
            string insertedFirstName = "TestedInsertFirstName";
            string insertedLastName  = "TestedInsertLastName";

            var insertedAuthor = new AuthorItem
            {
                FirstName = insertedFirstName,
                LastName  = insertedLastName
            };
            var result = (AuthorItem)(_controller.Create(insertedAuthor) as ObjectResult).Value;

            Assert.Equal(insertedFirstName, result.FirstName);
            Assert.Equal(insertedLastName, result.LastName);
        }
        public void Create_POST_InvalidModel_ReturnsCorrectView()
        {
            //Arrange
            IRepository mockRepo = Substitute.For <IRepository>();

            mockRepo.Authors.Returns(_authors);

            //Act
            Author           invalidModel = new Author();
            AuthorController target       = new AuthorController(mockRepo);
            ActionResult     result       = target.Create(invalidModel);

            //Assert
            Assert.IsInstanceOf <ViewResult>(result);
            Author model = (result as ViewResult).Model as Author;

            Assert.AreEqual(invalidModel, model);
        }
        public void Create_POST_ValidModel_ReturnsCorrectView()
        {
            //Arrange
            IRepository mockRepo   = Substitute.For <IRepository>();
            Author      validModel = new Author {
                FirstName = "FirstName", LastName = "LastName"
            };

            mockRepo.Authors.Returns(_authors);

            //Act
            AuthorController target = new AuthorController(mockRepo);
            ActionResult     result = target.Create(validModel);

            //Assert
            mockRepo.Received(1).AddAuthor(Arg.Any <Author>());
            mockRepo.Received(1).SaveChanges();
            Assert.IsInstanceOf <RedirectToActionResult>(result);
            Assert.AreEqual("Index", (result as RedirectToActionResult).ActionName);
        }
Exemple #11
0
        public void Create_GetCallReturnsAViewResultForEmptyAuthorObject()
        {
            //passing a fake value
            //it will do nothing. just to meet semtanic requirement
            //useful if the objects are not used inside
            var controller = new AuthorController(null, null, null);

            var result = controller.Create();

            Assert.IsType <ViewResult>(result);

            var vr = result as ViewResult;

            //done by Controller by looking it HttpContext and other elements
            //Assert.Equal("Create", vr.ViewName);

            Assert.IsType <Author>(vr.Model);

            var author = vr.Model as Author;

            Assert.Null(author.Id);
            Assert.Null(author.Name);
        }