-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFakeWarehouseProvider.cs
52 lines (46 loc) · 1.83 KB
/
FakeWarehouseProvider.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
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Attest.Fake.Builders;
using JetBrains.Annotations;
using Samples.Client.Data.Contracts.Dto;
using Samples.Client.Data.Contracts.Providers;
using Samples.Client.Data.Fake.Containers;
using Samples.Client.Data.Fake.ProviderBuilders;
namespace Samples.Client.Data.Fake.Providers
{
[UsedImplicitly]
internal sealed class FakeWarehouseProvider : FakeProviderBase<WarehouseProviderBuilder, IWarehouseProvider>,
IWarehouseProvider
{
private readonly Random _random = new Random();
public FakeWarehouseProvider(
WarehouseProviderBuilder warehouseProviderBuilder,
IWarehouseContainer warehouseContainer)
: base(warehouseProviderBuilder) => warehouseProviderBuilder.WithWarehouseItems(warehouseContainer.WarehouseItems);
IEnumerable<WarehouseItemDto> IWarehouseProvider.GetWarehouseItems() => GetService(r =>
{
var delayTask = Task.Delay(_random.Next(2000));
delayTask.Wait();
return r;
}).GetWarehouseItems();
bool IWarehouseProvider.DeleteWarehouseItem(int id) => GetService(r =>
{
var delayTask = Task.Delay(_random.Next(2000));
delayTask.Wait();
return r;
}).DeleteWarehouseItem(id);
bool IWarehouseProvider.UpdateWarehouseItem(WarehouseItemDto dto) => GetService(r =>
{
var delayTask = Task.Delay(_random.Next(2000));
delayTask.Wait();
return r;
}).UpdateWarehouseItem(dto);
void IWarehouseProvider.CreateWarehouseItem(WarehouseItemDto dto) => GetService(r =>
{
var delayTask = Task.Delay(_random.Next(2000));
delayTask.Wait();
return r;
}).CreateWarehouseItem(dto);
}
}