public void PostAsync_With_UnValid_ProjectionDate_Return_BadRequest() { //Arrange string expectedMessage = "Projection time cannot be in past."; int expectedStatusCode = 400; CreateProjectionModel createProjectionModel = new CreateProjectionModel() { MovieId = Guid.NewGuid(), ProjectionTime = DateTime.Now.AddDays(-1), AuditoriumId = 0 }; _projectionService = new Mock <IProjectionService>(); ProjectionsController projectionsController = new ProjectionsController(_projectionService.Object); //Act var result = projectionsController.PostAsync(createProjectionModel).ConfigureAwait(false).GetAwaiter().GetResult().Result; var resultResponse = (BadRequestObjectResult)result; var createdResult = ((BadRequestObjectResult)result).Value; var errorResponse = ((SerializableError)createdResult).GetValueOrDefault(nameof(createProjectionModel.ProjectionTime)); var message = (string[])errorResponse; //Assert Assert.IsNotNull(resultResponse); Assert.AreEqual(expectedMessage, message[0]); Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult)); Assert.AreEqual(expectedStatusCode, resultResponse.StatusCode); }
public void PostAsync_Create_createProjectionResultModel_IsSuccessful_False_Return_BadRequest() { //Arrange string expectedMessage = "Error occured while creating new projection, please try again."; int expectedStatusCode = 400; CreateProjectionModel createProjectionModel = new CreateProjectionModel() { MovieId = Guid.NewGuid(), ProjectionTime = DateTime.Now.AddDays(1), AuditoriumId = 1 }; CreateProjectionResultModel createProjectionResultModel = new CreateProjectionResultModel { Projection = new ProjectionDomainModel { Id = Guid.NewGuid(), AuditoriumName = "ImeSale", AuditoriumId = createProjectionModel.AuditoriumId, MovieId = createProjectionModel.MovieId, MovieTitle = "ImeFilma", ProjectionTime = createProjectionModel.ProjectionTime }, IsSuccessful = false, ErrorMessage = Messages.PROJECTION_CREATION_ERROR, }; Task <CreateProjectionResultModel> responseTask = Task.FromResult(createProjectionResultModel); _projectionService = new Mock <IProjectionService>(); _projectionService.Setup(x => x.CreateProjection(It.IsAny <ProjectionDomainModel>())).Returns(responseTask); ProjectionsController projectionsController = new ProjectionsController(_projectionService.Object); //Act var result = projectionsController.PostAsync(createProjectionModel).ConfigureAwait(false).GetAwaiter().GetResult().Result; var resultResponse = (BadRequestObjectResult)result; var badObjectResult = ((BadRequestObjectResult)result).Value; var errorResult = (ErrorResponseModel)badObjectResult; //Assert Assert.IsNotNull(resultResponse); Assert.AreEqual(expectedMessage, errorResult.ErrorMessage); Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult)); Assert.AreEqual(expectedStatusCode, resultResponse.StatusCode); }
public void PostAsync_Create_Throw_DbException_Projection() { //Arrange string expectedMessage = "Inner exception error message."; int expectedStatusCode = 400; CreateProjectionModel createProjectionModel = new CreateProjectionModel() { MovieId = Guid.NewGuid(), ProjectionTime = DateTime.Now.AddDays(1), AuditoriumId = 1 }; CreateProjectionResultModel createProjectionResultModel = new CreateProjectionResultModel { Projection = new ProjectionDomainModel { Id = Guid.NewGuid(), AuditoriumName = "ImeSale", AuditoriumId = createProjectionModel.AuditoriumId, MovieId = createProjectionModel.MovieId, MovieTitle = "ImeFilma", ProjectionTime = createProjectionModel.ProjectionTime }, IsSuccessful = true }; Task <CreateProjectionResultModel> responseTask = Task.FromResult(createProjectionResultModel); Exception exception = new Exception("Inner exception error message."); DbUpdateException dbUpdateException = new DbUpdateException("Error.", exception); _projectionService = new Mock <IProjectionService>(); _projectionService.Setup(x => x.CreateProjection(It.IsAny <ProjectionDomainModel>())).Throws(dbUpdateException); ProjectionsController projectionsController = new ProjectionsController(_projectionService.Object); //Act var result = projectionsController.PostAsync(createProjectionModel).ConfigureAwait(false).GetAwaiter().GetResult().Result; var resultResponse = (BadRequestObjectResult)result; var badObjectResult = ((BadRequestObjectResult)result).Value; var errorResult = (ErrorResponseModel)badObjectResult; //Assert Assert.IsNotNull(resultResponse); Assert.AreEqual(expectedMessage, errorResult.ErrorMessage); Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult)); Assert.AreEqual(expectedStatusCode, resultResponse.StatusCode); }
public void PostAsync_Create_createProjectionResultModel_IsSuccessful_True_Projection() { //Arrange int expectedStatusCode = 201; CreateProjectionModel createProjectionModel = new CreateProjectionModel() { MovieId = Guid.NewGuid(), ProjectionTime = DateTime.Now.AddDays(1), AuditoriumId = 1 }; CreateProjectionResultModel createProjectionResultModel = new CreateProjectionResultModel { Projection = new ProjectionDomainModel { Id = Guid.NewGuid(), AuditoriumName = "ImeSale", AuditoriumId = createProjectionModel.AuditoriumId, MovieId = createProjectionModel.MovieId, MovieTitle = "ImeFilma", ProjectionTime = createProjectionModel.ProjectionTime }, IsSuccessful = true }; Task <CreateProjectionResultModel> responseTask = Task.FromResult(createProjectionResultModel); _projectionService = new Mock <IProjectionService>(); _projectionService.Setup(x => x.CreateProjection(It.IsAny <ProjectionDomainModel>())).Returns(responseTask); ProjectionsController projectionsController = new ProjectionsController(_projectionService.Object); //Act var result = projectionsController.PostAsync(createProjectionModel).ConfigureAwait(false).GetAwaiter().GetResult().Result; var createdResult = ((CreatedResult)result).Value; var projectionDomainModel = (ProjectionDomainModel)createdResult; //Assert Assert.IsNotNull(projectionDomainModel); Assert.AreEqual(createProjectionModel.MovieId, projectionDomainModel.MovieId); Assert.IsInstanceOfType(result, typeof(CreatedResult)); Assert.AreEqual(expectedStatusCode, ((CreatedResult)result).StatusCode); }