public void EditingExistingBug_ShouldChangeOnlySentData_Moq() { var fakeBugs = this.mocks.BugRepositoryMock.Object.All(); var mockContext = new Mock<IBugTrackerData>(); mockContext.Setup(u => u.Bugs).Returns(mocks.BugRepositoryMock.Object); var bugsController = new BugsController(mockContext.Object); SetupController(bugsController); var newTitle = "Changed" + DateTime.Now.Ticks; var model = new EditBugBindingModel() { Title = newTitle }; var unchangedBug = fakeBugs.First(b => b.Id == 1); var oldDescription = unchangedBug.Description; var oldStatus = unchangedBug.Status; var response = bugsController.EditBug(model, 1).ExecuteAsync(CancellationToken.None).Result; var changedBug = fakeBugs.First(b => b.Id == 1); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(oldDescription, changedBug.Description); Assert.AreEqual(oldStatus, changedBug.Status); Assert.AreEqual(newTitle, changedBug.Title); }
public void Modify_Existing_Bug_With_Correct_Data_Should_Return_200OK_And_Modify_Bug_In_Repository() { // Arrange var fakeBugToModify = this.mock.BugRepositoryMock.Object.All().FirstOrDefault(); var newBugData = new EditBugBindingModel { Title = "Modified title", Description = "Modified description", Status = "Closed" }; var mockContext = new Mock<IBugTrackerData>(); mockContext.Setup(c => c.Bugs) .Returns(this.mock.BugRepositoryMock.Object); var bugsController = new BugsController(mockContext.Object); this.SetupController(bugsController); // Act var response = bugsController.EditExistingBug(fakeBugToModify.Id, newBugData) .ExecuteAsync(CancellationToken.None).Result; // Assert var fakeBugAfterEditing = this.mock.BugRepositoryMock.Object.All().LastOrDefault(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); Assert.AreEqual(newBugData.Title, fakeBugAfterEditing.Title); Assert.AreEqual(newBugData.Description, fakeBugAfterEditing.Description); Assert.AreEqual(newBugData.Status, fakeBugAfterEditing.Status.ToString()); }
public void Modify_Existing_Bug_With_InCorrect_Data_Should_Return_400BadRequest_And_Do_Not_Modify_Bug() { // Arrange var fakeBugToModify = this.mock.BugRepositoryMock.Object.All().FirstOrDefault(); var newBugData = new EditBugBindingModel { }; var mockContext = new Mock<IBugTrackerData>(); mockContext.Setup(c => c.Bugs) .Returns(this.mock.BugRepositoryMock.Object); var bugsController = new BugsController(mockContext.Object); this.SetupController(bugsController); bugsController.ModelState.AddModelError("No data", "Empty binding model."); // Act var response = bugsController.EditExistingBug(fakeBugToModify.Id, newBugData) .ExecuteAsync(CancellationToken.None).Result; // Assert var fakeBugAfterEditing = this.mock.BugRepositoryMock.Object.All().FirstOrDefault(); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); Assert.AreEqual(fakeBugToModify.Title, fakeBugAfterEditing.Title); Assert.AreEqual(fakeBugToModify.Description, fakeBugAfterEditing.Description); Assert.AreEqual(fakeBugToModify.Status, fakeBugAfterEditing.Status); }
public void EditingExistingBug_ShouldChangeOnlySentData() { var controller = new BugsController(); var model = new EditBugBindingModel() { Title = "Changed"+DateTime.Now.Ticks }; var response = controller.EditBug(model, 3).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }
public void EditUnexistingBug_ShouldReturnNotFound() { var controller = new BugsController(dataMock.Object); SetupController(controller, "Bugs"); dataMock.Setup(data => data.Bugs.Find(It.IsAny<object>())).Returns(null as Bug); var updatedBug = new EditBugInputModel { Title = "New Title" }; var result = controller.EditBug(2, updatedBug).ExecuteAsync(new CancellationToken()).Result; Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode); }
public void EditExistingBug_NoDataSend_ShouldReturn400BadRequest() { // Arrange -> create a new bug var data = new BugTrackerDataMock(); var bug = new Bug() { Id = 1, Title = "test", Status = Status.Open }; data.Bugs.Add(bug); var controller = new BugsController(data); this.SetupControllerForTesting(controller, "bugs"); // Act -> edit the above created bug var httpResponse = controller.PatchEditBug(1, null) .ExecuteAsync(new CancellationToken()).Result; // Assert -> 404 Not found Assert.AreEqual(HttpStatusCode.BadRequest, httpResponse.StatusCode); }
public void EditingNonExistingBug_ShouldreturnNotFound_Moq() { var fakeBugs = this.mocks.BugRepositoryMock.Object.All(); var mockContext = new Mock<IBugTrackerData>(); mockContext.Setup(u => u.Bugs).Returns(mocks.BugRepositoryMock.Object); var bugsController = new BugsController(mockContext.Object); SetupController(bugsController); var newTitle = "Changed" + DateTime.Now.Ticks; var model = new EditBugBindingModel() { Title = newTitle }; var response = bugsController.EditBug(model, 100).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Never); }
public void EditBugNoInputModel_ShouldReturnBadRequest() { var controller = new BugsController(dataMock.Object); SetupController(controller, "Bugs"); var bugToEdit = new Bug { Title = "Bug4e Tuka", Description = "ne6to ne e nared", Status = BugStatus.InProgress, DateCreated = DateTime.Now }; dataMock.Setup(data => data.Bugs.Find(It.IsAny<object>())).Returns(bugToEdit); var result = controller.EditBug(2, null).ExecuteAsync(new CancellationToken()).Result; Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode); }
public void EditBug_InvalidBugData_ShouldReturn400BadRequest() { // Arrange -> create a few bugs var dataLayerMock = new BugTrackerDataMock(); var bugsMock = dataLayerMock.Bugs; bugsMock.Add(new Bug() { Id = 1, Title = "Bug #1" }); bugsMock.Add(new Bug() { Id = 2, Title = "Bug #2" }); // Act -> edit bug data var bugsController = new BugsController(dataLayerMock); this.SetupControllerForTesting(bugsController, "bugs"); EditBugBindingModel editBugData = null; var httpResponse = bugsController.EditBug(1, editBugData) .ExecuteAsync(new CancellationToken()).Result; // Assert -> HTTP status code 400 (BadRequest) Assert.AreEqual(HttpStatusCode.BadRequest, httpResponse.StatusCode); }
public void EditBug_NonExistingBug_ShouldReturn404NotFound() { // Arrange -> create a few bugs var dataLayerMock = new BugTrackerDataMock(); var bugsMock = dataLayerMock.Bugs; bugsMock.Add(new Bug() { Id = 1, Title = "Bug #1" }); bugsMock.Add(new Bug() { Id = 2, Title = "Bug #2" }); // Act -> edit bug data var bugsController = new BugsController(dataLayerMock); this.SetupControllerForTesting(bugsController, "bugs"); var editBugData = new EditBugInputModel() { Title = "new title" }; var httpResponse = bugsController.EditBug(1234, editBugData) .ExecuteAsync(new CancellationToken()).Result; // Assert -> HTTP status code 404 (Not Found) Assert.AreEqual(HttpStatusCode.NotFound, httpResponse.StatusCode); }
public void EditExistingBugTitle_ShouldReturn200OK_Modify() { // Arrange -> create a new bug var data = new BugTrackerDataMock(); var bug = new Bug() { Id = 1, Title = "test", Status = Status.Open }; data.Bugs.Add(bug); var controller = new BugsController(data); this.SetupControllerForTesting(controller, "bugs"); // Act -> edit the above created bug var httpResponse = controller.PatchEditBug(1, new BugBindingEditBugModel() { Title = "test1" }) .ExecuteAsync(new CancellationToken()).Result; // Assert -> 200 OK Assert.AreEqual(HttpStatusCode.OK, httpResponse.StatusCode); // Assert the service holds the modified bug Assert.AreEqual("test1", bug.Title); Assert.AreEqual(Status.Open, bug.Status); }
public void EditBug_ExistingBug_ShouldReturn200OK_CorrectBugData() { // Arrange -> create a few bugs var dataLayerMock = new BugTrackerDataMock(); var bugsMock = dataLayerMock.Bugs; bugsMock.Add(new Bug() { Id = 1, Title = "Bug #1" }); bugsMock.Add(new Bug() { Id = 2, Title = "Bug #2 for edit ...", Description = "Description for edit ...", Status = BugStatus.Fixed }); bugsMock.Add(new Bug() { Id = 3, Title = "Bug #3" }); var newTitle = "new title"; var newDescription = "new description"; var newStatus = BugStatus.Closed; // Act -> edit bug data var bugsController = new BugsController(dataLayerMock); this.SetupControllerForTesting(bugsController, "bugs"); var editBugData = new EditBugBindingModel() { Title = newTitle, Description = newDescription, Status = newStatus }; var httpResponse = bugsController.EditBug(2, editBugData) .ExecuteAsync(new CancellationToken()).Result; // Assert -> HTTP status code 200 (OK) + bug data changed Assert.AreEqual(HttpStatusCode.OK, httpResponse.StatusCode); Assert.AreEqual(2, bugsMock.Find(2).Id); Assert.AreEqual(newTitle, bugsMock.Find(2).Title); Assert.AreEqual(newDescription, bugsMock.Find(2).Description); Assert.AreEqual(newStatus, bugsMock.Find(2).Status); }
public void EditingExistingBug_ShouldChangeOnlySentData() { var fakeBugs = new List<Bug> { new Bug() { Id = 1, Title = "Bug 1", Description = "bug 1 description" }, new Bug() { Id = 2, Title = "Bug 2", Description = "bug 2 description" } }; var fakeRepo = new FakeBugsRepository(fakeBugs); var fakeUnitOfWork = new FakeUnitOfWork(fakeRepo); var newTitle = "Changed" + DateTime.Now.Ticks; var model = new EditBugBindingModel() { Title = newTitle }; var oldDescription = fakeBugs[0].Description; var oldStatus = fakeBugs[0].Status; var controller = new BugsController(fakeUnitOfWork); SetupController(controller); var response = controller.EditBug(model, 1).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); Assert.AreEqual(1, fakeUnitOfWork.SaveChangesCallCount); Assert.AreEqual(oldDescription, fakeBugs[0].Description); Assert.AreEqual(oldStatus, fakeBugs[0].Status); Assert.AreEqual(newTitle, fakeBugs[0].Title); }
private void SetupController(BugsController newsController) { newsController.Request = new HttpRequestMessage(); newsController.Configuration = new HttpConfiguration(); }
public void EditNonExistingBug_ShouldReturn404NotFound() { // Arrange -> create a new bug var data = new BugTrackerDataMock(); var controller = new BugsController(data); this.SetupControllerForTesting(controller, "bugs"); // Act -> edit the above created bug var httpResponse = controller.PatchEditBug(1, new BugBindingEditBugModel() { Description = "Bomba", Status = "Closed" }) .ExecuteAsync(new CancellationToken()).Result; // Assert -> 404 Not found Assert.AreEqual(HttpStatusCode.NotFound, httpResponse.StatusCode); }
public void Modify_NonExisting_Bug_With_Correct_Data_Should_Return_404NotFound() { // Arrange var newBugData = new EditBugBindingModel { Title = "Modified title", Description = "Modified description", Status = "Closed" }; var mockContext = new Mock<IBugTrackerData>(); mockContext.Setup(c => c.Bugs) .Returns(this.mock.BugRepositoryMock.Object); var bugsController = new BugsController(mockContext.Object); this.SetupController(bugsController); // Act var response = bugsController.EditExistingBug(int.MaxValue, newBugData) .ExecuteAsync(CancellationToken.None).Result; // Assert Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); }
public void EditBugStatusOnly() { var controller = new BugsController(dataMock.Object); SetupController(controller, "Bugs"); var bugToEdit = new Bug { Id = 22, Title = "Bug4e Tuka", Description = "ne6to ne e nared", Status = BugStatus.InProgress, DateCreated = DateTime.Now }; dataMock.Setup(data => data.Bugs.Find(It.IsAny<object>())).Returns(bugToEdit); var updatedBug = new EditBugInputModel { Status = "Closed" }; var result = controller.EditBug(2, updatedBug).ExecuteAsync(new CancellationToken()).Result; Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); var resultContent = result.Content.ReadAsStringAsync().Result; Assert.IsTrue(resultContent.Contains("Bug #" + bugToEdit.Id + " patched.")); }