94 lines
2.7 KiB
C#
94 lines
2.7 KiB
C#
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
using NSubstitute;
|
|||
|
using NSubstitute.ReturnsExtensions;
|
|||
|
using NUnit.Framework;
|
|||
|
using YPS.Beer.Controllers;
|
|||
|
using YPS.Beer.Services;
|
|||
|
|
|||
|
namespace YPS.Beer.Tests.Controllers;
|
|||
|
|
|||
|
public class BeerControllerTests
|
|||
|
{
|
|||
|
[Test]
|
|||
|
public async Task GetBeer_ReturnsNotFound_WhenNoBeerFound()
|
|||
|
{
|
|||
|
var mockService = Substitute.For<IPunkService>();
|
|||
|
mockService.GetBeer(1).ReturnsNull();
|
|||
|
|
|||
|
var controller = new BeerController(mockService);
|
|||
|
|
|||
|
var result = await controller.GetBeer(1);
|
|||
|
|
|||
|
Assert.That(result, Is.TypeOf<NotFoundResult>());
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public async Task GetBeer_ReturnsBeer_WhenBeerFound()
|
|||
|
{
|
|||
|
var mockService = Substitute.For<IPunkService>();
|
|||
|
mockService.GetBeer(1).Returns(new Models.Beer
|
|||
|
{
|
|||
|
Id = 1,
|
|||
|
Name = "Some beer!",
|
|||
|
});
|
|||
|
|
|||
|
var controller = new BeerController(mockService);
|
|||
|
|
|||
|
var result = await controller.GetBeer(1);
|
|||
|
var resultObject = result as OkObjectResult;
|
|||
|
var resultValue = resultObject?.Value as Models.Beer;
|
|||
|
|
|||
|
Assert.That(resultValue, Is.Not.Null);
|
|||
|
Assert.That(resultValue.Id, Is.EqualTo(1));
|
|||
|
Assert.That(resultValue.Name, Is.EqualTo("Some beer!"));
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public async Task SearchBeer_ReturnsEmptyArray_WhenNoBeerFound()
|
|||
|
{
|
|||
|
var mockService = Substitute.For<IPunkService>();
|
|||
|
mockService.FindBeers("asdf").Returns(Array.Empty<Models.Beer>());
|
|||
|
|
|||
|
var controller = new BeerController(mockService);
|
|||
|
|
|||
|
var result = await controller.SearchBeer("asdf");
|
|||
|
var resultObject = result as OkObjectResult;
|
|||
|
var resultValue = resultObject?.Value as Models.Beer[];
|
|||
|
|
|||
|
Assert.That(resultValue, Is.Not.Null);
|
|||
|
Assert.That(resultValue, Is.Empty);
|
|||
|
}
|
|||
|
|
|||
|
[Test]
|
|||
|
public async Task SearchBeer_ReturnsBeers_WhenBeersFound()
|
|||
|
{
|
|||
|
var mockService = Substitute.For<IPunkService>();
|
|||
|
mockService.FindBeers("asdf").Returns(new []
|
|||
|
{
|
|||
|
new Models.Beer
|
|||
|
{
|
|||
|
Id = 1,
|
|||
|
Name = "First beer!",
|
|||
|
},
|
|||
|
new Models.Beer
|
|||
|
{
|
|||
|
Id = 14,
|
|||
|
Name = "Another beer!",
|
|||
|
},
|
|||
|
new Models.Beer
|
|||
|
{
|
|||
|
Id = 45,
|
|||
|
Name = "IPA",
|
|||
|
},
|
|||
|
});
|
|||
|
|
|||
|
var controller = new BeerController(mockService);
|
|||
|
|
|||
|
var result = await controller.SearchBeer("asdf");
|
|||
|
var resultObject = result as OkObjectResult;
|
|||
|
var resultValue = resultObject?.Value as Models.Beer[];
|
|||
|
|
|||
|
Assert.That(resultValue, Is.Not.Null);
|
|||
|
Assert.That(resultValue, Has.Length.EqualTo(3));
|
|||
|
}
|
|||
|
}
|