Projekt

Obecné

Profil

Stáhnout (13.9 KB) Statistiky
| Větev: | Tag: | Revize:
1
//#define TEST
2

    
3
using System;
4
using System.Threading;
5
using System.Threading.Tasks;
6
using FluentAssertions;
7
using Leuze.Core.Application.Authentication;
8
using Leuze.Core.Domain.Repositories;
9
using Leuze.Core.Infrastructure.Persistence.Repository;
10
using Leuze.Core.Infrastructure.Persistence.Seeds;
11
using Leuze.Modules.Goal.Application.CQRS.GoalDefinitionAreas.Commands;
12
using Leuze.Modules.Goal.Domain.Repositories;
13
using Leuze.Modules.Goal.Infrastructure.Persistence.Repositories;
14
using Leuze.Tests.Configuration;
15
using Microsoft.AspNetCore.Components.Authorization;
16
using Microsoft.Extensions.DependencyInjection;
17
using Moq;
18
using Xunit;
19

    
20
namespace Leuze.Tests.Modules.Goal
21
{
22
    [Trait("Category", "Goals")]
23
    public class GoalDefinitionAreasTests : TestWithDatabase
24
    {
25
        public GoalDefinitionAreasTests()
26
        {
27
            var services = new ServiceCollection();
28
            services.AddTransient<IGlobalDefinitionAreaRepository, GlobalDefinitionAreaRepository>();
29
            services.AddTransient<IGoalItemRepository, GoalItemRepository>();
30
            services.AddTransient<IGoalDefinitionRepository, GoalDefinitionRepository>();
31
            services.AddTransient<IDomainUserRepository, DomainUserRepository>();
32
            Initialize(services);
33

    
34

    
35
            DatabaseFixture.Storage.Database.EnsureDeleted();
36
            ApplicationSeed.Run(DatabaseFixture.Storage, DatabaseFixture.UserManager, DatabaseFixture.RoleManager);
37
        }
38

    
39
        #region Commands
40

    
41
        #region CreateNewArea
42

    
43
        [Fact]
44
        public async void CreateNewAreaTestAdmin()
45
        {
46
            await _semaphore.WaitAsync();
47

    
48
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.adminName);
49
            var handler = new CreateNewArea.Handler(
50
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
51
                AuthenticationStateProviderMock.Object,
52
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
53
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
54

    
55
            result.IsSuccess.Should().BeTrue();
56

    
57
            _semaphore.Release();
58
        }
59

    
60

    
61
        [Fact]
62
        public async void CreateNewAreaTestTL()
63
        {
64
            await _semaphore.WaitAsync();
65

    
66
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.TLName);
67
            var handler = new CreateNewArea.Handler(
68
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
69
                AuthenticationStateProviderMock.Object,
70
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
71
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
72

    
73
            result.IsSuccess.Should().BeTrue();
74

    
75
            _semaphore.Release();
76
        }
77

    
78

    
79
        [Fact]
80
        public async void CreateNewAreaTestMA()
81
        {
82
            await _semaphore.WaitAsync();
83

    
84
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.MAName);
85
            var handler = new CreateNewArea.Handler(
86
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
87
                AuthenticationStateProviderMock.Object,
88
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
89
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
90

    
91
            result.IsSuccess.Should().BeTrue();
92

    
93
            _semaphore.Release();
94
        }
95

    
96
        [Fact]
97
        public async void CreateNewAreaTestOverlap()
98
        {
99
            await _semaphore.WaitAsync();
100

    
101
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.TLName);
102
            var handler = new CreateNewArea.Handler(
103
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
104
                AuthenticationStateProviderMock.Object,
105
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
106
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
107

    
108
            result.IsSuccess.Should().BeTrue();
109

    
110
            result = await handler.Handle(new CreateNewArea.Command(DateTime.Today.AddDays(1), DateTime.Today.AddDays(2), 0.0), default);
111

    
112
            result.IsSuccess.Should().BeFalse();
113

    
114
            _semaphore.Release();
115
        }
116

    
117
        [Fact]
118
        public async void CreateNewAreaTestWrongRange()
119
        {
120
            await _semaphore.WaitAsync();
121

    
122
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.MAName);
123
            var handler = new CreateNewArea.Handler(
124
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
125
                AuthenticationStateProviderMock.Object,
126
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
127
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today.AddDays(1), DateTime.Today, 0.0), default);
128

    
129
            result.IsSuccess.Should().BeFalse();
130

    
131
            _semaphore.Release();
132
        }
133

    
134
        #endregion
135

    
136
        #region EditArea
137

    
138
        [Fact]
139
        public async void EditAreaTestAdmin()
140
        {
141
            await _semaphore.WaitAsync();
142

    
143
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.adminName);
144

    
145
            var handler = new CreateNewArea.Handler(
146
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
147
                AuthenticationStateProviderMock.Object,
148
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
149
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
150

    
151
            result.IsSuccess.Should().BeTrue();
152

    
153
            var handler2 = new EditArea.Handler(
154
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>());
155
            var result2 = await handler2.Handle(new EditArea.Command(result.Result.item.Id,DateTime.Today, DateTime.Today.AddDays(1), 1.0), default);
156

    
157
            result2.IsSuccess.Should().BeTrue();
158

    
159
            _semaphore.Release();
160
        }
161

    
162
        [Fact]
163
        public async void EditAreaTestTL()
