-
Notifications
You must be signed in to change notification settings - Fork 644
/
CreatedCuratedPackageCommandFacts.cs
131 lines (109 loc) · 4.76 KB
/
CreatedCuratedPackageCommandFacts.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
using System;
using System.Linq;
using Moq;
using Xunit;
namespace NuGetGallery
{
public class CreatedCuratedPackageCommandFacts
{
public class TheExecuteMethod
{
[Fact]
public void WillThrowWhenCuratedFeedDoesNotExist()
{
var cmd = new TestableCreateCuratedPackageCommand();
cmd.StubCuratedFeedByKeyQry
.Setup(stub => stub.Execute(It.IsAny<int>(), It.IsAny<bool>()))
.Returns((CuratedFeed)null);
Assert.Throws<InvalidOperationException>(() => cmd.Execute(
0,
0));
}
[Fact]
public void WillThrowWhenPackageRegistrationDoesNotExist()
{
var cmd = new TestableCreateCuratedPackageCommand();
cmd.StubPackageRegistrationByKeyQry
.Setup(stub => stub.Execute(It.IsAny<int>(), It.IsAny<bool>()))
.Returns((PackageRegistration)null);
Assert.Throws<InvalidOperationException>(() => cmd.Execute(
0,
0));
}
[Fact]
public void WillAddANewCuratedPackageToTheCuratedFeed()
{
var cmd = new TestableCreateCuratedPackageCommand();
cmd.StubPackageRegistration.Key = 1066;
cmd.Execute(
42,
1066,
false,
true,
"theNotes");
var curatedPackage = cmd.StubCuratedFeed.Packages.First();
Assert.Equal(1066, curatedPackage.PackageRegistrationKey);
Assert.Equal(false, curatedPackage.Included);
Assert.Equal(true, curatedPackage.AutomaticallyCurated);
Assert.Equal("theNotes", curatedPackage.Notes);
}
[Fact]
public void WillSaveTheEntityChanges()
{
var cmd = new TestableCreateCuratedPackageCommand();
cmd.Execute(
0,
0);
cmd.StubEntitiesContext.Verify(stub => stub.SaveChanges());
}
[Fact]
public void WillReturnTheCreatedCuratedPackage()
{
var cmd = new TestableCreateCuratedPackageCommand();
cmd.StubPackageRegistration.Key = 1066;
var curatedPackage = cmd.Execute(
42,
1066,
false,
true,
"theNotes");
Assert.Equal(1066, curatedPackage.PackageRegistrationKey);
Assert.Equal(false, curatedPackage.Included);
Assert.Equal(true, curatedPackage.AutomaticallyCurated);
Assert.Equal("theNotes", curatedPackage.Notes);
}
}
public class TestableCreateCuratedPackageCommand : CreateCuratedPackageCommand
{
public TestableCreateCuratedPackageCommand()
: base(null)
{
StubCuratedFeed = new CuratedFeed { Key = 0, Name = "aName", };
StubCuratedFeedByKeyQry = new Mock<ICuratedFeedByKeyQuery>();
StubEntitiesContext = new Mock<IEntitiesContext>();
StubPackageRegistration = new PackageRegistration { Key = 0, };
StubPackageRegistrationByKeyQry = new Mock<IPackageRegistrationByKeyQuery>();
StubCuratedFeedByKeyQry
.Setup(stub => stub.Execute(It.IsAny<int>(), It.IsAny<bool>()))
.Returns(StubCuratedFeed);
StubPackageRegistrationByKeyQry
.Setup(stub => stub.Execute(It.IsAny<int>(), It.IsAny<bool>()))
.Returns(StubPackageRegistration);
Entities = StubEntitiesContext.Object;
}
public CuratedFeed StubCuratedFeed{ get; set; }
public Mock<ICuratedFeedByKeyQuery> StubCuratedFeedByKeyQry { get; set; }
public Mock<IEntitiesContext> StubEntitiesContext { get; private set; }
public PackageRegistration StubPackageRegistration { get; set; }
public Mock<IPackageRegistrationByKeyQuery> StubPackageRegistrationByKeyQry { get; set; }
protected override T GetService<T>()
{
if (typeof(T) == typeof(ICuratedFeedByKeyQuery))
return (T) StubCuratedFeedByKeyQry.Object;
if (typeof(T) == typeof(IPackageRegistrationByKeyQuery))
return (T) StubPackageRegistrationByKeyQry.Object;
throw new Exception("Tried to get unexpected service");
}
}
}
}