Skip to content

Commit

Permalink
More details tests
Browse files Browse the repository at this point in the history
  • Loading branch information
cwetanow committed Mar 25, 2017
1 parent 3bb821f commit f81ee80
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions src/Logs.Web.Tests/Controllers/LogsControllerTests/DetailsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Linq;
using System.Web.Mvc;
using Logs.Authentication.Contracts;
using Logs.Common;
using Logs.Models;
using Logs.Services.Contracts;
using Logs.Web.Controllers;
Expand Down Expand Up @@ -105,6 +106,76 @@ public void TestDetails_ShouldCallAuthenticationProviderCurrentUserId(int id, st
mockedAuthenticationProvider.Verify(p => p.CurrentUserId, Times.Once);
}

[TestCase(1, "d547a40d-c45f-4c43-99de-0bfe9199ff95")]
public void TestDetails_ShouldCallAuthenticationProviderIsInRole(int id, string userId)
{
// Arrange
var user = new User { Id = userId };
var log = new TrainingLog { User = user };

var mockedLogService = new Mock<ILogService>();
mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny<int>())).Returns(log);

var mockedAuthenticationProvider = new Mock<IAuthenticationProvider>();
mockedAuthenticationProvider.Setup(p => p.CurrentUserId).Returns(userId);

var mockedFactory = new Mock<IViewModelFactory>();

var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
mockedFactory.Object);

// Act
controller.Details(id);

// Assert
mockedAuthenticationProvider.Verify(p => p.IsInRole(userId, Constants.AdministratorRoleName), Times.Once);
}

[TestCase(1, "d547a40d-c45f-4c43-99de-0bfe9199ff95", true)]
public void TestDetails_UserIsAdmin_ShouldSetCanEditToTrue(int id, string userId, bool isAuthenticated)
{
// Arrange
var user = new User { Id = userId };
var log = new TrainingLog { User = user };

var mockedLogService = new Mock<ILogService>();
mockedLogService.Setup(s => s.GetTrainingLogById(It.IsAny<int>())).Returns(log);

var mockedAuthenticationProvider = new Mock<IAuthenticationProvider>();
mockedAuthenticationProvider.Setup(p => p.CurrentUserId).Returns(userId);
mockedAuthenticationProvider.Setup(p => p.IsAuthenticated).Returns(isAuthenticated);
mockedAuthenticationProvider.Setup(p => p.IsInRole(It.IsAny<string>(), It.IsAny<string>())).Returns(true);

var mockedFactory = new Mock<IViewModelFactory>();

var controller = new LogsController(mockedLogService.Object, mockedAuthenticationProvider.Object,
mockedFactory.Object);

var canEdit = false;
mockedFactory.Setup(
f =>
f.CreateLogDetailsViewModel(It.IsAny<TrainingLog>(),
It.IsAny<bool>(),
It.IsAny<bool>(),
It.IsAny<bool>(),
It.IsAny<IPagedList<LogEntryViewModel>>()))
.Returns((TrainingLog l,
bool isAuth,
bool edit,
bool canVote,
IPagedList<LogEntryViewModel> e) =>
{
canEdit = true;
return new LogDetailsViewModel();
});

// Act
controller.Details(id);

// Assert
Assert.IsTrue(canEdit);
}

[TestCase(1, "d547a40d-c45f-4c43-99de-0bfe9199ff95", true)]
public void TestDetails_ShouldCallFactoryCreateLogDetailsViewModel(int id, string userId, bool isAuthenticated)
{
Expand Down

0 comments on commit f81ee80

Please sign in to comment.