public async Task Create_InvalidInput_ReturnNull(string name) { #region Arrange var dbContext = new ApplicationDbContext(_dbContextOptions); await dbContext.Database.EnsureDeletedAsync(); await dbContext.SaveChangesAsync(); var newGenre = new AdminGenreModel { Name = name }; var appGenre = new Genre(dbContext); #endregion #region Act var actualGenre = await appGenre.Create(newGenre); #endregion #region Assert Assert.Null(actualGenre); #endregion }
public async Task Create_InvalidRequest_ReturnsJsonResponseAndBadRequestWithErrors(string name, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorValues) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var newGenre = new AdminGenreModel { Name = name }; #endregion #region Act var response = await client.PostAsJsonAsync("/api/genre", newGenre); var responseBody = await response.Content.ReadAsStreamAsync(); var actualGenre = await JsonSerializer.DeserializeAsync <JsonElement>(responseBody); var errorProp = actualGenre.GetProperty("errors"); var errors = errorProp.EnumerateObject(); #endregion #region Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); Assert.Equal(expectedErrorNames.Count(), errors.Count()); Assert.All(expectedErrorNames, errorName => Assert.Contains(errorName, errors.Select(prop => prop.Name))); Assert.All(expectedErrorValues, errorValue => Assert.Contains(errorValue, errors.Select(prop => prop.Value[0].ToString()))); #endregion }
public async Task Create_ValidRequest_ReturnsJsonResponseAndCreated(string name) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var newGenre = new AdminGenreModel { Name = name }; var expectedGenre = new GenreModel { ID = 1, Name = name }; #endregion #region Act var response = await client.PostAsJsonAsync("/api/genre", newGenre); var responseBody = await response.Content.ReadAsStreamAsync(); var actualGenre = await JsonSerializer.DeserializeAsync <GenreModel>(responseBody); #endregion #region Assert Assert.Equal(HttpStatusCode.Created, response.StatusCode); Assert.Equal(expectedGenre.ID, actualGenre.ID); Assert.Equal(expectedGenre.Name, actualGenre.Name); #endregion }
public async Task Update_InvalidInput_ReturnsNull(int id, string name) { #region Arrange var dbContext = new ApplicationDbContext(_dbContextOptions); await dbContext.Database.EnsureDeletedAsync(); var genre = new Domain.Genre { Name = "Name" }; dbContext.Genres.Add(genre); await dbContext.SaveChangesAsync(); var newGenre = new AdminGenreModel { ID = id, Name = name }; var appGenre = new Genre(dbContext); #endregion #region Act var actualGenre = await appGenre.Update(newGenre); #endregion #region Assert Assert.Null(actualGenre); #endregion }
public async Task Create_ValidInput_ReturnsCorrectData(string name) { #region Arrange var dbContext = new ApplicationDbContext(_dbContextOptions); await dbContext.Database.EnsureDeletedAsync(); var newGenre = new AdminGenreModel { Name = name }; var expectedGenre = new GenreModel { ID = 1, Name = name }; var appGenre = new Genre(dbContext); #endregion #region Act var actualGenre = await appGenre.Create(newGenre); #endregion #region Assert Assert.Equal(expectedGenre.ID, actualGenre.ID); Assert.Equal(expectedGenre.Name, actualGenre.Name); #endregion }
public async Task <IActionResult> Update([FromBody] AdminGenreModel adminGenreModel) { if (await genre.Update(adminGenreModel) is GenreModel result && result != null) { return(Ok(result)); } return(NotFound()); }
public async Task <IActionResult> Create([FromBody] AdminGenreModel adminGenreModel) { if (await genre.Create(adminGenreModel) is GenreModel result && result != null) { return(CreatedAtAction(nameof(Read), new { id = result.ID }, result)); } return(StatusCode((int)HttpStatusCode.InternalServerError)); }
public async Task <GenreModel> Update(AdminGenreModel adminGenreModel) { var genre = _applicationDbContext.Genres.FirstOrDefault(x => x.ID == adminGenreModel.ID); if (genre != null && _genreValidation.IsInputValid(adminGenreModel)) { genre.Name = adminGenreModel.Name; await _applicationDbContext.SaveChangesAsync(); return(await Read(genre.ID)); } return(null); }
public async Task <GenreModel> Create(AdminGenreModel adminGenreModel) { if (_genreValidation.IsInputValid(adminGenreModel)) { var genre = new Domain.Genre { Name = adminGenreModel.Name }; _applicationDbContext.Genres.Add(genre); await _applicationDbContext.SaveChangesAsync(); return(await Read(genre.ID)); } return(null); }
public async Task Update_ValidRequest_ReturnsJsonResponseAndOk(int id, string name) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var dbContext = GetDbContext(); dbContext.Genres.Add(new Domain.Genre { Name = "Name" }); await dbContext.SaveChangesAsync(); var newGenre = new AdminGenreModel { ID = id, Name = name }; var expectedGenre = new GenreModel { ID = id, Name = name }; #endregion #region Act var response = await client.PutAsJsonAsync($"/api/genre/{id}", newGenre); var responseBody = await response.Content.ReadAsStreamAsync(); var actualGenre = await JsonSerializer.DeserializeAsync <GenreModel>(responseBody); #endregion #region Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(expectedGenre.ID, actualGenre.ID); Assert.Equal(expectedGenre.Name, actualGenre.Name); #endregion }
public async Task Update_InvalidRequest_ReturnsJsonResponseAndBadRequestWithErrors(int id, string name, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorMessages) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var dbContext = GetDbContext(); dbContext.Genres.Add(new Domain.Genre { Name = "Name" }); await dbContext.SaveChangesAsync(); var newGenre = new AdminGenreModel { ID = id, Name = name }; #endregion #region Act var response = await client.PutAsJsonAsync($"/api/genre/{id}", newGenre); var responseBody = await response.Content.ReadAsStreamAsync(); var actualGenre = await JsonSerializer.DeserializeAsync <JsonElement>(responseBody); var errorProp = actualGenre.GetProperty("errors"); var errors = errorProp.EnumerateObject(); #endregion #region Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); Assert.Equal(expectedErrorNames.Count(), errors.Count()); Assert.All(expectedErrorNames, errorName => Assert.Contains(errorName, errors.Select(prop => prop.Name))); Assert.All(expectedErrorMessages, errorMessage => Assert.Contains(errorMessage, errors.Select(prop => prop.Value[0].ToString()))); #endregion }
public async Task Update_InvalidRequest_ReturnsJsonResponseAndNotFound(int id) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var newGenre = new AdminGenreModel { ID = id, Name = "New Name" }; #endregion #region Act var response = await client.PutAsJsonAsync($"/api/genre/{id}", newGenre); #endregion #region Assert Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); #endregion }
public bool IsInputValid(AdminGenreModel adminGenreModel) { bool isNameOk = !(adminGenreModel.Name == null || adminGenreModel.Name == ""); return(isNameOk); }