Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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()));
                }
            }
        }