Skip to content

Commit

Permalink
tests(content): Test missing slug message
Browse files Browse the repository at this point in the history
  • Loading branch information
jimwashbrook committed Aug 28, 2024
1 parent 9ca88d1 commit c4991ef
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public async Task<IActionResult> Index(string slug, string page = "", bool isPre
{
if (!ModelState.IsValid)
{
logger.LogError("Invalid model state received for {Slug}", slug);
logger.LogError("Invalid model state received for {Controller} {Action} with slug {Slug}", nameof(ContentController), nameof(Index), slug);
return RedirectToAction("error");

Check warning on line 37 in src/Dfe.ContentSupport.Web/Controllers/ContentController.cs

View workflow job for this annotation

GitHub Actions / Build and run unit tests

Define a constant instead of using this literal 'error' 4 times. (https://rules.sonarsource.com/csharp/RSPEC-1192)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@
using Dfe.ContentSupport.Web.Models.Mapped;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Logging;

namespace Dfe.ContentSupport.Web.Tests.Controllers;

public class ContentControllerTests
{
private readonly Mock<ILogger<ContentController>> _loggerMock = new();
private readonly Mock<IContentService> _contentServiceMock = new();

private ContentController GetController()
{
return new ContentController(_contentServiceMock.Object, new LayoutService(), new NullLogger<ContentController>());
return new ContentController(_contentServiceMock.Object, new LayoutService(), _loggerMock.Object);
}


Expand All @@ -37,6 +38,15 @@ public async Task Index_NoSlug_Returns_ErrorAction()

result.Should().BeOfType<RedirectToActionResult>();
(result as RedirectToActionResult)!.ActionName.Should().BeEquivalentTo("error");

_loggerMock.Verify(
x => x.Log(
LogLevel.Error,
It.IsAny<EventId>(),
It.Is<It.IsAnyType>((o, t) => o.ToString() != null && o.ToString()!.StartsWith($"No slug received for C&S {nameof(ContentController)} {nameof(sut.Index)}")),
It.IsAny<Exception>(),
It.IsAny<Func<It.IsAnyType, Exception?, string>>()),
Times.Once);
}

[Fact]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,21 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0"/>
<PackageReference Include="FluentAssertions" Version="7.0.0-alpha.3"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
<PackageReference Include="Moq" Version="4.20.70"/>
<PackageReference Include="xunit" Version="2.5.3"/>
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"/>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="FluentAssertions" Version="7.0.0-alpha.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Moq" Version="4.20.70" />
<PackageReference Include="xunit" Version="2.5.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
</ItemGroup>

<ItemGroup>
<Using Include="Xunit"/>
<Using Include="Xunit" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\Dfe.ContentSupport.Web\Dfe.ContentSupport.Web.csproj"/>
<ProjectReference Include="..\..\src\Dfe.ContentSupport.Web\Dfe.ContentSupport.Web.csproj" />
</ItemGroup>

</Project>

0 comments on commit c4991ef

Please sign in to comment.