/
TestController.Test.cs
81 lines (74 loc) · 3.37 KB
/
TestController.Test.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
using System.Threading.Tasks;
using KubeOps.Operator.Kubernetes;
using KubeOps.Testing;
using KubeOps.TestOperator.Entities;
using KubeOps.TestOperator.TestManager;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using Xunit;
namespace KubeOps.TestOperator.Test
{
public class TestControllerTest : IClassFixture<KubernetesOperatorFactory<TestStartup>>
{
private readonly KubernetesOperatorFactory<TestStartup> _factory;
public TestControllerTest(KubernetesOperatorFactory<TestStartup> factory)
{
_factory = factory.WithSolutionRelativeContentRoot("tests/KubeOps.TestOperator");
}
[Fact]
public async Task Test_If_Manager_Created_Is_Called()
{
_factory.Run();
var mock = _factory.Services.GetRequiredService<Mock<IManager>>();
mock.Reset();
mock.Setup(o => o.Reconciled(It.IsAny<V1TestEntity>()));
mock.Verify(o => o.Reconciled(It.IsAny<V1TestEntity>()), Times.Never);
await _factory.EnqueueEvent(ResourceEventType.Reconcile, new V1TestEntity());
mock.Verify(o => o.Reconciled(It.IsAny<V1TestEntity>()), Times.Once);
}
[Fact]
public async Task Test_If_Manager_Updated_Is_Called()
{
_factory.Run();
var mock = _factory.Services.GetRequiredService<Mock<IManager>>();
mock.Reset();
mock.Setup(o => o.Reconciled(It.IsAny<V1TestEntity>()));
mock.Verify(o => o.Reconciled(It.IsAny<V1TestEntity>()), Times.Never);
await _factory.EnqueueEvent(ResourceEventType.Reconcile, new V1TestEntity());
mock.Verify(o => o.Reconciled(It.IsAny<V1TestEntity>()), Times.Once);
}
[Fact]
public async Task Test_If_Manager_NotModified_Is_Called()
{
_factory.Run();
var mock = _factory.Services.GetRequiredService<Mock<IManager>>();
mock.Reset();
mock.Setup(o => o.Reconciled(It.IsAny<V1TestEntity>()));
mock.Verify(o => o.Reconciled(It.IsAny<V1TestEntity>()), Times.Never);
await _factory.EnqueueEvent(ResourceEventType.Reconcile, new V1TestEntity());
mock.Verify(o => o.Reconciled(It.IsAny<V1TestEntity>()), Times.Once);
}
[Fact]
public async Task Test_If_Manager_StatusModified_Is_Called()
{
_factory.Run();
var mock = _factory.Services.GetRequiredService<Mock<IManager>>();
mock.Reset();
mock.Setup(o => o.StatusModified(It.IsAny<V1TestEntity>()));
mock.Verify(o => o.StatusModified(It.IsAny<V1TestEntity>()), Times.Never);
await _factory.EnqueueEvent(ResourceEventType.StatusUpdated, new V1TestEntity());
mock.Verify(o => o.StatusModified(It.IsAny<V1TestEntity>()), Times.Once);
}
[Fact]
public async Task Test_If_Manager_Deleted_Is_Called()
{
_factory.Run();
var mock = _factory.Services.GetRequiredService<Mock<IManager>>();
mock.Reset();
mock.Setup(o => o.Deleted(It.IsAny<V1TestEntity>()));
mock.Verify(o => o.Deleted(It.IsAny<V1TestEntity>()), Times.Never);
await _factory.EnqueueEvent(ResourceEventType.Deleted, new V1TestEntity());
mock.Verify(o => o.Deleted(It.IsAny<V1TestEntity>()), Times.Once);
}
}
}