164
        {
165
            await _semaphore.WaitAsync();
166

    
167
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.TLName);
168

    
169
            var handler = new CreateNewArea.Handler(
170
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
171
                AuthenticationStateProviderMock.Object,
172
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
173
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
174

    
175
            result.IsSuccess.Should().BeTrue();
176

    
177
            var handler2 = new EditArea.Handler(
178
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>());
179
            var result2 = await handler2.Handle(new EditArea.Command(result.Result.item.Id, DateTime.Today, DateTime.Today.AddDays(1), 1.0), default);
180

    
181
            result2.IsSuccess.Should().BeTrue();
182

    
183
            _semaphore.Release();
184
        }
185

    
186
        [Fact]
187
        public async void EditAreaTestMA()
188
        {
189
            await _semaphore.WaitAsync();
190

    
191
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.MAName);
192

    
193
            var handler = new CreateNewArea.Handler(
194
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
195
                AuthenticationStateProviderMock.Object,
196
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
197
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
198

    
199
            result.IsSuccess.Should().BeTrue();
200

    
201
            var handler2 = new EditArea.Handler(
202
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>());
203
            var result2 = await handler2.Handle(new EditArea.Command(result.Result.item.Id, DateTime.Today, DateTime.Today.AddDays(1), 1.0), default);
204

    
205
            result2.IsSuccess.Should().BeTrue();
206

    
207
            _semaphore.Release();
208
        }
209

    
210
        [Fact]
211
        public async void EditAreaTestOverlap()
212
        {
213
            await _semaphore.WaitAsync();
214

    
215
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.adminName);
216

    
217
            //first area
218
            var handler = new CreateNewArea.Handler(
219
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
220
                AuthenticationStateProviderMock.Object,
221
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
222
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
223
            
224
            result.IsSuccess.Should().BeTrue();
225

    
226
            //second area
227
            handler = new CreateNewArea.Handler(
228
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
229
                AuthenticationStateProviderMock.Object,
230
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
231
            result = await handler.Handle(new CreateNewArea.Command(DateTime.Today.AddDays(3), DateTime.Today.AddDays(5), 0.0), default);
232

    
233
            result.IsSuccess.Should().BeTrue();
234

    
235
            //edit
236
            var handler2 = new EditArea.Handler(
237
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>());
238
            var result2 = await handler2.Handle(new EditArea.Command(result.Result.item.Id, DateTime.Today, DateTime.Today.AddDays(1), 1.0), default);
239

    
240
            result2.IsSuccess.Should().BeFalse();
241

    
242
            _semaphore.Release();
243
        }
244

    
245
        [Fact]
246
        public async void EditAreaTestWrongRange()
247
        {
248
            await _semaphore.WaitAsync();
249

    
250
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.MAName);
251

    
252
            var handler = new CreateNewArea.Handler(
253
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
254
                AuthenticationStateProviderMock.Object,
255
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
256
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
257

    
258
            result.IsSuccess.Should().BeTrue();
259

    
260
            var handler2 = new EditArea.Handler(
261
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>());
262
            var result2 = await handler2.Handle(new EditArea.Command(result.Result.item.Id, DateTime.Today.AddDays(1), DateTime.Today, 1.0), default);
263

    
264
            result2.IsSuccess.Should().BeFalse();
265

    
266
            _semaphore.Release();
267
        }
268

    
269
        #endregion
270

    
271
        #region RemoveArea
272

    
273
        [Fact]
274
        public async void RemoveAreaTest()
275
        {
276
            await _semaphore.WaitAsync();
277

    
278
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.MAName);
279

    
280
            var handler = new CreateNewArea.Handler(
281
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
282
                AuthenticationStateProviderMock.Object,
283
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
284
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
285

    
286
            result.IsSuccess.Should().BeTrue();
287

    
288
            var handler2 = new RemoveArea.Handler(
289
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>());
290
            var result2 = await handler2.Handle(new RemoveArea.Command(result.Result.item.Id), default);
291

    
292
            result2.IsSuccess.Should().BeTrue();
293

    
294
            _semaphore.Release();
295
        }
296

    
297
        [Fact]
298
        public async void RemoveAreaTest2()
299
        {
300
            await _semaphore.WaitAsync();
301

    
302
            var AuthenticationStateProviderMock = await TestUtils.AuthenticationMock(DatabaseFixture, TestUtils.MAName);
303

    
304
            var handler = new CreateNewArea.Handler(
305
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>(),
306
                AuthenticationStateProviderMock.Object,
307
                DatabaseFixture.Services.GetRequiredService<IDomainUserRepository>());
308
            var result = await handler.Handle(new CreateNewArea.Command(DateTime.Today, DateTime.Today.AddDays(1), 0.0), default);
309

    
310
            result.IsSuccess.Should().BeTrue();
311

    
312
            var handler2 = new RemoveArea.Handler(
313
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>());
314
            var result2 = await handler2.Handle(new RemoveArea.Command(result.Result.item.Id), default);
315

    
316
            result2.IsSuccess.Should().BeTrue();
317

    
318
            handler2 = new RemoveArea.Handler(
319
                DatabaseFixture.Services.GetRequiredService<IGlobalDefinitionAreaRepository>());
320
            result2 = await handler2.Handle(new RemoveArea.Command(result.Result.item.Id), default);
321

    
322
            result2.IsSuccess.Should().BeFalse();
323

    
324
            _semaphore.Release();
325
        }
326

    
327
        #endregion
328

    
329
        #endregion
330

    
331
        #region Queries
332

    
333
        #region GetAllAreas
334

    
335

    
336

    
337
        #endregion
338

    
339
        #region GetAreaById
340

    
341

    
342

    
343
        #endregion
344

    
345
        #endregion
346

    
347
    }
348
}
(1-1/5)