using System.Net; using FluentAssertions; using Microsoft.AspNetCore.Mvc.Testing; using Xunit; namespace SocialService.FunctionalTests.Controllers; /// /// EN: Functional tests for Admin API endpoints. /// VI: Functional tests cho các endpoints Admin API. /// public class AdminControllerTests : IClassFixture { private readonly HttpClient _client; public AdminControllerTests(CustomWebApplicationFactory factory) { _client = factory.CreateClient(new WebApplicationFactoryClientOptions { AllowAutoRedirect = false }); } #region Relationships Tests [Fact] public async Task GetAllRelationships_ReturnsOk() { // Act var response = await _client.GetAsync("/api/v1/admin/social/relationships"); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); } [Fact] public async Task GetAllRelationships_WithFilter_ReturnsOk() { // Act var response = await _client.GetAsync("/api/v1/admin/social/relationships?status=accepted&type=friendship"); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); } [Fact] public async Task GetRelationshipById_NotFound_Returns404() { // Arrange var id = Guid.NewGuid(); // Act var response = await _client.GetAsync($"/api/v1/admin/social/relationships/{id}"); // Assert response.StatusCode.Should().Be(HttpStatusCode.NotFound); } [Fact] public async Task DeleteRelationship_NotFound_Returns404() { // Arrange var id = Guid.NewGuid(); // Act var response = await _client.DeleteAsync($"/api/v1/admin/social/relationships/{id}"); // Assert response.StatusCode.Should().Be(HttpStatusCode.NotFound); } #endregion #region Blocks Tests [Fact] public async Task GetAllBlocks_ReturnsOk() { // Act var response = await _client.GetAsync("/api/v1/admin/social/blocks"); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); } [Fact] public async Task DeleteBlock_NotFound_Returns404() { // Arrange var id = Guid.NewGuid(); // Act var response = await _client.DeleteAsync($"/api/v1/admin/social/blocks/{id}"); // Assert response.StatusCode.Should().Be(HttpStatusCode.NotFound); } #endregion #region Statistics Tests [Fact] public async Task GetStatistics_ReturnsOk() { // Act var response = await _client.GetAsync("/api/v1/admin/social/statistics"); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); } #endregion }