/
renix
/
TravelGuide
Обзор
Документация
Войти
/
renix
/
TravelGuide
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/BackendTests/ControllersTests/CityControllerTests.cs
132 строки
4 KB
artem777764
CityController xUnix Tests
13 мар 2025, 22:50
13 мар 2025, 22:50
6ce2186
Код
Авторство
О чём код?
using back.Controllers; using back.DTOs.CityDTO; using back.Models; using back.Models.Entities; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace BackendTests.ControllersTest; public class CityControllerTests { private Context GetInMemoryContext(string dbName) { var options = new DbContextOptionsBuilder<Context>() .UseInMemoryDatabase(databaseName: dbName) .Options; return new Context(options); } [Fact] public void Get_ReturnsOkResult_WithCities() { // Arrange using var context = GetInMemoryContext("GetCitiesTestDb"); context.Cities.Add(new CityEntity {Name = "Москва"}); context.SaveChanges(); var controller = new CityController(context); // Act IActionResult result = controller.Get(); // Assert var okResult = Assert.IsType<OkObjectResult>(result); var cities = Assert.IsType<List<GetCityDTO>>(okResult.Value); Assert.Single(cities); Assert.Contains(cities, c => c.id == 1 && c.name == "Москва"); } [Fact] public void Create_ReturnsOkResult_WithCreatedCityId() { // Arrange using var context = GetInMemoryContext("CreateCityTestDb"); var controller = new CityController(context); var postCityDto = new PostCityDTO { name = "Санкт-Петербург" }; // Act IActionResult result = controller.Create(postCityDto); // Assert var okResult = Assert.IsType<OkObjectResult>(result); var jsonResult = okResult.Value; var id = jsonResult!.GetType().GetProperty("id")!.GetValue(jsonResult); Assert.NotNull(id); Assert.Equal(1, id); } [Fact] public void Delete_ReturnsNotFound_WhenCityDoesNotExist() { // Arrange using var context = GetInMemoryContext("DeleteCityNotFoundDb"); var controller = new CityController(context); var deleteCityDto = new DeleteCityDTO { Id = 999 }; // Act IActionResult result = controller.Delete(deleteCityDto); // Assert Assert.IsType<NotFoundResult>(result); } [Fact] public void Delete_ReturnsOk_WhenCityExists() { // Arrange using var context = GetInMemoryContext("DeleteCityExistsDb"); var city = new CityEntity { Name = "Казань" }; context.Cities.Add(city); context.SaveChanges(); var controller = new CityController(context); var deleteCityDto = new DeleteCityDTO { Id = city.Id }; // Act IActionResult result = controller.Delete(deleteCityDto); // Assert Assert.IsType<OkResult>(result); Assert.Null(context.Cities.Find(city.Id)); } [Fact] public void Update_ReturnsOk_WhenCityExists() { // Arrange using var context = GetInMemoryContext("UpdateCityExistsDb"); var city = new CityEntity { Name = "Новосибирск" }; context.Cities.Add(city); context.SaveChanges(); var controller = new CityController(context); var putCityDto = new PutCityDTO { Id = city.Id, Name = "Новосибирск обновлённый" }; // Act IActionResult result = controller.Update(putCityDto); // Assert Assert.IsType<OkResult>(result); var updatedCity = context.Cities.Find(city.Id); Assert.NotNull(updatedCity); Assert.Equal("Новосибирск обновлённый", updatedCity.Name); } [Fact] public void Update_ReturnsNotFound_WhenCityDoesNotExist() { // Arrange using var context = GetInMemoryContext("UpdateCityNotFoundDb"); var controller = new CityController(context); var putCityDto = new PutCityDTO { Id = 999, Name = "Город, которого нет" }; // Act IActionResult result = controller.Update(putCityDto); // Assert Assert.IsType<NotFoundResult>(result); } }