public async void CreateADiscipline_CatchBlock_ReturnBadRequestException() { string errMessage = "Bad Request"; var discipline = new DisciplineResource(); var result = (await _controller.CreateADiscipline(discipline)) as ObjectResult; Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode); Assert.IsType <BadRequestException>(result.Value); var response = result.Value as BadRequestException; Assert.Equal(errMessage, response.status); }
public async Task <int> CreateADiscipline(DisciplineResource discipline) { var sql = @" insert into Disciplines (Name) values (@Name); select cast(scope_identity() as int); ;"; using var connection = new SqlConnection(connectionString); connection.Open(); discipline.Id = await connection.QuerySingleAsync <int>(sql, new { Name = discipline.Name }); return(discipline.Id); }
public async void CreateADiscipline_CatchBlock_ReturnSqlException() { string errMessage = "Internal Server Error"; var sqlException = new SqlExceptionBuilder().WithErrorNumber(50000).WithErrorMessage(errMessage).Build(); Setup_DisciplinesRepo_CreateADiscipline_ThrowsException(sqlException); var discipline = new DisciplineResource { Name = "A Discipline Name" }; var result = (await _controller.CreateADiscipline(discipline)) as ObjectResult; Assert.Equal(StatusCodes.Status500InternalServerError, result.StatusCode); var response = result.Value as InternalServerException; Assert.Equal(errMessage, response.status); }
public async void CreateADiscipline_TryBlock_ReturnValidId() { var returnVal = 1; var discipline = new DisciplineResource { Name = "A Discipline Name" }; Setup_DisciplinesRepo_CreateADiscipline_Default(returnVal); var result = (await _controller.CreateADiscipline(discipline)) as ObjectResult; Verify_DisciplinesRepo_CreateADiscipline(Times.Once); Assert.Equal(StatusCodes.Status201Created, result.StatusCode); Assert.IsType <CreatedResponse <int> >(result.Value); var response = result.Value as CreatedResponse <int>; Assert.IsType <int>(response.payload); }
public async Task <int> UpdateADiscipline(DisciplineResource discipline) { var sql = @" update Disciplines set Name = @Name where Id = @Id ;"; using var connection = new SqlConnection(connectionString); connection.Open(); int result = await connection.ExecuteAsync(sql, new { Id = discipline.Id, Name = discipline.Name }); return((result == 1) ? discipline.Id : -1); }
public async Task <IActionResult> CreateADiscipline([FromBody] DisciplineResource discipline) { if (discipline == null) { var error = new BadRequestException("The given discipline is null / Request Body cannot be read"); return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException())); } if (String.IsNullOrEmpty(discipline.Name)) { var error = new BadRequestException("Discipline Name cannot be null or empty"); return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException())); } try { var createdDisciplineID = await disciplinesRepository.CreateADiscipline(discipline); var response = new CreatedResponse <int>(createdDisciplineID, $"Successfully created discipline '{createdDisciplineID}'"); return(StatusCode(StatusCodes.Status201Created, response)); } catch (Exception err) { var errMessage = $"Source: {err.Source}\n Message: {err.Message}\n StackTrace: {err.StackTrace}\n"; if (err is SqlException) { var error = new InternalServerException(errMessage); return(StatusCode(StatusCodes.Status500InternalServerError, new CustomException <InternalServerException>(error).GetException())); } else { var error = new BadRequestException(errMessage); return(StatusCode(StatusCodes.Status400BadRequest, new CustomException <BadRequestException>(error).GetException())); } } }