11using BeekmanLabs . UnitTesting ;
2+ using IntegrationEngine . Model ;
3+ using Newtonsoft . Json ;
24using NUnit . Framework ;
35using Moq ;
46using RestSharp ;
57using System ;
68using System . Net ;
9+ using System . Collections . Generic ;
10+ using System . Linq ;
711
812namespace IntegrationEngine . Client . Tests
913{
1014 public class InEngineClientTest : TestBase < InEngineClient >
1115 {
16+ Mock < IRestClient > MockRestClient { get ; set ; }
17+ Mock < IJsonConvert > MockJsonConvert { get ; set ; }
18+ string ResourceStubName { get ; set ; }
19+ string HealthStatusName { get ; set ; }
20+
21+ [ SetUp ]
22+ public void Setup ( )
23+ {
24+ MockRestClient = new Mock < IRestClient > ( ) ;
25+ Subject . RestClient = MockRestClient . Object ;
26+ MockJsonConvert = new Mock < IJsonConvert > ( ) ;
27+ Subject . JsonConvert = MockJsonConvert . Object ;
28+ ResourceStubName = typeof ( ResourceStub ) . Name ;
29+ HealthStatusName = typeof ( HealthStatus ) . Name ;
30+ }
31+
1232 [ Test ]
1333 public void ShouldInstantiateWithDefaultApiUrl ( )
1434 {
15- var expected = "http://localhost:9001/api/" ;
35+ var expectedApiUrl = "http://localhost:9001/api/" ;
36+ var expected = new Uri ( expectedApiUrl ) ;
37+ MockRestClient . SetupGet ( x => x . BaseUrl ) . Returns ( expected ) ;
1638
1739 var actual = Subject . ApiUrl ;
1840
@@ -22,16 +44,131 @@ public void ShouldInstantiateWithDefaultApiUrl()
2244 [ Test ]
2345 public void ShouldQueryTheHealthStatusEndpointAndReturnStatusCodeWhenPinging ( )
2446 {
25- var mockRestClient = new Mock < IRestClient > ( ) ;
26- var restResponse = new RestResponse ( ) { StatusCode = HttpStatusCode . OK } ;
27- mockRestClient . Setup ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == EndpointName . HealthStatus ) ) )
28- . Returns ( restResponse ) ;
29- Subject . RestClient = mockRestClient . Object ;
47+ var restResponse = new RestResponse ( ) { StatusCode = HttpStatusCode . OK } ;
48+ MockRestClient . Setup ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == HealthStatusName ) ) ) . Returns ( restResponse ) ;
3049
3150 var actual = Subject . Ping ( ) ;
3251
33- mockRestClient . Verify ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == EndpointName . HealthStatus ) ) , Times . Once ) ;
52+ MockRestClient . Verify ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == HealthStatusName ) ) , Times . Once ) ;
3453 Assert . That ( actual , Is . TypeOf ( typeof ( HttpStatusCode ) ) ) ;
3554 }
55+
56+ [ Test ]
57+ public void ShouldReturnHealthStatus ( )
58+ {
59+ var expected = new HealthStatus ( ) {
60+ IsElasticsearchServerAvailable = true ,
61+ IsMailServerAvailable = true ,
62+ IsMessageQueueServerAvailable = true ,
63+ } ;
64+ var content = JsonConvert . SerializeObject ( expected ) ;
65+ var restResponse = new RestResponse ( ) { Content = content } ;
66+ MockRestClient . Setup ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == HealthStatusName ) ) )
67+ . Returns ( restResponse ) ;
68+ MockJsonConvert . Setup ( x => x . DeserializeObject < HealthStatus > ( content ) )
69+ . Returns ( expected ) ;
70+
71+ var actual = Subject . GetHealthStatus ( ) ;
72+
73+ Assert . That ( actual , Is . EqualTo ( expected ) ) ;
74+ MockRestClient . Verify ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == HealthStatusName ) ) , Times . Once ) ;
75+ MockJsonConvert . Verify ( x => x . DeserializeObject < HealthStatus > ( content ) , Times . Once ) ;
76+ }
77+
78+
79+ [ Test ]
80+ public void ShouldGetCollectionOfResourceStubs ( )
81+ {
82+ var expected = new List < ResourceStub > ( ) ;
83+ var content = JsonConvert . SerializeObject ( expected ) ;
84+ var restResponse = new RestResponse ( ) { Content = content } ;
85+ MockRestClient . Setup ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == ResourceStubName ) ) )
86+ . Returns ( restResponse ) ;
87+ MockJsonConvert . Setup ( x => x . DeserializeObject < IList < ResourceStub > > ( content ) )
88+ . Returns ( expected ) ;
89+
90+ var actual = Subject . GetCollection < ResourceStub > ( ) ;
91+
92+ Assert . That ( actual . ToList ( ) , Is . EquivalentTo ( expected ) ) ;
93+ MockRestClient . Verify ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == ResourceStubName ) ) , Times . Once ) ;
94+ MockJsonConvert . Verify ( x => x . DeserializeObject < IList < ResourceStub > > ( content ) , Times . Once ) ;
95+ }
96+
97+ [ Test ]
98+ public void ShouldReturnResourceStubGivenAnId ( )
99+ {
100+ var id = "1" ;
101+ var resource = ResourceStubName + "/{id}" ;
102+ var expected = new ResourceStub ( ) ;
103+ var content = JsonConvert . SerializeObject ( expected ) ;
104+ var restResponse = new RestResponse ( ) { Content = content } ;
105+ MockRestClient . Setup ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == resource ) ) )
106+ . Returns ( restResponse ) ;
107+ MockJsonConvert . Setup ( x => x . DeserializeObject < ResourceStub > ( content ) )
108+ . Returns ( expected ) ;
109+
110+ var actual = Subject . Get < ResourceStub > ( id ) ;
111+
112+ Assert . That ( actual , Is . EqualTo ( expected ) ) ;
113+ MockRestClient . Verify ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == resource ) ) , Times . Once ) ;
114+ MockJsonConvert . Verify ( x => x . DeserializeObject < ResourceStub > ( content ) , Times . Once ) ;
115+ }
116+
117+ [ Test ]
118+ public void ShouldCreateAndReturnResourceStub ( )
119+ {
120+ var expected = new ResourceStub ( ) ;
121+ var content = JsonConvert . SerializeObject ( expected ) ;
122+ var restResponse = new RestResponse ( ) { Content = content } ;
123+ MockRestClient . Setup ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == ResourceStubName ) ) )
124+ . Returns ( restResponse ) ;
125+ MockJsonConvert . Setup ( x => x . DeserializeObject < ResourceStub > ( content ) )
126+ . Returns ( expected ) ;
127+
128+ var actual = Subject . Create ( expected ) ;
129+
130+ Assert . That ( actual , Is . EqualTo ( expected ) ) ;
131+ MockRestClient . Verify ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == ResourceStubName ) ) , Times . Once ) ;
132+ MockJsonConvert . Verify ( x => x . DeserializeObject < ResourceStub > ( content ) , Times . Once ) ;
133+ }
134+
135+ [ Test ]
136+ public void ShouldUpdateAndReturnResourceStub ( )
137+ {
138+ var resource = ResourceStubName + "/{id}" ;
139+ var expected = new ResourceStub ( ) ;
140+ var content = JsonConvert . SerializeObject ( expected ) ;
141+ var restResponse = new RestResponse ( ) { Content = content } ;
142+ MockRestClient . Setup ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == resource ) ) )
143+ . Returns ( restResponse ) ;
144+ MockJsonConvert . Setup ( x => x . DeserializeObject < ResourceStub > ( content ) )
145+ . Returns ( expected ) ;
146+
147+ var actual = Subject . Update ( expected ) ;
148+
149+ Assert . That ( actual , Is . EqualTo ( expected ) ) ;
150+ MockRestClient . Verify ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == resource ) ) , Times . Once ) ;
151+ MockJsonConvert . Verify ( x => x . DeserializeObject < ResourceStub > ( content ) , Times . Once ) ;
152+ }
153+
154+ [ Test ]
155+ public void ShouldDeleteAndReturnResourceStub ( )
156+ {
157+ var id = "1" ;
158+ var resource = ResourceStubName + "/{id}" ;
159+ var expected = new ResourceStub ( ) ;
160+ var content = JsonConvert . SerializeObject ( expected ) ;
161+ var restResponse = new RestResponse ( ) { Content = content } ;
162+ MockRestClient . Setup ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == resource ) ) )
163+ . Returns ( restResponse ) ;
164+ MockJsonConvert . Setup ( x => x . DeserializeObject < ResourceStub > ( content ) )
165+ . Returns ( expected ) ;
166+
167+ var actual = Subject . Delete < ResourceStub > ( id ) ;
168+
169+ Assert . That ( actual , Is . EqualTo ( expected ) ) ;
170+ MockRestClient . Verify ( x => x . Execute ( It . Is < RestRequest > ( y => y . Resource == resource ) ) , Times . Once ) ;
171+ MockJsonConvert . Verify ( x => x . DeserializeObject < ResourceStub > ( content ) , Times . Once ) ;
172+ }
36173 }
37174}
0 commit comments