Skip to content

Commit

Permalink
Write service create training log tests
Browse files Browse the repository at this point in the history
  • Loading branch information
cwetanow committed Mar 2, 2017
1 parent a7cf723 commit 8854bc9
Show file tree
Hide file tree
Showing 3 changed files with 231 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/Logs.Services.Tests/Logs.Services.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,22 @@
<HintPath>..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AspNet.Identity.EntityFramework, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Moq, Version=4.7.1.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.7.1\lib\net45\Moq.dll</HintPath>
<Private>True</Private>
Expand All @@ -43,6 +59,7 @@
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
Expand All @@ -52,6 +69,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="LogsServiceTests\CreateTrainingLogTests.cs" />
<Compile Include="LogsServiceTests\GetTrainingLogByIdTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
Expand All @@ -68,12 +86,17 @@
<Project>{42C607C4-8FB1-490C-AAD4-5AC9921F91FC}</Project>
<Name>Logs.Models</Name>
</ProjectReference>
<ProjectReference Include="..\Logs.Providers\Logs.Providers.csproj">
<Project>{FB8CF5FD-A33C-44D0-8517-A2D55CC7B470}</Project>
<Name>Logs.Providers</Name>
</ProjectReference>
<ProjectReference Include="..\Logs.Services\Logs.Services.csproj">
<Project>{4BD34CDB-E6CE-415C-95EF-5E04CC0A2FA0}</Project>
<Name>Logs.Services</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
Expand Down
205 changes: 205 additions & 0 deletions src/Logs.Services.Tests/LogsServiceTests/CreateTrainingLogTests.cs
Original file line number Diff line number Diff line change
@@ -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<IRepository<TrainingLog>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();
var mockedLogFactory = new Mock<ITrainingLogFactory>();
var mockedUserService = new Mock<IUserService>();
var mockedDateTimeProvider = new Mock<IDateTimeProvider>();

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<IRepository<TrainingLog>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();
var mockedLogFactory = new Mock<ITrainingLogFactory>();
var mockedUserService = new Mock<IUserService>();
var mockedDateTimeProvider = new Mock<IDateTimeProvider>();

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<User>();

var mockedLogRepository = new Mock<IRepository<TrainingLog>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();
var mockedLogFactory = new Mock<ITrainingLogFactory>();

var currentDate = new DateTime();

var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
mockedDateTimeProvider.Setup(p => p.GetCurrenTime()).Returns(currentDate);

var mockedUserService = new Mock<IUserService>();
mockedUserService.Setup(s => s.GetUserById(It.IsAny<string>())).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<User>();

var mockedLogRepository = new Mock<IRepository<TrainingLog>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();

var mockedLog = new Mock<TrainingLog>();

var mockedLogFactory = new Mock<ITrainingLogFactory>();
mockedLogFactory.Setup(
f => f.CreateTrainingLog(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<DateTime>(),
It.IsAny<User>())).Returns(mockedLog.Object);

var currentDate = new DateTime();

var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
mockedDateTimeProvider.Setup(p => p.GetCurrenTime()).Returns(currentDate);

var mockedUserService = new Mock<IUserService>();
mockedUserService.Setup(s => s.GetUserById(It.IsAny<string>())).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<User>();

var mockedLogRepository = new Mock<IRepository<TrainingLog>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();

var mockedLog = new Mock<TrainingLog>();

var mockedLogFactory = new Mock<ITrainingLogFactory>();
mockedLogFactory.Setup(
f => f.CreateTrainingLog(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<DateTime>(),
It.IsAny<User>())).Returns(mockedLog.Object);

var currentDate = new DateTime();

var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
mockedDateTimeProvider.Setup(p => p.GetCurrenTime()).Returns(currentDate);

var mockedUserService = new Mock<IUserService>();
mockedUserService.Setup(s => s.GetUserById(It.IsAny<string>())).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<User>();

var mockedLogRepository = new Mock<IRepository<TrainingLog>>();
var mockedUnitOfWork = new Mock<IUnitOfWork>();

var mockedLog = new Mock<TrainingLog>();

var mockedLogFactory = new Mock<ITrainingLogFactory>();
mockedLogFactory.Setup(
f => f.CreateTrainingLog(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<DateTime>(),
It.IsAny<User>())).Returns(mockedLog.Object);

var currentDate = new DateTime();

var mockedDateTimeProvider = new Mock<IDateTimeProvider>();
mockedDateTimeProvider.Setup(p => p.GetCurrenTime()).Returns(currentDate);

var mockedUserService = new Mock<IUserService>();
mockedUserService.Setup(s => s.GetUserById(It.IsAny<string>())).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);
}
}
}
3 changes: 3 additions & 0 deletions src/Logs.Services.Tests/packages.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Castle.Core" version="4.0.0" targetFramework="net452" />
<package id="EntityFramework" version="6.1.3" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net452" />
<package id="Moq" version="4.7.1" targetFramework="net452" />
<package id="NUnit" version="3.6.1" targetFramework="net452" />
<package id="NUnit.ConsoleRunner" version="3.6.0" targetFramework="net452" />
Expand Down

0 comments on commit 8854bc9

Please sign in to comment.