public void ReturnThreeResultsIfNoParameterWasProvided()
        {
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Get().Result;

            Assert.AreEqual(3, result.Count());
        }
        public void ReturnNoResultsIfSearchPhraseIsNull()
        {
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Search(null).Result;

            Assert.AreEqual(0, result.Count());
        }
        public void ReturnNotFoundIfParameterIdWasGivenButNotFound()
        {
            var id = 0;
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Get(id).Result;

            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
        public void ReturnNotFoundIfIdDoesntExist()
        {
            var id = 4;
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Delete(id).Result;

            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
        public void ReturnOneResultIfSearchPhraseIsPrincess()
        {
            var phrase = "Princess";
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Search(phrase).Result;

            Assert.AreEqual(1, result.Count());
        }
        public void OrderResultsAlphabetically()
        {
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Get().Result.ToList();

            Assert.AreEqual("Darth", result.First().FirstName);
            Assert.AreEqual("Leia", result.Skip(1).First().FirstName);
            Assert.AreEqual("Luke", result.Skip(2).First().FirstName);
        }
        public void InvokeSaveChangesOnDbContext()
        {
            var model = new ContactEditModel
            {
                FirstName = "Han",
                LastName = "Solo"
            };
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Post(model).Result;

            _mockDbContext.Verify(x => x.SaveChangesAsync(), Times.Exactly(1));
        }
        public void AddNewContactToTheDbContext()
        {
            var model = new ContactEditModel
            {
                FirstName = "Han",
                LastName = "Solo"
            };
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Post(model).Result;

            _mockDbContext.MockContactsDbSet.Verify(x => x.Add(It.IsAny<Contact>()), Times.Exactly(1));
        }
        public void ReturnNotFoundIfIdDoesntExist()
        {
            var model = new ContactEditModel
            {
                Id = 4,
                FirstName = "Han",
                LastName = "Solo"
            };
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Put(model.Id, model).Result;

            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
        public void ReturnBadRequestIfIdInParameterAndModelDoNotMatch()
        {
            var model = new ContactEditModel
            {
                Id = 3,
                FirstName = "Darth",
                LastName = "Kitty"
            };
            var contactsController = new ContactsController(_mockDbContext.Object);

            var result = contactsController.Put(0, model).Result;

            Assert.IsInstanceOfType(result, typeof(BadRequestResult));
        }