public async Task Create_InvalidInput_ReturnNull(string birthDate, string birthPlace, string description, string firstName, string lastName) { #region Arrange var dbContext = new ApplicationDbContext(_dbContextOptions); await dbContext.Database.EnsureDeletedAsync(); var newPerson = new AdminPersonModel { ID = 1, BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; var appPerson = new Person(dbContext); #endregion #region Act var actualPerson = await appPerson.Create(newPerson); #endregion #region Assert Assert.Null(actualPerson); #endregion }
public async Task Create_InvalidRequest_ReturnsJsonResponseAndBadRequestWithErrors(string birthDate, string birthPlace, string description, string firstName, string lastName, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorValues) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var newPerson = new AdminPersonModel { BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; #endregion #region Act var response = await client.PostAsJsonAsync("/api/person", newPerson); var responseBody = await response.Content.ReadAsStreamAsync(); var actualPerson = await JsonSerializer.DeserializeAsync <JsonElement>(responseBody); var errorProp = actualPerson.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 Update_InvalidRequest_ReturnsJsonResponseAndNotFound(int id) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var newPerson = new AdminPersonModel { ID = id, BirthDate = DateTime.Parse("04-10-2010"), BirthPlace = "Birth Place", Description = "Description", FirstName = "First Name", LastName = "Last Name" }; #endregion #region Act var response = await client.PutAsJsonAsync($"/api/person/{id}", newPerson); #endregion #region Assert Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); #endregion }
public async Task Update_ValidRequest_ReturnsJsonResponseAndOk(int id, string birthDate, string birthPlace, string description, string firstName, string lastName) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var dbContext = GetDbContext(); var person = new Domain.Person { BirthDate = "04-10-2010", BirthPlace = "Birth Place", Description = "Description", FirstName = "First Name", LastName = "Last Name" }; dbContext.Persons.Add(person); await dbContext.SaveChangesAsync(); var newPerson = new AdminPersonModel { ID = id, BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; var expectedPerson = new PersonModel { ID = id, BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; #endregion #region Act var response = await client.PutAsJsonAsync($"/api/person/{id}", newPerson); var responseBody = await response.Content.ReadAsStreamAsync(); var actualPerson = await JsonSerializer.DeserializeAsync <PersonModel>(responseBody); #endregion #region Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(expectedPerson.ID, actualPerson.ID); Assert.Equal(expectedPerson.BirthDate, actualPerson.BirthDate); Assert.Equal(expectedPerson.BirthPlace, actualPerson.BirthPlace); Assert.Equal(expectedPerson.Description, actualPerson.Description); Assert.Equal(expectedPerson.FirstName, actualPerson.FirstName); Assert.Equal(expectedPerson.LastName, actualPerson.LastName); #endregion }
public async Task <IActionResult> Update([FromBody] AdminPersonModel adminPersonModel) { if (await person.Update(adminPersonModel) is PersonModel result && result != null) { return(Ok(result)); } return(NotFound()); }
public async Task <IActionResult> Create([FromBody] AdminPersonModel adminPersonModel) { if (await person.Create(adminPersonModel) is PersonModel result && result != null) { return(CreatedAtAction(nameof(Read), new { id = result.ID }, result)); } return(StatusCode((int)HttpStatusCode.InternalServerError)); }
public bool IsInputValid(AdminPersonModel adminPersonModel) { bool isBirthDateOk = adminPersonModel.BirthDate != DateTime.Parse("1-1-0001 00:00:00"); bool isBirthPlaceOk = !(adminPersonModel.BirthPlace == null || adminPersonModel.BirthPlace == ""); bool isDescriptionOk = !(adminPersonModel.Description == null || adminPersonModel.Description == ""); bool isFirstNameOk = !(adminPersonModel.FirstName == null || adminPersonModel.FirstName == ""); bool isLastNameOk = !(adminPersonModel.LastName == null || adminPersonModel.LastName == ""); return(isBirthDateOk && isBirthPlaceOk && isDescriptionOk && isFirstNameOk && isLastNameOk); }
public async Task Update_ValidInput_ReturnsCorrectData(int id, string birthDate, string birthPlace, string description, string firstName, string lastName) { #region Arrange var dbContext = new ApplicationDbContext(_dbContextOptions); await dbContext.Database.EnsureDeletedAsync(); var person = new Domain.Person { BirthDate = "04-10-2010", BirthPlace = "Birth Place", Description = "Description", FirstName = "Firt Name", LastName = "Last Name" }; dbContext.Persons.Add(person); await dbContext.SaveChangesAsync(); var newPerson = new AdminPersonModel { ID = id, BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; var expectedPerson = new PersonModel { ID = id, BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; var appPerson = new Person(dbContext); #endregion #region Act var actualPerson = await appPerson.Update(newPerson); #endregion #region Assert Assert.Equal(expectedPerson.ID, actualPerson.ID); Assert.Equal(expectedPerson.BirthDate, actualPerson.BirthDate); Assert.Equal(expectedPerson.BirthPlace, actualPerson.BirthPlace); Assert.Equal(expectedPerson.Description, actualPerson.Description); Assert.Equal(expectedPerson.FirstName, actualPerson.FirstName); Assert.Equal(expectedPerson.LastName, actualPerson.LastName); #endregion }
public async Task Update_InvalidRequest_ReturnsJsonResponseAndBadRequestWithErrors(int id, string birthDate, string birthPlace, string description, string firstName, string lastName, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorMessages) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var dbContext = GetDbContext(); var person = new Domain.Person { BirthDate = "04-10-2010", BirthPlace = "Birth Place", Description = "Description", FirstName = "First Name", LastName = "Last Name" }; dbContext.Persons.Add(person); await dbContext.SaveChangesAsync(); var newPerson = new AdminPersonModel { ID = id, BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; #endregion #region Act var response = await client.PutAsJsonAsync($"/api/person/{id}", newPerson); var responseBody = await response.Content.ReadAsStreamAsync(); var actualPerson = await JsonSerializer.DeserializeAsync <JsonElement>(responseBody); var errorProp = actualPerson.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 Create_ValidRequest_ReturnsJsonResponseAndCreated(string birthDate, string birthPlace, string description, string firstName, string lastName) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var newPerson = new AdminPersonModel { BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; var expectedPerson = new PersonModel { ID = 1, BirthDate = DateTime.Parse(birthDate), BirthPlace = birthPlace, Description = description, FirstName = firstName, LastName = lastName }; #endregion #region Act var response = await client.PostAsJsonAsync("/api/person", newPerson); var responseBody = await response.Content.ReadAsStreamAsync(); var actualPerson = await JsonSerializer.DeserializeAsync <PersonModel>(responseBody); #endregion #region Assert Assert.Equal(HttpStatusCode.Created, response.StatusCode); Assert.Equal(expectedPerson.ID, actualPerson.ID); Assert.Equal(expectedPerson.BirthDate, actualPerson.BirthDate); Assert.Equal(expectedPerson.BirthPlace, actualPerson.BirthPlace); Assert.Equal(expectedPerson.Description, actualPerson.Description); Assert.Equal(expectedPerson.FirstName, actualPerson.FirstName); Assert.Equal(expectedPerson.LastName, actualPerson.LastName); #endregion }
public async Task <PersonModel> Update(AdminPersonModel adminPersonModel) { var person = _applicationDbContext.Persons.FirstOrDefault(x => x.ID == adminPersonModel.ID); if (person != null && _personValidation.IsInputValid(adminPersonModel)) { person.BirthDate = adminPersonModel.BirthDate.ToString("dd-MM-yyyy"); person.BirthPlace = adminPersonModel.BirthPlace; person.Description = adminPersonModel.Description; person.FirstName = adminPersonModel.FirstName; person.LastName = adminPersonModel.LastName; await _applicationDbContext.SaveChangesAsync(); return(await Read(person.ID)); } return(null); }
public async Task <PersonModel> Create(AdminPersonModel adminPersonModel) { if (_personValidation.IsInputValid(adminPersonModel)) { var person = new Domain.Person { BirthDate = adminPersonModel.BirthDate.ToString("dd-MM-yyyy"), BirthPlace = adminPersonModel.BirthPlace, Description = adminPersonModel.Description, FirstName = adminPersonModel.FirstName, LastName = adminPersonModel.LastName }; _applicationDbContext.Persons.Add(person); await _applicationDbContext.SaveChangesAsync(); return(await Read(person.ID)); } return(null); }