Skip to content

Commit

Permalink
Merge pull request #11 from ba-st/daily-data-driven-improvements
Browse files Browse the repository at this point in the history
Daily data driven improvements
  • Loading branch information
gcotelli authored Nov 6, 2018
2 parents 5fd8a41 + 598288e commit e97b708
Show file tree
Hide file tree
Showing 34 changed files with 616 additions and 344 deletions.
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
"
Test Case for PetOrdersRESTfulWebServiceSpecification
Test Case for PetOrdersRESTfulControllerSpecification
"
Class {
#name : #PetOrdersRESTfulWebServiceSpecificationTest,
#name : #PetOrdersRESTfulControllerSpecificationTest,
#superclass : #TestCase,
#category : #'Stargate-Examples-Tests'
}

{ #category : #tests }
PetOrdersRESTfulWebServiceSpecificationTest >> testTemplate [
PetOrdersRESTfulControllerSpecificationTest >> testTemplate [

| spec |

spec := PetOrdersRESTfulWebServiceSpecification new.
spec := PetOrdersRESTfulControllerSpecification new.

self
assert: spec idTemplate equals: '/orders/<identifier:IsInteger>';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,72 +2,72 @@
I'm a user stoty test testing the service providing the Pet Order resource, in the classic Pet Store example
"
Class {
#name : #PetOrdersRESTfulWebServiceTest,
#superclass : #RESTfulWebServiceTest,
#name : #PetOrdersRESTfulControllerTest,
#superclass : #ResourceRESTfulControllerTest,
#category : #'Stargate-Examples-Tests'
}

{ #category : #'private - support' }
PetOrdersRESTfulWebServiceTest >> baseUrl [
PetOrdersRESTfulControllerTest >> baseUrl [

^ 'https://petstore.example.com' asZnUrl
]

{ #category : #'private - support' }
PetOrdersRESTfulWebServiceTest >> createOrder [
PetOrdersRESTfulControllerTest >> createOrder [

^ webService createOrderBasedOn: (self requestToCreateOrderFrom: ('{"date":"2018-10-24T18:05:46.418Z","pet":"<1p>"}' expandMacrosWith: self petUrl)) within: self newHttpRequestContext
^ resourceController createOrderBasedOn: (self requestToCreateOrderFrom: ('{"date":"2018-10-24T18:05:46.418Z","pet":"<1p>"}' expandMacrosWith: self petUrl)) within: self newHttpRequestContext
]

{ #category : #'private - support' }
PetOrdersRESTfulWebServiceTest >> getFirstOrderAndWithJsonDo: aBlock [
PetOrdersRESTfulControllerTest >> getFirstOrderAndWithJsonDo: aBlock [

| response |

response := webService getOrderBasedOn: (self requestToGetResourceIdentifiedBy: 1 accepting: webService specification orderVersion1dot0dot0MediaType) within: self newHttpRequestContext.
response := resourceController getOrderBasedOn: (self requestToGetResourceIdentifiedBy: 1 accepting: resourceController specification orderVersion1dot0dot0MediaType) within: self newHttpRequestContext.

self
assert: response isSuccess;
assert: response status equals: 200;
assert: response contentType asMediaType equals: webService specification orderVersion1dot0dot0MediaType;
assert: response contentType asMediaType equals: resourceController specification orderVersion1dot0dot0MediaType;
withJsonFromContentsIn: response do: aBlock
]

{ #category : #'private - support' }
PetOrdersRESTfulWebServiceTest >> petUrl [
PetOrdersRESTfulControllerTest >> petUrl [

^ self baseUrl / 'pets/1' asUrl
]

{ #category : #'private - support' }
PetOrdersRESTfulWebServiceTest >> requestToCreateOrderFrom: json [
PetOrdersRESTfulControllerTest >> requestToCreateOrderFrom: json [

^ self requestToPOST: json as: webService specification orderVersion1dot0dot0MediaType
^ self requestToPOST: json as: resourceController specification orderVersion1dot0dot0MediaType
]

{ #category : #'private - support' }
PetOrdersRESTfulWebServiceTest >> requestToPOST: url identifiedBy: anIdentifier [
PetOrdersRESTfulControllerTest >> requestToPOST: url identifiedBy: anIdentifier [

^ TeaRequest fromZnRequest: (ZnRequest post: url) pathParams: {(#identifier -> anIdentifier)} asDictionary
]

{ #category : #running }
PetOrdersRESTfulWebServiceTest >> setUp [
PetOrdersRESTfulControllerTest >> setUp [

super setUp.
self setUpWebService.
webService serverUrl: self baseUrl asZnUrl.
self assert: webService orders isEmpty
self setUpResourceController.
resourceController serverUrl: self baseUrl asZnUrl.
self assert: resourceController orders isEmpty
]

{ #category : #running }
PetOrdersRESTfulWebServiceTest >> setUpWebService [
PetOrdersRESTfulControllerTest >> setUpResourceController [

webService := PetOrdersRESTfulWebService new
resourceController := PetOrdersRESTfulController new
]

{ #category : #tests }
PetOrdersRESTfulWebServiceTest >> testGetCanceledOrder [
PetOrdersRESTfulControllerTest >> testGetCanceledOrder [

self
createOrder;
Expand All @@ -78,7 +78,7 @@ PetOrdersRESTfulWebServiceTest >> testGetCanceledOrder [
assertUrl: json links self equals: 'https://petstore.example.com/orders/1';
assertUrl: json links cancel equals: 'https://petstore.example.com/orders/1/cancel';
assertUrl: json links complete equals: 'https://petstore.example.com/orders/1/complete';
assert: (webService cancelOrderBasedOn: (self requestToPOST: json links cancel identifiedBy: 1) within: self newHttpRequestContext) isSuccess ];
assert: (resourceController cancelOrderBasedOn: (self requestToPOST: json links cancel identifiedBy: 1) within: self newHttpRequestContext) isSuccess ];
getFirstOrderAndWithJsonDo: [ :json |
self
assertUrl: json pet equals: self petUrl;
Expand All @@ -87,7 +87,7 @@ PetOrdersRESTfulWebServiceTest >> testGetCanceledOrder [
]

{ #category : #tests }
PetOrdersRESTfulWebServiceTest >> testGetOrderJustCreated [
PetOrdersRESTfulControllerTest >> testGetOrderJustCreated [

self
createOrder;
Expand All @@ -101,7 +101,7 @@ PetOrdersRESTfulWebServiceTest >> testGetOrderJustCreated [
]

{ #category : #tests }
PetOrdersRESTfulWebServiceTest >> testHATEOAS [
PetOrdersRESTfulControllerTest >> testHATEOAS [

"This case will transition an order from registered to completed to canceled, using the hypermedia controls provided
in the response."
Expand All @@ -115,15 +115,15 @@ PetOrdersRESTfulWebServiceTest >> testHATEOAS [
assertUrl: json links self equals: 'https://petstore.example.com/orders/1';
assertUrl: json links cancel equals: 'https://petstore.example.com/orders/1/cancel';
assertUrl: json links complete equals: 'https://petstore.example.com/orders/1/complete';
assert: (webService completeOrderBasedOn: (self requestToPOST: json links complete identifiedBy: 1) within: self newHttpRequestContext) isSuccess ];
assert: (resourceController completeOrderBasedOn: (self requestToPOST: json links complete identifiedBy: 1) within: self newHttpRequestContext) isSuccess ];
getFirstOrderAndWithJsonDo: [ :json |
self
assertUrl: json pet equals: self petUrl;
assert: json status equals: 'completed';
assertUrl: json links self equals: 'https://petstore.example.com/orders/1';
assertUrl: json links cancel equals: 'https://petstore.example.com/orders/1/cancel';
assert: json links complete isNil;
assert: (webService cancelOrderBasedOn: (self requestToPOST: json links cancel identifiedBy: 1) within: self newHttpRequestContext) isSuccess ];
assert: (resourceController cancelOrderBasedOn: (self requestToPOST: json links cancel identifiedBy: 1) within: self newHttpRequestContext) isSuccess ];
getFirstOrderAndWithJsonDo: [ :json |
self
assertUrl: json pet equals: self petUrl;
Expand All @@ -134,7 +134,7 @@ PetOrdersRESTfulWebServiceTest >> testHATEOAS [
]

{ #category : #tests }
PetOrdersRESTfulWebServiceTest >> testInvalidStateTransition [
PetOrdersRESTfulControllerTest >> testInvalidStateTransition [

| completeOrderLink |

Expand All @@ -143,19 +143,19 @@ PetOrdersRESTfulWebServiceTest >> testInvalidStateTransition [
getFirstOrderAndWithJsonDo: [ :json |
self assert: json status equals: 'registered'.
completeOrderLink := json links complete.
self assert: (webService cancelOrderBasedOn: (self requestToPOST: json links cancel identifiedBy: 1) within: self newHttpRequestContext) isSuccess ];
self assert: (resourceController cancelOrderBasedOn: (self requestToPOST: json links cancel identifiedBy: 1) within: self newHttpRequestContext) isSuccess ];
getFirstOrderAndWithJsonDo: [ :json |
self
assert: json status equals: 'canceled';
assert: json links cancel isNil;
assert: json links complete isNil ];
should: [ webService completeOrderBasedOn: (self requestToPOST: completeOrderLink identifiedBy: 1) within: self newHttpRequestContext ]
should: [ resourceController completeOrderBasedOn: (self requestToPOST: completeOrderLink identifiedBy: 1) within: self newHttpRequestContext ]
raise: HTTPClientError
withExceptionDo: [ :error | self assert: error code equals: 409 ]
]

{ #category : #tests }
PetOrdersRESTfulWebServiceTest >> testOrderCreation [
PetOrdersRESTfulControllerTest >> testOrderCreation [

| response |

Expand All @@ -166,6 +166,6 @@ PetOrdersRESTfulWebServiceTest >> testOrderCreation [
assert: response status equals: 201;
assertUrl: response location equals: 'https://petstore.example.com/orders/1';
assert: response hasEntity;
assert: webService orders size equals: 1;
assert: webService orders first pet equals: self petUrl
assert: resourceController orders size equals: 1;
assert: resourceController orders first pet equals: self petUrl
]
8 changes: 4 additions & 4 deletions source/Stargate-Examples-Tests/PetStoreAPITest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ PetStoreAPITest >> newClient [
{ #category : #private }
PetStoreAPITest >> ordersSpec [

^ PetOrdersRESTfulWebServiceSpecification new
^ PetOrdersRESTfulControllerSpecification new
]

{ #category : #private }
PetStoreAPITest >> petsSpec [

^ PetsRESTfulWebServiceSpecification new
^ PetsRESTfulControllerSpecification new
]

{ #category : #private }
Expand All @@ -62,8 +62,8 @@ PetStoreAPITest >> setUp [
{(#port -> self port).
(#serverUrl -> self baseUrl)}
installing:
{PetsRESTfulWebService new.
PetOrdersRESTfulWebService new}.
{PetsRESTfulController new.
PetOrdersRESTfulController new}.

api
install;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"
Test case for PetsRESTfulControllerSpecification
"
Class {
#name : #PetsRESTfulControllerSpecificationTest,
#superclass : #TestCase,
#category : #'Stargate-Examples-Tests'
}

{ #category : #tests }
PetsRESTfulControllerSpecificationTest >> testTemplate [

| spec |

spec := PetsRESTfulControllerSpecification new.

self assert: spec idTemplate equals: '/pets/<identifier:IsInteger>'
]
Loading

0 comments on commit e97b708

Please sign in to comment.