meilisearch.NET/meilisearch.NET.Tests/MeilisearchServiceTests.cs
Damien ef6ff45f40
All checks were successful
build-packages / run-tests (push) Successful in 6m16s
build-packages / nuget-package (push) Successful in 6m26s
feat!:comments for documentation in IDE
2025-03-01 14:43:13 -05:00

211 lines
6.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Meilisearch;
using meilisearch.NET.Interfaces;
using meilisearch.NET.Models;
using meilisearch.NET.Services.DocumentManagement;
using meilisearch.NET.Services.IndexManagement;
using meilisearch.NET.Services.ProcessManagement;
using Moq;
using Xunit;
namespace meilisearch.NET.Tests
{
public class MeiliSearchServiceTests
{
private readonly Mock<IProcessManager> _mockProcessManager;
private readonly Mock<IIndexManager> _mockIndexManager;
private readonly Mock<IDocumentManager> _mockDocumentManager;
private readonly Mock<MeilisearchClient> _mockClient;
private readonly MeiliSearchService _service;
public MeiliSearchServiceTests()
{
_mockProcessManager = new Mock<IProcessManager>();
_mockIndexManager = new Mock<IIndexManager>();
_mockDocumentManager = new Mock<IDocumentManager>();
_service = new MeiliSearchService(
_mockProcessManager.Object,
_mockIndexManager.Object,
_mockDocumentManager.Object
);
}
[Fact]
public async Task Start_CallsProcessManagerStartProcess()
{
// Arrange
_mockProcessManager.Setup(x => x.StartProcess()).Returns(Task.CompletedTask);
// Act
await _service.Start();
// Assert
_mockProcessManager.Verify(x => x.StartProcess(), Times.Exactly(2));
}
[Fact]
public void GetTotalStorageUsage_CallsIndexManagerWithCorrectParameters()
{
// Arrange
const bool useCompressedSize = true;
const long expectedUsage = 1000L;
_mockIndexManager.Setup(x => x.GetTotalStorageUsage(useCompressedSize)).Returns(expectedUsage);
// Act
var result = _service.GetTotalStorageUsage(useCompressedSize);
// Assert
Assert.Equal(expectedUsage, result);
_mockIndexManager.Verify(x => x.GetTotalStorageUsage(useCompressedSize), Times.Once);
}
[Fact]
public void GetIndexStorageUsage_CallsIndexManagerWithCorrectParameters()
{
// Arrange
const string indexName = "testIndex";
const bool useCompressedSize = true;
const long expectedUsage = 500L;
_mockIndexManager.Setup(x => x.GetIndexStorageUsage(indexName, useCompressedSize)).Returns(expectedUsage);
// Act
var result = _service.GetIndexStorageUsage(indexName, useCompressedSize);
// Assert
Assert.Equal(expectedUsage, result);
_mockIndexManager.Verify(x => x.GetIndexStorageUsage(indexName, useCompressedSize), Times.Once);
}
[Fact]
public void Stop_CallsProcessManagerStopProcess()
{
// Act
_service.Stop();
// Assert
_mockProcessManager.Verify(x => x.StopProcess(), Times.Once);
}
[Fact]
public void IsRunning_ReturnsProcessManagerStatus()
{
// Arrange
const bool expectedStatus = true;
_mockProcessManager.Setup(x => x.IsProcessRunning()).Returns(expectedStatus);
// Act
var result = _service.IsRunning();
// Assert
Assert.Equal(expectedStatus, result);
_mockProcessManager.Verify(x => x.IsProcessRunning(), Times.Once);
}
[Fact]
public async Task SetIndexEnabled_CallsIndexManagerWithCorrectParameters()
{
// Arrange
const string indexName = "testIndex";
const bool enabled = true;
_mockIndexManager.Setup(x => x.SetIndexEnabledAsync(indexName, enabled)).Returns(Task.CompletedTask);
// Act
await _service.SetIndexEnabled(indexName, enabled);
// Assert
_mockIndexManager.Verify(x => x.SetIndexEnabledAsync(indexName, enabled), Times.Once);
}
[Fact]
public void GetResourceUsage_ReturnsProcessManagerStats()
{
// Arrange
var expectedStats = new ProcessResourceStats();
_mockProcessManager.Setup(x => x.GetResourceUsage()).Returns(expectedStats);
// Act
var result = _service.GetResourceUsage();
// Assert
Assert.Same(expectedStats, result);
_mockProcessManager.Verify(x => x.GetResourceUsage(), Times.Once);
}
[Fact]
public async Task GetAllIndexes_ReturnsIndexManagerResults()
{
// Arrange
var expectedIndexes = new List<string> { "index1", "index2" };
_mockIndexManager.Setup(x => x.GetAllIndexes()).ReturnsAsync(expectedIndexes);
// Act
var result = await _service.GetAllIndexes();
// Assert
Assert.Equal(expectedIndexes, result);
_mockIndexManager.Verify(x => x.GetAllIndexes(), Times.Once);
}
[Fact]
public async Task CreateIndex_CallsIndexManagerWithCorrectParameters()
{
// Arrange
const string indexName = "testIndex";
_mockIndexManager.Setup(x => x.CreateIndexAsync<TestDocument>(indexName)).Returns(Task.CompletedTask);
// Act
await _service.CreateIndex<TestDocument>(indexName);
// Assert
_mockIndexManager.Verify(x => x.CreateIndexAsync<TestDocument>(indexName), Times.Once);
}
[Fact]
public async Task DeleteIndex_CallsIndexManagerWithCorrectParameters()
{
// Arrange
const string indexName = "testIndex";
_mockIndexManager.Setup(x => x.DeleteIndexAsync(indexName)).Returns(Task.CompletedTask);
// Act
await _service.DeleteIndex(indexName);
// Assert
_mockIndexManager.Verify(x => x.DeleteIndexAsync(indexName), Times.Once);
}
[Fact]
public void AddDocument_CallsDocumentManagerWithCorrectParameters()
{
// Arrange
const string repositoryId = "testRepo";
var document = new TestDocument();
const bool autoCommit = true;
// Act
_service.AddDocument(repositoryId, document, autoCommit);
// Assert
_mockDocumentManager.Verify(x => x.AddDocument(repositoryId, document, autoCommit), Times.Once);
}
[Fact]
public void Dispose_CallsProcessManagerDispose()
{
// Act
_service.Dispose();
// Assert
_mockProcessManager.Verify(x => x.Dispose(), Times.Once);
}
// Helper class for testing
private class TestDocument : IDocument
{
public Guid Id { get; set; }
}
}
}