Skip to content

Commit 64a491d

Browse files
authored
Tests for PackagesController.PreviewReadMe to produce proper JSON responses. (#6682)
1 parent 3b53ede commit 64a491d

1 file changed

Lines changed: 74 additions & 0 deletions

File tree

tests/NuGetGallery.Facts/Controllers/PackagesControllerFacts.cs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7009,5 +7009,79 @@ public async Task WhenCurrentUserIsAuthenticatedOwner_ReturnsOK(bool multiFactor
70097009
Assert.Equal((int)HttpStatusCode.OK, controller.Response.StatusCode);
70107010
}
70117011
}
7012+
7013+
public class ThePreviewReadMeMethod : TestContainer
7014+
{
7015+
[Fact]
7016+
public async Task ReturnsProperResponseModelWhenSucceeds()
7017+
{
7018+
var readmeService = new Mock<IReadMeService>();
7019+
var controller = CreateController(GetConfigurationService(),
7020+
readMeService: readmeService.Object);
7021+
7022+
var request = new ReadMeRequest();
7023+
7024+
readmeService
7025+
.Setup(rs => rs.HasReadMeSource(request))
7026+
.Returns(true);
7027+
7028+
const string html = "some HTML";
7029+
7030+
readmeService
7031+
.Setup(rs => rs.GetReadMeHtmlAsync(request, It.IsAny<Encoding>()))
7032+
.ReturnsAsync(html);
7033+
7034+
var result = await controller.PreviewReadMe(request);
7035+
7036+
var stringArray = Assert.IsType<string[]>(result.Data);
7037+
Assert.Single(stringArray);
7038+
Assert.Equal(html, stringArray[0]);
7039+
}
7040+
7041+
[Fact]
7042+
public async Task ReturnsProperResponseModelWhenNoReadme()
7043+
{
7044+
var readmeService = new Mock<IReadMeService>();
7045+
var controller = CreateController(GetConfigurationService(),
7046+
readMeService: readmeService.Object);
7047+
7048+
var request = new ReadMeRequest();
7049+
7050+
readmeService
7051+
.Setup(rs => rs.HasReadMeSource(request))
7052+
.Returns(false);
7053+
7054+
var result = await controller.PreviewReadMe(request);
7055+
7056+
var stringArray = Assert.IsType<string[]>(result.Data);
7057+
Assert.Single(stringArray);
7058+
Assert.Equal("There is no Markdown Documentation available to preview.", stringArray[0]);
7059+
}
7060+
7061+
[Fact]
7062+
public async Task ReturnsProperResponseModelWhenConversionFails()
7063+
{
7064+
var readmeService = new Mock<IReadMeService>();
7065+
var controller = CreateController(GetConfigurationService(),
7066+
readMeService: readmeService.Object);
7067+
7068+
var request = new ReadMeRequest();
7069+
7070+
readmeService
7071+
.Setup(rs => rs.HasReadMeSource(request))
7072+
.Returns(true);
7073+
7074+
const string exceptionMessage = "failure";
7075+
readmeService
7076+
.Setup(rs => rs.GetReadMeHtmlAsync(request, It.IsAny<Encoding>()))
7077+
.ThrowsAsync(new Exception(exceptionMessage));
7078+
7079+
var result = await controller.PreviewReadMe(request);
7080+
7081+
var stringArray = Assert.IsType<string[]>(result.Data);
7082+
Assert.Single(stringArray);
7083+
Assert.Contains(exceptionMessage, stringArray[0]);
7084+
}
7085+
}
70127086
}
70137087
}

0 commit comments

Comments
 (0)