This repository was archived by the owner on May 24, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathLastTossQueryHandlerTest.cs
127 lines (110 loc) · 3.92 KB
/
LastTossQueryHandlerTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using MediatR;
using Raven.Client.Documents.Session;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Toss.Server.Controllers;
using Toss.Server.Data;
using Toss.Server.Services;
using Toss.Shared.Tosses;
using Toss.Tests.Infrastructure;
using Xunit;
namespace Toss.Tests.Server.Models.Tosses
{
public class LastTossQueryHandlerTest : BaseTest
{
[Fact]
public async Task last_returns_last_items_from_table_ordered_desc_by_createdon()
{
for (int i = 0; i < 11; i++)
{
FakeNow.Current = new DateTime(2017, 12, 31).AddDays(-i);
await _mediator.Send(new TossCreateCommand()
{
Content = "lorem #ipsum"
});
}
await SaveAndWait();
var res = await _mediator.Send(new TossLastQuery("ipsum"));
Assert.Equal(10, res.Count());
Assert.Null(res.FirstOrDefault(r => r.CreatedOn < new DateTime(2017, 12, 31).AddDays(-10)));
}
[Fact]
public async Task returns_last_toss_paginated()
{
for (int i = 0; i < 31; i++)
{
FakeNow.Current = new DateTime(2017, 12, 31).AddDays(-i);
await _mediator.Send(new TossCreateCommand()
{
Content = "num"+i+" #test"
});
}
await SaveAndWait();
var res = await _mediator.Send(new TossLastQuery("test",1 ));
Assert.Equal(10, res.Count());
foreach(var toss in res)
{
Assert.InRange(toss.CreatedOn, new DateTime(2017, 12, 12), new DateTime(2017, 12, 21));
}
}
[Fact]
public async Task last_returns_toss_matching_hashtag()
{
for (int i = 0; i < 3; i++)
{
await _mediator.Send(new TossCreateCommand()
{
Content = "lorem #ipsum #toto num" + i
});
}
await _mediator.Send(new TossCreateCommand()
{
Content = "blabla #ipsum #tutu"
});
await SaveAndWait();
var tosses = await _mediator.Send(
new Toss.Shared.Tosses.TossLastQuery("toto"));
Assert.Equal(3, tosses.Count());
Assert.Null(tosses.FirstOrDefault(t => t.Content.Contains("#tutu")));
}
[Fact]
public async Task last_returns_toss_content_truncated()
{
await _mediator.Send(new TossCreateCommand()
{
Content = string.Join(" ", Enumerable.Range(0, 100).Select(i => "lorem #ipsum #toto num")),
});
await SaveAndWait();
var tosses = await _mediator.Send(
new Toss.Shared.Tosses.TossLastQuery() { HashTag = "toto" });
Assert.Equal(100, tosses.First().Content.Length);
}
[Fact]
public async Task last_returns_toss_with_user_name()
{
await _mediator.Send(new TossCreateCommand()
{
Content = "blabla bla bla bla bla #test"
});
await SaveAndWait();
var tosses = await _mediator.Send(
new Toss.Shared.Tosses.TossLastQuery() { HashTag = "test" });
Assert.Equal(serviceProviderInitializer.UserName, tosses.First().UserName);
}
[Fact]
public async Task does_not_return_id_with_slash()
{
await _mediator.Send(new TossCreateCommand()
{
Content = "blabla bla bla bla bla #test"
});
await SaveAndWait();
var tosses = await _mediator.Send(
new Toss.Shared.Tosses.TossLastQuery() { HashTag = "test" });
Assert.DoesNotContain("/", tosses.First().Id);
}
}
}