Files
2024-12-12 11:06:43 +01:00

66 lines
2.3 KiB
C#

using System.Collections.ObjectModel;
using Examine;
using Microsoft.Extensions.Logging;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Api.Management.Factories;
using Umbraco.Cms.Core;
using Umbraco.Cms.Infrastructure.Examine;
using Umbraco.Cms.Infrastructure.Services;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Cms.Api.Management.Factories;
[TestFixture]
public class IndexPresentationFactoryTests
{
[Test]
public void Create_Should_Set_HealthStatusMessage_On_Diagnostics_Failure()
{
var indexDiagnosticsFailureMessage = "something is wrong";
// arrange
var indexMock = new Mock<IIndex>();
indexMock
.SetupGet(index => index.Name)
.Returns("testIndex");
indexMock
.SetupGet(index => index.Searcher)
.Returns(Mock.Of<ISearcher>());
var indexDiagnosticsMock = new Mock<IIndexDiagnostics>();
indexDiagnosticsMock
.Setup(diagnostic => diagnostic.IsHealthy())
.Returns(Attempt<string?>.Fail(indexDiagnosticsFailureMessage));
indexDiagnosticsMock
.SetupGet(diagnostic => diagnostic.Metadata)
.Returns(ReadOnlyDictionary<string, object?>.Empty);
indexDiagnosticsMock
.Setup(diagnostic => diagnostic.GetFieldNames())
.Returns(Enumerable.Empty<string>());
var indexDiagnosticsFactoryMock = new Mock<IIndexDiagnosticsFactory>();
indexDiagnosticsFactoryMock
.Setup(f => f.Create(It.IsAny<IIndex>()))
.Returns(indexDiagnosticsMock.Object);
var indexRebuilderMock = new Mock<IIndexRebuilder>();
var indexRebuilderServiceMock = new Mock<IIndexingRebuilderService>();
indexRebuilderServiceMock
.Setup(rebuilder => rebuilder.IsRebuilding(It.IsAny<string>()))
.Returns(false);
var factory = new IndexPresentationFactory(
indexDiagnosticsFactoryMock.Object,
indexRebuilderMock.Object,
indexRebuilderServiceMock.Object,
Mock.Of<ILogger<IndexPresentationFactory>>());
// act
var responseModel = factory.Create(indexMock.Object);
// assert
Assert.AreEqual(indexDiagnosticsFailureMessage, responseModel.HealthStatus.Message);
}
}