From 8854bc9a6cb5d9d4e914ee5c81d63170c4c96fe7 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 2 Mar 2017 15:54:39 +0200 Subject: [PATCH] Write service create training log tests --- .../Logs.Services.Tests.csproj | 23 ++ .../CreateTrainingLogTests.cs | 205 ++++++++++++++++++ src/Logs.Services.Tests/packages.config | 3 + 3 files changed, 231 insertions(+) create mode 100644 src/Logs.Services.Tests/LogsServiceTests/CreateTrainingLogTests.cs diff --git a/src/Logs.Services.Tests/Logs.Services.Tests.csproj b/src/Logs.Services.Tests/Logs.Services.Tests.csproj index 1e091b3..37d9a2d 100644 --- a/src/Logs.Services.Tests/Logs.Services.Tests.csproj +++ b/src/Logs.Services.Tests/Logs.Services.Tests.csproj @@ -34,6 +34,22 @@ ..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll True + + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll + True + + + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll + True + + + ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll + True + + + ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll + True + ..\packages\Moq.4.7.1\lib\net45\Moq.dll True @@ -43,6 +59,7 @@ True + @@ -52,6 +69,7 @@ + @@ -68,12 +86,17 @@ {42C607C4-8FB1-490C-AAD4-5AC9921F91FC} Logs.Models + + {FB8CF5FD-A33C-44D0-8517-A2D55CC7B470} + Logs.Providers + {4BD34CDB-E6CE-415C-95EF-5E04CC0A2FA0} Logs.Services + diff --git a/src/Logs.Services.Tests/LogsServiceTests/CreateTrainingLogTests.cs b/src/Logs.Services.Tests/LogsServiceTests/CreateTrainingLogTests.cs new file mode 100644 index 0000000..a391503 --- /dev/null +++ b/src/Logs.Services.Tests/LogsServiceTests/CreateTrainingLogTests.cs @@ -0,0 +1,205 @@ +using System; +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.LogsServiceTests +{ + [TestFixture] + public class CreateTrainingLogTests + { + [TestCase("log", "test", "abcd-1234")] + public void TestCreateTrainingLog_ShouldCallUserServiceGetById(string name, string description, string userId) + { + // Arrange + var mockedLogRepository = new Mock>(); + var mockedUnitOfWork = new Mock(); + var mockedLogFactory = new Mock(); + var mockedUserService = new Mock(); + var mockedDateTimeProvider = new Mock(); + + var service = new LogsService(mockedLogRepository.Object, + mockedUnitOfWork.Object, + mockedLogFactory.Object, + mockedUserService.Object, + mockedDateTimeProvider.Object); + + // Act + service.CreateTrainingLog(name, description, userId); + + // Assert + mockedUserService.Verify(s => s.GetUserById(userId), Times.Once); + } + + [TestCase("log", "test", "abcd-1234")] + public void TestCreateTrainingLog_ShouldCallProviderGetCurrentTime(string name, string description, string userId) + { + // Arrange + var mockedLogRepository = new Mock>(); + var mockedUnitOfWork = new Mock(); + var mockedLogFactory = new Mock(); + var mockedUserService = new Mock(); + var mockedDateTimeProvider = new Mock(); + + var service = new LogsService(mockedLogRepository.Object, + mockedUnitOfWork.Object, + mockedLogFactory.Object, + mockedUserService.Object, + mockedDateTimeProvider.Object); + + // Act + service.CreateTrainingLog(name, description, userId); + + // Assert + mockedDateTimeProvider.Verify(p => p.GetCurrenTime(), Times.Once); + } + + [TestCase("log", "test", "abcd-1234")] + public void TestCreateTrainingLog_ShouldCallLogFactoryCreateTrainingLog(string name, string description, string userId) + { + // Arrange + var mockedUser = new Mock(); + + var mockedLogRepository = new Mock>(); + var mockedUnitOfWork = new Mock(); + var mockedLogFactory = new Mock(); + + var currentDate = new DateTime(); + + var mockedDateTimeProvider = new Mock(); + mockedDateTimeProvider.Setup(p => p.GetCurrenTime()).Returns(currentDate); + + var mockedUserService = new Mock(); + mockedUserService.Setup(s => s.GetUserById(It.IsAny())).Returns(mockedUser.Object); + + var service = new LogsService(mockedLogRepository.Object, + mockedUnitOfWork.Object, + mockedLogFactory.Object, + mockedUserService.Object, + mockedDateTimeProvider.Object); + + // Act + service.CreateTrainingLog(name, description, userId); + + // Assert + mockedLogFactory.Verify(f => f.CreateTrainingLog(name, description, currentDate, mockedUser.Object)); + } + + [TestCase("log", "test", "abcd-1234")] + public void TestCreateTrainingLog_ShouldCallRepositoryAddCorrectly(string name, string description, string userId) + { + // Arrange + var mockedUser = new Mock(); + + var mockedLogRepository = new Mock>(); + var mockedUnitOfWork = new Mock(); + + var mockedLog = new Mock(); + + var mockedLogFactory = new Mock(); + mockedLogFactory.Setup( + f => f.CreateTrainingLog(It.IsAny(), It.IsAny(), It.IsAny(), + It.IsAny())).Returns(mockedLog.Object); + + var currentDate = new DateTime(); + + var mockedDateTimeProvider = new Mock(); + mockedDateTimeProvider.Setup(p => p.GetCurrenTime()).Returns(currentDate); + + var mockedUserService = new Mock(); + mockedUserService.Setup(s => s.GetUserById(It.IsAny())).Returns(mockedUser.Object); + + var service = new LogsService(mockedLogRepository.Object, + mockedUnitOfWork.Object, + mockedLogFactory.Object, + mockedUserService.Object, + mockedDateTimeProvider.Object); + + // Act + service.CreateTrainingLog(name, description, userId); + + // Assert + mockedLogRepository.Verify(r => r.Add(mockedLog.Object), Times.Once); + } + + [TestCase("log", "test", "abcd-1234")] + public void TestCreateTrainingLog_ShouldCallUnitOfWorkCommit(string name, string description, string userId) + { + // Arrange + var mockedUser = new Mock(); + + var mockedLogRepository = new Mock>(); + var mockedUnitOfWork = new Mock(); + + var mockedLog = new Mock(); + + var mockedLogFactory = new Mock(); + mockedLogFactory.Setup( + f => f.CreateTrainingLog(It.IsAny(), It.IsAny(), It.IsAny(), + It.IsAny())).Returns(mockedLog.Object); + + var currentDate = new DateTime(); + + var mockedDateTimeProvider = new Mock(); + mockedDateTimeProvider.Setup(p => p.GetCurrenTime()).Returns(currentDate); + + var mockedUserService = new Mock(); + mockedUserService.Setup(s => s.GetUserById(It.IsAny())).Returns(mockedUser.Object); + + var service = new LogsService(mockedLogRepository.Object, + mockedUnitOfWork.Object, + mockedLogFactory.Object, + mockedUserService.Object, + mockedDateTimeProvider.Object); + + // Act + service.CreateTrainingLog(name, description, userId); + + // Assert + mockedUnitOfWork.Verify(u => u.Commit(), Times.Once); + } + + + + [TestCase("log", "test", "abcd-1234")] + public void TestCreateTrainingLog_ShouldReturnCorrectly(string name, string description, string userId) + { + // Arrange + var mockedUser = new Mock(); + + var mockedLogRepository = new Mock>(); + var mockedUnitOfWork = new Mock(); + + var mockedLog = new Mock(); + + var mockedLogFactory = new Mock(); + mockedLogFactory.Setup( + f => f.CreateTrainingLog(It.IsAny(), It.IsAny(), It.IsAny(), + It.IsAny())).Returns(mockedLog.Object); + + var currentDate = new DateTime(); + + var mockedDateTimeProvider = new Mock(); + mockedDateTimeProvider.Setup(p => p.GetCurrenTime()).Returns(currentDate); + + var mockedUserService = new Mock(); + mockedUserService.Setup(s => s.GetUserById(It.IsAny())).Returns(mockedUser.Object); + + var service = new LogsService(mockedLogRepository.Object, + mockedUnitOfWork.Object, + mockedLogFactory.Object, + mockedUserService.Object, + mockedDateTimeProvider.Object); + + // Act + var result = service.CreateTrainingLog(name, description, userId); + + // Assert + Assert.AreSame(mockedLog.Object, result); + } + } +} diff --git a/src/Logs.Services.Tests/packages.config b/src/Logs.Services.Tests/packages.config index 36688ee..3b279cc 100644 --- a/src/Logs.Services.Tests/packages.config +++ b/src/Logs.Services.Tests/packages.config @@ -1,6 +1,9 @@  + + +