Skip to content

Commit

Permalink
DeleteComment tests
Browse files Browse the repository at this point in the history
  • Loading branch information
cwetanow committed Apr 29, 2017
1 parent 67e6dc8 commit 86019af
Show file tree
Hide file tree
Showing 3 changed files with 191 additions and 0 deletions.
188 changes: 188 additions & 0 deletions src/Logs.Services.Tests/CommentServiceTests/DeleteCommentTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
using Logs.Data.Contracts;
using Logs.Factories;
using Logs.Models;
using Logs.Providers.Contracts;
using Logs.Services.Contracts;
using Moq;
using NUnit.Framework;

namespace Logs.Services.Tests.CommentServiceTests
{
[TestFixture]
public class DeleteCommentTests
{
[TestCase(1)]
[TestCase(12)]
public void TestDeleteComment_ShouldCallRepositoryGetById(int commentId)
{
// Arrange
var mockedLogService = new Mock<ILogService>();
var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
var mockedUserService = new Mock<IUserService>();
var mockedCommentFactory = new Mock<ICommentFactory>();
var mockedRepository = new Mock<IRepository<Comment>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();

var service = new CommentService(mockedLogService.Object,
mockedDateTimeProvider.Object,
mockedUserService.Object,
mockedCommentFactory.Object,
mockedRepository.Object,
mockedUnitOfWork.Object);

// Act
service.DeleteComment(commentId);

// Assert
mockedRepository.Verify(r => r.GetById(commentId), Times.Once);
}

[TestCase(1)]
[TestCase(12)]
public void TestDeleteComment_RepositoryReturnsNull_ShouldNotCallRepositoryDelete(int commentId)
{
// Arrange
var mockedLogService = new Mock<ILogService>();
var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
var mockedUserService = new Mock<IUserService>();
var mockedCommentFactory = new Mock<ICommentFactory>();
var mockedRepository = new Mock<IRepository<Comment>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();

var service = new CommentService(mockedLogService.Object,
mockedDateTimeProvider.Object,
mockedUserService.Object,
mockedCommentFactory.Object,
mockedRepository.Object,
mockedUnitOfWork.Object);

// Act
service.DeleteComment(commentId);

// Assert
mockedRepository.Verify(r => r.Delete(It.IsAny<Comment>()), Times.Never);
}

[TestCase(1)]
[TestCase(12)]
public void TestDeleteComment_RepositoryReturnsNull_ShouldReturnFalse(int commentId)
{
// Arrange
var mockedLogService = new Mock<ILogService>();
var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
var mockedUserService = new Mock<IUserService>();
var mockedCommentFactory = new Mock<ICommentFactory>();
var mockedRepository = new Mock<IRepository<Comment>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();

var service = new CommentService(mockedLogService.Object,
mockedDateTimeProvider.Object,
mockedUserService.Object,
mockedCommentFactory.Object,
mockedRepository.Object,
mockedUnitOfWork.Object);

// Act
var result = service.DeleteComment(commentId);

// Assert
Assert.IsFalse(result);
}

[TestCase(1)]
[TestCase(12)]
public void TestDeleteComment_RepositoryReturnsComment_ShouldCallRepositoryDelete(int commentId)
{
// Arrange
var mockedLogService = new Mock<ILogService>();
var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
var mockedUserService = new Mock<IUserService>();
var mockedCommentFactory = new Mock<ICommentFactory>();

var comment = new Comment();

var mockedRepository = new Mock<IRepository<Comment>>();
mockedRepository.Setup(r => r.GetById(It.IsAny<object>()))
.Returns(comment);

var mockedUnitOfWork = new Mock<IUnitOfWork>();

var service = new CommentService(mockedLogService.Object,
mockedDateTimeProvider.Object,
mockedUserService.Object,
mockedCommentFactory.Object,
mockedRepository.Object,
mockedUnitOfWork.Object);

// Act
service.DeleteComment(commentId);

// Assert
mockedRepository.Verify(r => r.Delete(comment), Times.Once);
}

[TestCase(1)]
[TestCase(12)]
public void TestDeleteComment_RepositoryReturnsComment_ShouldCallUnitOfWorkCommit(int commentId)
{
// Arrange
var mockedLogService = new Mock<ILogService>();
var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
var mockedUserService = new Mock<IUserService>();
var mockedCommentFactory = new Mock<ICommentFactory>();

var comment = new Comment();

var mockedRepository = new Mock<IRepository<Comment>>();
mockedRepository.Setup(r => r.GetById(It.IsAny<object>()))
.Returns(comment);

var mockedUnitOfWork = new Mock<IUnitOfWork>();

var service = new CommentService(mockedLogService.Object,
mockedDateTimeProvider.Object,
mockedUserService.Object,
mockedCommentFactory.Object,
mockedRepository.Object,
mockedUnitOfWork.Object);

// Act
service.DeleteComment(commentId);

// Assert
mockedUnitOfWork.Verify(u => u.Commit(), Times.Once);
}

[TestCase(1)]
[TestCase(12)]
public void TestDeleteComment_RepositoryReturnsComment_ShouldReturnTrue(int commentId)
{
// Arrange
var mockedLogService = new Mock<ILogService>();
var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
var mockedUserService = new Mock<IUserService>();
var mockedCommentFactory = new Mock<ICommentFactory>();

var comment = new Comment();

var mockedRepository = new Mock<IRepository<Comment>>();
mockedRepository.Setup(r => r.GetById(It.IsAny<object>()))
.Returns(comment);

var mockedUnitOfWork = new Mock<IUnitOfWork>();

var service = new CommentService(mockedLogService.Object,
mockedDateTimeProvider.Object,
mockedUserService.Object,
mockedCommentFactory.Object,
mockedRepository.Object,
mockedUnitOfWork.Object);

// Act
var result = service.DeleteComment(commentId);

// Assert
Assert.IsTrue(result);
}
}
}
1 change: 1 addition & 0 deletions src/Logs.Services.Tests/Logs.Services.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
<ItemGroup>
<Compile Include="CommentServiceTests\AddCommentToLogTests.cs" />
<Compile Include="CommentServiceTests\ConstructorTests.cs" />
<Compile Include="CommentServiceTests\DeleteCommentTests.cs" />
<Compile Include="CommentServiceTests\EditCommentTests.cs" />
<Compile Include="EntryServiceTests\AddEntryToLogTests.cs" />
<Compile Include="EntryServiceTests\ConstructorTests.cs" />
Expand Down
2 changes: 2 additions & 0 deletions src/Logs.Services/CommentService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ public bool DeleteComment(int commentId)
{
this.commentRepository.Delete(comment);
this.unitOfWork.Commit();

return true;
}

return false;
Expand Down

0 comments on commit 86019af

Please sign in to comment.