/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Core.Tests/Controllers/RecycleBinControllerTests.cs
147 строк
5 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using FluentAssertions; using Gridient.Core.Controllers; using Gridient.Core.Features.RecycleBin.Commands; using Gridient.Core.Features.RecycleBin.Queries; using Gridient.Core.Models; using Gridient.Core.Tests.Controllers; using Gridient.Core.Tests.Helpers.TestDataBuilders; using MediatR; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; namespace Gridient.Core.Tests.Controllers { public class RecycleBinControllerTests : ControllerTestBase { private readonly Mock<IMediator> _mediatorMock; private readonly RecycleBinController _controller; public RecycleBinControllerTests() { _mediatorMock = new Mock<IMediator>(); _controller = new RecycleBinController(_mediatorMock.Object); SetupControllerContext(_controller, "admin"); } #region GetItems /// <summary> /// Проверяет, что метод GetItems возвращает элементы корзины с пагинацией. /// </summary> [Fact] public async Task GetItems_WithValidParameters_ShouldReturnOkWithItems() { // Arrange var skip = 0; var take = 10; var cancellationToken = CancellationToken.None; var expectedItems = new[] { RecycleBinServiceTestDataBuilder.CreateRecycleBin(listId: 1, itemId: 1), RecycleBinServiceTestDataBuilder.CreateRecycleBin(listId: 1, itemId: 2), RecycleBinServiceTestDataBuilder.CreateRecycleBin(listId: 1, itemId: 3) }; _mediatorMock .Setup(x => x.Send(It.Is<GetRecycleBinItemsQuery>(q => q.Skip == skip && q.Take == take), cancellationToken)) .ReturnsAsync(expectedItems); // Act var result = await _controller.GetItems(skip, take, cancellationToken); // Assert result.Should().BeOfType<OkObjectResult>(); var okResult = result as OkObjectResult; okResult!.Value.Should().BeEquivalentTo(expectedItems); _mediatorMock.Verify(x => x.Send(It.Is<GetRecycleBinItemsQuery>(q => q.Skip == skip && q.Take == take), cancellationToken), Times.Once); } #endregion #region RemoveAll /// <summary> /// Проверяет, что метод RemoveAll успешно удаляет все элементы из корзины. /// </summary> [Fact] public async Task RemoveAll_ShouldReturnOk() { // Arrange var cancellationToken = CancellationToken.None; _mediatorMock .Setup(x => x.Send(It.IsAny<RemoveAllCommand>(), cancellationToken)) .Returns(Task.CompletedTask); // Act var result = await _controller.RemoveAll(cancellationToken); // Assert result.Should().BeOfType<OkResult>(); _mediatorMock.Verify(x => x.Send(It.IsAny<RemoveAllCommand>(), cancellationToken), Times.Once); } #endregion #region Remove /// <summary> /// Проверяет, что метод Remove успешно удаляет указанные элементы из корзины. /// </summary> [Fact] public async Task Remove_WithValidRequest_ShouldReturnOk() { // Arrange var request = new RecycleBinRequest { Items = RecycleBinServiceTestDataBuilder.CreateRecycleBinItems(count: 2) }; var cancellationToken = CancellationToken.None; _mediatorMock .Setup(x => x.Send(It.Is<RemoveCommand>(c => c.Items == request.Items), cancellationToken)) .Returns(Task.CompletedTask); // Act var result = await _controller.Remove(request, cancellationToken); // Assert result.Should().BeOfType<OkResult>(); _mediatorMock.Verify(x => x.Send(It.Is<RemoveCommand>(c => c.Items == request.Items), cancellationToken), Times.Once); } #endregion #region Restore /// <summary> /// Проверяет, что метод Restore успешно восстанавливает указанные элементы из корзины. /// </summary> [Fact] public async Task Restore_WithValidRequest_ShouldReturnOk() { // Arrange var request = new RecycleBinRequest { Items = RecycleBinServiceTestDataBuilder.CreateRecycleBinItems(count: 2) }; var cancellationToken = CancellationToken.None; _mediatorMock .Setup(x => x.Send(It.Is<RestoreCommand>(c => c.Items == request.Items), cancellationToken)) .Returns(Task.CompletedTask); // Act var result = await _controller.Restore(request, cancellationToken); // Assert result.Should().BeOfType<OkResult>(); _mediatorMock.Verify(x => x.Send(It.Is<RestoreCommand>(c => c.Items == request.Items), cancellationToken), Times.Once); } #endregion } }