/
CreatedCuratedPackageCommandFacts.cs
135 lines (115 loc) · 4.86 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
132
133
134
135
using System;
using System.Linq;
using Moq;
using Xunit;
namespace NuGetGallery
{
public class CreatedCuratedPackageCommandFacts
{
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");
}
}
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);
}
}
}
}