-
-
Notifications
You must be signed in to change notification settings - Fork 722
/
DataLoaderExtensionsTests.cs
141 lines (114 loc) · 4.11 KB
/
DataLoaderExtensionsTests.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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Xunit;
namespace GreenDonut;
public class DataLoaderExtensionsTests
{
[Fact(DisplayName = "Set: Should throw an argument null exception for dataLoader")]
public void SetDataLoaderNull()
{
// arrange
var key = "Foo";
var value = "Bar";
// act
void Verify() => default(IDataLoader<string, string>)!.Set(key, value);
// assert
Assert.Throws<ArgumentNullException>("dataLoader", Verify);
}
[Fact(DisplayName = "Set: Should throw an argument null exception for key")]
public void SetKeyNull()
{
// arrange
var fetch = TestHelpers.CreateFetch<string, string>();
var batchScheduler = new ManualBatchScheduler();
var loader = new DataLoader<string, string>(fetch, batchScheduler);
var value = "Bar";
// act
void Verify() => loader.Set(null!, value);
// assert
Assert.Throws<ArgumentNullException>("key", Verify);
}
[Fact(DisplayName = "Set: Should not throw any exception")]
public void SetNoException()
{
// arrange
var fetch = TestHelpers.CreateFetch<string, string>();
var batchScheduler = new ManualBatchScheduler();
var loader = new DataLoader<string, string>(fetch, batchScheduler);
var key = "Foo";
// act
void Verify() => loader.Set(key, null!);
// assert
Assert.Throws<ArgumentNullException>(Verify);
}
[Fact(DisplayName = "Set: Should result in a new cache entry")]
public async Task SetNewCacheEntry()
{
// arrange
var fetch = TestHelpers.CreateFetch<string, string>();
var batchScheduler = new ManualBatchScheduler();
var loader = new DataLoader<string, string>(fetch, batchScheduler);
var key = "Foo";
var value = "Bar";
// act
loader.Set(key, value);
// assert
var loadResult = await loader.LoadAsync(key).ConfigureAwait(false);
Assert.Equal(value, loadResult);
}
[Fact(DisplayName = "Set: Should result in 'Bar'")]
public async Task SetTwice()
{
// arrange
var fetch = TestHelpers.CreateFetch<string, string>();
var batchScheduler = new ManualBatchScheduler();
var loader = new DataLoader<string, string>(fetch, batchScheduler);
var key = "Foo";
var first = "Bar";
var second = "Baz";
// act
loader.Set(key, first);
loader.Set(key, second);
// assert
var loadResult = await loader.LoadAsync(key).ConfigureAwait(false);
Assert.Equal(first, loadResult);
}
[Fact(DisplayName = "IDataLoader.Set: Should throw an argument null exception for dataLoader")]
public void IDataLoaderSetDataLoaderNull()
{
// arrange
object key = "Foo";
object value = "Bar";
// act
void Verify() => default(IDataLoader)!.Set(key, value);
// assert
Assert.Throws<ArgumentNullException>("dataLoader", Verify);
}
[Fact(DisplayName = "IDataLoader.Set: Should throw an argument null exception for key")]
public void IDataLoaderSetKeyNull()
{
// arrange
var fetch = TestHelpers.CreateFetch<string, string>();
var batchScheduler = new ManualBatchScheduler();
IDataLoader loader = new DataLoader<string, string>(fetch, batchScheduler);
object value = "Bar";
// act
void Verify() => loader.Set(null!, value);
// assert
Assert.Throws<ArgumentNullException>("key", Verify);
}
[Fact(DisplayName = "IDataLoader.Set: Should not throw any exception")]
public void IDataLoaderSetNoException()
{
// arrange
var fetch = TestHelpers.CreateFetch<string, string>();
var batchScheduler = new ManualBatchScheduler();
IDataLoader loader = new DataLoader<string, string>(fetch, batchScheduler);
object key = "Foo";
// act
void Verify() => loader.Set(key, null!);
// assert
Assert.Throws<ArgumentNullException>(Verify);
}
}