Skip to content

Commit a198d30

Browse files
committed
Added DashboardService tests
1 parent 995df64 commit a198d30

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
using System;
2+
using System.Linq;
3+
using System.Threading.Tasks;
4+
using FluentAssertions;
5+
using LinkDotNet.Blog.Web.Pages.Admin;
6+
using LinkDotNet.Domain;
7+
using Xunit;
8+
9+
namespace LinkDotNet.Blog.IntegrationTests.Web.Pages.Admin.Dashboard
10+
{
11+
public class DashboardServiceTests : SqlDatabaseTestBase<UserRecord>
12+
{
13+
private readonly DashboardService sut;
14+
15+
public DashboardServiceTests()
16+
{
17+
sut = new DashboardService(Repository);
18+
}
19+
20+
[Fact]
21+
public async Task ShouldGetTotalUsers()
22+
{
23+
var record1 = new UserRecord
24+
{
25+
UserIdentifierHash = 2,
26+
DateTimeUtcClicked = DateTime.UtcNow,
27+
UrlClicked = string.Empty,
28+
};
29+
var record2 = new UserRecord
30+
{
31+
UserIdentifierHash = 1,
32+
UrlClicked = string.Empty,
33+
};
34+
var record3 = new UserRecord
35+
{
36+
UserIdentifierHash = 2,
37+
UrlClicked = string.Empty,
38+
};
39+
await Repository.StoreAsync(record1);
40+
await Repository.StoreAsync(record2);
41+
await Repository.StoreAsync(record3);
42+
43+
var data = await sut.GetDashboardDataAsync();
44+
45+
data.TotalAmountOfUsers.Should().Be(2);
46+
data.AmountOfUsersLast30Days.Should().Be(1);
47+
}
48+
49+
[Fact]
50+
public async Task ShouldGetTotalClicks()
51+
{
52+
var record1 = new UserRecord
53+
{
54+
DateTimeUtcClicked = DateTime.UtcNow,
55+
UrlClicked = "index",
56+
};
57+
var record2 = new UserRecord
58+
{
59+
UrlClicked = string.Empty,
60+
};
61+
var record3 = new UserRecord
62+
{
63+
UrlClicked = string.Empty,
64+
};
65+
await Repository.StoreAsync(record1);
66+
await Repository.StoreAsync(record2);
67+
await Repository.StoreAsync(record3);
68+
69+
var data = await sut.GetDashboardDataAsync();
70+
71+
data.TotalPageClicks.Should().Be(3);
72+
data.PageClicksLast30Days.Should().Be(1);
73+
}
74+
75+
[Fact]
76+
public async Task ShouldGetAboutMeClicks()
77+
{
78+
var record1 = new UserRecord
79+
{
80+
DateTimeUtcClicked = DateTime.UtcNow,
81+
UrlClicked = "AboutMe",
82+
};
83+
var record2 = new UserRecord
84+
{
85+
UrlClicked = string.Empty,
86+
};
87+
var record3 = new UserRecord
88+
{
89+
UrlClicked = "AboutMe",
90+
};
91+
await Repository.StoreAsync(record1);
92+
await Repository.StoreAsync(record2);
93+
await Repository.StoreAsync(record3);
94+
95+
var data = await sut.GetDashboardDataAsync();
96+
97+
data.TotalAboutMeClicks.Should().Be(2);
98+
data.AboutMeClicksLast30Days.Should().Be(1);
99+
}
100+
101+
[Fact]
102+
public async Task ShouldGetBlogPostClicks()
103+
{
104+
var record1 = new UserRecord
105+
{
106+
UrlClicked = "blogPost/1",
107+
};
108+
var record2 = new UserRecord
109+
{
110+
UrlClicked = "blogPost/2",
111+
};
112+
var record3 = new UserRecord
113+
{
114+
UrlClicked = "blogPost/1",
115+
};
116+
var record4 = new UserRecord
117+
{
118+
UrlClicked = "unrelated",
119+
};
120+
await Repository.StoreAsync(record1);
121+
await Repository.StoreAsync(record2);
122+
await Repository.StoreAsync(record3);
123+
await Repository.StoreAsync(record4);
124+
125+
var data = (await sut.GetDashboardDataAsync()).BlogPostVisitCount.ToList();
126+
127+
data.Count.Should().Be(2);
128+
data[0].Key.Should().Be("blogPost/1");
129+
data[0].Value.Should().Be(2);
130+
data[1].Key.Should().Be("blogPost/2");
131+
data[1].Value.Should().Be(1);
132+
}
133+
}
134+
}

0 commit comments

Comments
 (0)