Skip to content

Commit d421f4c

Browse files
committed
Added Moq dependency to the Tests project and added unit tests verifying validity of the PortfolioServiceImpl class
1 parent e41e674 commit d421f4c

File tree

5 files changed

+103
-2
lines changed

5 files changed

+103
-2
lines changed

Tests/Integration/Repository/MarketOrderTest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,12 @@ public void Dispose()
3737
public class MarketOrderRepositoryTest : IClassFixture<SqlKataMarketOrderRepositoryFixture>
3838
{
3939
private SqlKataMarketOrderRepositoryFixture _marketOrderRepositoryFixture;
40-
private readonly ITestOutputHelper _testOutputHelper;
4140

41+
// TODO test Delete method
4242
public MarketOrderRepositoryTest(SqlKataMarketOrderRepositoryFixture marketOrderRepositoryFixture,
4343
ITestOutputHelper testOutputHelper)
4444
{
4545
this._marketOrderRepositoryFixture = marketOrderRepositoryFixture;
46-
this._testOutputHelper = testOutputHelper;
4746
}
4847

4948
[Fact]

Tests/Integration/Repository/PortfolioEntryTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class PortfolioEntryRepositoryTest : IClassFixture<SqlKataPortfolioEntryR
3636
{
3737
private SqlKataPortfolioEntryRepositoryFixture _portfolioEntryRepositoryFixture;
3838

39+
// TODO test Delete method
3940
public PortfolioEntryRepositoryTest(SqlKataPortfolioEntryRepositoryFixture marketOrderRepositoryFixture)
4041
{
4142
this._portfolioEntryRepositoryFixture = marketOrderRepositoryFixture;

Tests/Integration/Repository/PortfolioTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class PortfolioTest : IClassFixture<SqlKataPortfolioRepositoryFixture>
3333
{
3434
private SqlKataPortfolioRepositoryFixture _portfolioRepositoryFixture;
3535

36+
// TODO test Delete method
3637
public PortfolioTest(SqlKataPortfolioRepositoryFixture portfolioRepositoryFixture)
3738
{
3839
this._portfolioRepositoryFixture = portfolioRepositoryFixture;

Tests/Tests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
<ItemGroup>
1010
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1" />
11+
<PackageReference Include="Moq" Version="4.16.1" />
1112
<PackageReference Include="xunit" Version="2.4.1" />
1213
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
1314
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -26,6 +27,7 @@
2627
<ItemGroup>
2728
<ProjectReference Include="..\CryptoStatsSource\CryptoStatsSource.csproj" />
2829
<ProjectReference Include="..\Repository\Repository.csproj" />
30+
<ProjectReference Include="..\Services\Services\Services.csproj" />
2931
<ProjectReference Include="..\Utils\Utils.csproj" />
3032
</ItemGroup>
3133

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
using System.Collections.Generic;
2+
using Model;
3+
using Moq;
4+
using Repository;
5+
using Services;
6+
using Xunit;
7+
8+
namespace Tests.Unit.Service
9+
{
10+
public class PortfolioRepositoryTest
11+
{
12+
[Fact]
13+
public void Create_CallsRepository()
14+
{
15+
// arrange
16+
var portfolioToBeAdded = new Portfolio("Foo", "Bar", Currency.Eur, -1);
17+
var repositoryMock = new Mock<IPortfolioRepository>();
18+
repositoryMock.Setup(x => x.Add(It.Is<Portfolio>(portfolio => portfolio == portfolioToBeAdded))).Returns(1);
19+
var service = new PortfolioServiceImpl(repositoryMock.Object);
20+
21+
// act
22+
var portfolio = service.CreatePortfolio("Foo", "Bar", Currency.Eur);
23+
24+
// assert
25+
Assert.Equal(portfolioToBeAdded with {Id = 1}, portfolio);
26+
}
27+
28+
[Fact]
29+
public void Get_CallsRepository()
30+
{
31+
// arrange
32+
var portfolioToBeAdded = new Portfolio("Foo", "Bar", Currency.Eur, 1);
33+
var repositoryMock = new Mock<IPortfolioRepository>();
34+
repositoryMock.Setup(x => x.Get(It.IsAny<int>())).Returns(portfolioToBeAdded);
35+
var service = new PortfolioServiceImpl(repositoryMock.Object);
36+
37+
// act
38+
var portfolio = service.GetPortfolio(1);
39+
40+
// assert
41+
Assert.Equal(portfolioToBeAdded, portfolio);
42+
}
43+
44+
[Fact]
45+
public void GetPortfolios_CallsRepository()
46+
{
47+
// arrange
48+
var portfolioList = new List<Portfolio>
49+
{
50+
new("My new portfolio", "Lorem ipsum dolor sit amet", Currency.Czk),
51+
new("My second portfolio", "Lorem ipsum dolor sit amet", Currency.Eur),
52+
new("My third portfolio", "Lorem ipsum dolor sit amet", Currency.Usd)
53+
};
54+
55+
var repositoryMock = new Mock<IPortfolioRepository>();
56+
repositoryMock.Setup(x => x.GetAll()).Returns(portfolioList);
57+
var service = new PortfolioServiceImpl(repositoryMock.Object);
58+
59+
// act
60+
var portfolioListFetched = service.GetPortfolios();
61+
62+
// assert
63+
Assert.Equal(portfolioList, portfolioListFetched);
64+
}
65+
66+
[Fact]
67+
public void Update_CallsRepository()
68+
{
69+
// arrange
70+
var portfolioToBeUpdated = new Portfolio("Foo", "Bar", Currency.Eur, 1);
71+
var repositoryMock = new Mock<IPortfolioRepository>();
72+
repositoryMock.Setup(x => x.Update(It.IsAny<Portfolio>())).Returns(true);
73+
var service = new PortfolioServiceImpl(repositoryMock.Object);
74+
75+
// act
76+
var updated = service.UpdatePortfolio(portfolioToBeUpdated);
77+
78+
// assert
79+
Assert.True(updated);
80+
}
81+
82+
[Fact]
83+
public void Delete_CallsRepository()
84+
{
85+
// arrange
86+
var portfolioToBeUpdated = new Portfolio("Foo", "Bar", Currency.Eur, 1);
87+
var repositoryMock = new Mock<IPortfolioRepository>();
88+
repositoryMock.Setup(x => x.Delete(It.IsAny<Portfolio>())).Returns(true);
89+
var service = new PortfolioServiceImpl(repositoryMock.Object);
90+
91+
// act
92+
var delete = service.DeletePortfolio(portfolioToBeUpdated);
93+
94+
// assert
95+
Assert.True(delete);
96+
}
97+
}
98+
}

0 commit comments

Comments
 (0)