public async Task PostReturnsBadRequestObjectResultWithCorrectErrorMessageWhenEventIsNull() { var determineIfATaskIsEditable = new Mock<IDetermineIfATaskIsEditable>(); determineIfATaskIsEditable.Setup(x => x.For(It.IsAny<ClaimsPrincipal>(), It.IsAny<AllReadyTask>())).Returns(true); var sut = new TaskApiController(Mock.Of<IMediator>(), determineIfATaskIsEditable.Object); var result = await sut.Post(new TaskViewModel()) as BadRequestObjectResult; Assert.IsType<BadRequestObjectResult>(result); Assert.Equal(result.StatusCode, 400); }
public async Task PostReturnsHttpUnauthorizedWhenUserDoesNotHaveTheAuthorizationToEditTheTaskOrTheTaskIsNotInAnEditableState() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<EventByIdQuery>())).Returns(new Event()); var determineIfATaskIsEditable = new Mock<IDetermineIfATaskIsEditable>(); determineIfATaskIsEditable.Setup(x => x.For(It.IsAny<ClaimsPrincipal>(), It.IsAny<AllReadyTask>())).Returns(false); var sut = new TaskApiController(mediator.Object, determineIfATaskIsEditable.Object); var result = await sut.Post(new TaskViewModel { EventId = 1 }); Assert.IsType<HttpUnauthorizedResult>(result); }
public async Task PostReturnsBadRequestResultWhenTaskAlreadyExists() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<EventByIdQuery>())).Returns(new Event()); mediator.Setup(x => x.Send(It.IsAny<TaskByTaskIdQuery>())).Returns(new AllReadyTask()); var determineIfATaskIsEditable = new Mock<IDetermineIfATaskIsEditable>(); determineIfATaskIsEditable.Setup(x => x.For(It.IsAny<ClaimsPrincipal>(), It.IsAny<AllReadyTask>())).Returns(true); var sut = new TaskApiController(mediator.Object, determineIfATaskIsEditable.Object); var result = await sut.Post(new TaskViewModel { EventId = 1 }); Assert.IsType<BadRequestResult>(result); }
public async Task PostSendsAddTaskCommandAsyncWithCorrectData() { var model = new TaskViewModel { EventId = 1, Id = 1 }; var allReadyTask = new AllReadyTask(); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<EventByEventIdQuery>())).ReturnsAsync(new Event()); mediator.SetupSequence(x => x.SendAsync(It.IsAny<TaskByTaskIdQuery>())) .ReturnsAsync(allReadyTask).ReturnsAsync(null); var determineIfATaskIsEditable = new Mock<IDetermineIfATaskIsEditable>(); determineIfATaskIsEditable.Setup(x => x.For(It.IsAny<ClaimsPrincipal>(), It.IsAny<AllReadyTask>(), null)).Returns(true); var sut = new TaskApiController(mediator.Object, determineIfATaskIsEditable.Object, null); await sut.Post(model); mediator.Verify(x => x.SendAsync(It.Is<AddTaskCommand>(y => y.AllReadyTask == allReadyTask)), Times.Once); }
public async Task UnregisterTaskReturnsCorrectStatus() { const string status = "status"; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<TaskUnenrollCommand>())).ReturnsAsync(new TaskUnenrollResult { Status = status }); var sut = new TaskApiController(mediator.Object, null); sut.SetDefaultHttpContext(); var jsonResult = await sut.UnregisterTask(It.IsAny<int>()); var result = jsonResult.GetValueForProperty<string>("Status"); Assert.IsType<JsonResult>(jsonResult); Assert.IsType<string>(result); Assert.Equal(result, status); }
public async Task UnregisterTaskSendsTaskUnenrollCommandAsyncWithCorrectTaskIdAndUserId() { const string userId = "1"; const int taskId = 1; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<TaskUnenrollCommand>())).ReturnsAsync(new TaskUnenrollResult()); var sut = new TaskApiController(mediator.Object, null); sut.SetFakeUser(userId); await sut.UnregisterTask(taskId); mediator.Verify(x => x.SendAsync(It.Is<TaskUnenrollCommand>(y => y.TaskId == taskId && y.UserId == userId))); }
public void PutHasHttpPutAttributeWithCorrectTemplate() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributesOn(x => x.Put(It.IsAny<int>(), It.IsAny<TaskViewModel>())).OfType<HttpPutAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.Template, "{id}"); }
public void ControllerHasProducesAtttributeWithTheCorrectContentType() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributes().OfType<ProducesAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.ContentTypes.Select(x => x.MediaType).First(), "application/json"); }
public async Task DeleteReturnsHttpUnauthorizedResultWhenAUserDoesNotHavePermissionToEditTheTaskOrTheTaskIsNotEditable() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<TaskByTaskIdQuery>())).Returns(new AllReadyTask()); var determineIfATaskIsEditable = new Mock<IDetermineIfATaskIsEditable>(); determineIfATaskIsEditable.Setup(x => x.For(It.IsAny<ClaimsPrincipal>(), It.IsAny<AllReadyTask>())).Returns(false); var sut = new TaskApiController(mediator.Object, determineIfATaskIsEditable.Object); var result = await sut.Delete(It.IsAny<int>()); Assert.IsType<HttpUnauthorizedResult>(result); }
public async Task ChangeStatusReturnsCorrectStatus() { const string status = "status"; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<TaskStatusChangeCommandAsync>())).Returns(() => Task.FromResult(new TaskChangeResult { Status = status })); var sut = new TaskApiController(mediator.Object, null); sut.SetDefaultHttpContext(); var jsonResult = await sut.ChangeStatus(new TaskChangeModel()); var result = jsonResult.GetValueForProperty<string>("Status"); Assert.IsType<JsonResult>(jsonResult); Assert.IsType<string>(result); Assert.Equal(result, status); }
public void UnregisterTaskHasHttpDeleteAttributeWithCorrectTemplate() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributesOn(x => x.UnregisterTask(It.IsAny<int>())).OfType<HttpDeleteAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.Template, "{id}/signup"); }
public async Task Register_ReturnsCorrectJson_WhenApiResult_IsSuccess() { const string taskSignUpResultStatus = TaskSignupResult.SUCCESS; var model = new EventSignupViewModel(); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.Is<TaskSignupCommandAsync>(y => y.TaskSignupModel == model))) .Returns(Task.FromResult(new TaskSignupResult { Status = taskSignUpResultStatus, Task = new AllReadyTask { Id = 1, Name = "Task" } })); var sut = new TaskApiController(mediator.Object, null); var jsonResult = await sut.RegisterTask(model) as JsonResult; var successStatus = jsonResult.GetValueForProperty<bool>("isSuccess"); var taskModel = jsonResult.GetValueForProperty<TaskViewModel>("task"); Assert.True(successStatus); Assert.NotNull(taskModel); }
public async Task RegisterTaskSendsTaskSignupCommandWithCorrectTaskSignupModel() { var model = new EventSignupViewModel(); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.Is<TaskSignupCommandAsync>(y => y.TaskSignupModel == model))).Returns(Task.FromResult(new TaskSignupResult())); var sut = new TaskApiController(mediator.Object, null); await sut.RegisterTask(model); mediator.Verify(x => x.SendAsync(It.Is<TaskSignupCommandAsync>(command => command.TaskSignupModel.Equals(model)))); }
public async Task RegisterTaskReturnsJsonWhenThereIsModelStateError() { const string modelStateErrorMessage = "modelStateErrorMessage"; var sut = new TaskApiController(null, null); sut.AddModelStateErrorWithErrorMessage(modelStateErrorMessage); var jsonResult = await sut.RegisterTask(new EventSignupViewModel()) as JsonResult; var result = jsonResult.GetValueForProperty<List<string>>("errors"); Assert.IsType<JsonResult>(jsonResult); Assert.IsType<List<string>>(result); Assert.Equal(result.First(), modelStateErrorMessage); }
public async Task RegisterTaskReturnsHttpBadRequestWhenModelIsNull() { var sut = new TaskApiController(null, null); var result = await sut.RegisterTask(null); Assert.IsType<BadRequestResult>(result); }
public async Task DeleteSendsTaskByTaskIdQueryWithCorrectTaskId() { const int taskId = 1; var mediator = new Mock<IMediator>(); var sut = new TaskApiController(mediator.Object, null); await sut.Delete(taskId); mediator.Verify(x => x.Send(It.Is<TaskByTaskIdQuery>(y => y.TaskId == taskId))); }
public async Task DeleteSendsDeleteTaskCommandAsyncWithCorrectTaskId() { var allReadyTask = new AllReadyTask { Id = 1 }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<TaskByTaskIdQuery>())).Returns(allReadyTask); var determineIfATaskIsEditable = new Mock<IDetermineIfATaskIsEditable>(); determineIfATaskIsEditable.Setup(x => x.For(It.IsAny<ClaimsPrincipal>(), It.IsAny<AllReadyTask>())).Returns(true); var sut = new TaskApiController(mediator.Object, determineIfATaskIsEditable.Object); await sut.Delete(It.IsAny<int>()); mediator.Verify(x => x.SendAsync(It.Is<DeleteTaskCommandAsync>(y => y.TaskId == allReadyTask.Id))); }
public async Task UnregisterTaskReturnsTaskViewModelWhenResultTaskIsNotNull() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<TaskUnenrollCommand>())).ReturnsAsync(new TaskUnenrollResult { Task = new AllReadyTask() }); var sut = new TaskApiController(mediator.Object, null); sut.SetDefaultHttpContext(); var jsonResult = await sut.UnregisterTask(It.IsAny<int>()); var result = jsonResult.GetValueForProperty<TaskViewModel>("Task"); Assert.IsType<JsonResult>(jsonResult); Assert.IsType<TaskViewModel>(result); }
public void UnregisterTaskHasAuthorizeAttrbiute() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributesOn(x => x.UnregisterTask(It.IsAny<int>())).OfType<AuthorizeAttribute>().SingleOrDefault(); Assert.NotNull(attribute); }
public async Task Register_ReturnsCorrectJson_WhenTaskIsClosed() { const string taskSignUpResultStatus = TaskSignupResult.FAILURE_CLOSEDTASK; var model = new EventSignupViewModel(); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.Is<TaskSignupCommandAsync>(y => y.TaskSignupModel == model))) .Returns(Task.FromResult(new TaskSignupResult { Status = taskSignUpResultStatus })); var sut = new TaskApiController(mediator.Object, null); var jsonResult = await sut.RegisterTask(model) as JsonResult; var successStatus = jsonResult.GetValueForProperty<bool>("isSuccess"); var errors = jsonResult.GetValueForProperty<string[]>("errors"); Assert.False(successStatus); Assert.NotNull(errors); Assert.Equal(1, errors.Count()); Assert.Equal(TaskApiController.FAILED_SIGNUP_TASK_CLOSED, errors[0]); }
public async Task ChangeStatusInvokesSendAsyncWithCorrectTaskStatusChangeCommand() { var model = new TaskChangeModel { TaskId = 1, UserId = "1", Status = TaskStatus.Accepted, StatusDescription = "statusDescription" }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<TaskStatusChangeCommandAsync>())).Returns(() => Task.FromResult(new TaskChangeResult())); var sut = new TaskApiController(mediator.Object, null); await sut.ChangeStatus(model); mediator.Verify(x => x.SendAsync(It.Is<TaskStatusChangeCommandAsync>(y => y.TaskId == model.TaskId && y.TaskStatus == model.Status && y.TaskStatusDescription == model.StatusDescription && y.UserId == model.UserId))); }
public async Task ChangeStatusReturnsTaskViewModelWhenResultTaskIsNotNull() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<TaskStatusChangeCommandAsync>())).Returns(() => Task.FromResult(new TaskChangeResult { Task = new AllReadyTask() })); var sut = new TaskApiController(mediator.Object, null); sut.SetDefaultHttpContext(); var jsonResult = await sut.ChangeStatus(new TaskChangeModel()); var result = jsonResult.GetValueForProperty<TaskViewModel>("Task"); Assert.IsType<JsonResult>(jsonResult); Assert.IsType<TaskViewModel>(result); }
public void ChangeStatusHasRouteAttributeWithCorrectTemplate() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributesOn(x => x.ChangeStatus(It.IsAny<TaskChangeModel>())).OfType<RouteAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.Template, "changestatus"); }
public async Task DeleteReturnsBadRequestResultWhenCannotFindTaskByTaskId() { var sut = new TaskApiController(Mock.Of<IMediator>(), null); var result = await sut.Delete(It.IsAny<int>()); Assert.IsType<BadRequestResult>(result); }
public void ChangeStatusHasValidateAntiForgeryTokenAttribute() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributesOn(x => x.ChangeStatus(It.IsAny<TaskChangeModel>())).OfType<ValidateAntiForgeryTokenAttribute>().SingleOrDefault(); Assert.NotNull(attribute); }
public void RegisterTaskHasValidateAntiForgeryTokenAttrbiute() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributesOn(x => x.RegisterTask(It.IsAny<EventSignupViewModel>())).OfType<ValidateAntiForgeryTokenAttribute>().SingleOrDefault(); Assert.NotNull(attribute); }
public void ControllerHasRouteAtttributeWithTheCorrectRoute() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributes().OfType<RouteAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.Template, "api/task"); }
public void RegisterTaskHasHttpPostAttributeWithCorrectTemplate() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributesOn(x => x.RegisterTask(It.IsAny<EventSignupViewModel>())).OfType<HttpPostAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.Template, "signup"); }
public async Task PostSendsTaskByTaskIdQueryWithCorrectTaskId() { var model = new TaskViewModel { EventId = 1, Id = 1 }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.Send(It.IsAny<EventByIdQuery>())).Returns(new Event()); mediator.Setup(x => x.Send(It.IsAny<TaskByTaskIdQuery>())).Returns(new AllReadyTask()); var provider = new Mock<IDetermineIfATaskIsEditable>(); provider.Setup(x => x.For(It.IsAny<ClaimsPrincipal>(), It.IsAny<AllReadyTask>())).Returns(true); var sut = new TaskApiController(mediator.Object, provider.Object); await sut.Post(model); mediator.Verify(x => x.Send(It.Is<TaskByTaskIdQuery>(y => y.TaskId == model.Id))); }
public void RegisterTaskHasHasProducesAtttributeWithTheCorrectContentType() { var sut = new TaskApiController(null, null); var attribute = sut.GetAttributesOn(x => x.RegisterTask(It.IsAny<EventSignupViewModel>())).OfType<ProducesAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.ContentTypes.Select(x => x.MediaType).First(), "application/json"); }