Skip to content

Commit 9d67c78

Browse files
committed
Test that overriden operations are supported by content negotiation
1 parent d03c629 commit 9d67c78

File tree

2 files changed

+53
-42
lines changed

2 files changed

+53
-42
lines changed
Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
Feature: Create-Retrieve-Update-Delete with a Overrode Operation context
1+
Feature: Create-Retrieve-Update-Delete with a Overridden Operation context
22
In order to use an hypermedia API
33
As a client software developer
44
I need to be able to retrieve, create, update and delete JSON-LD encoded resources.
55

66
@createSchema
77
Scenario: Create a resource
8-
When I send a "POST" request to "/overrode_operation_dummies" with body:
8+
When I send a "POST" request to "/overridden_operation_dummies" with body:
99
"""
1010
{
11-
"name": "My Overrode Operation Dummy",
11+
"name": "My Overridden Operation Dummy",
1212
"description" : "Gerard",
1313
"alias": "notWritable"
1414
}
@@ -19,52 +19,63 @@ Feature: Create-Retrieve-Update-Delete with a Overrode Operation context
1919
And the JSON should be equal to:
2020
"""
2121
{
22-
"@context": "/contexts/OverrodeOperationDummy",
23-
"@id": "/overrode_operation_dummies/1",
24-
"@type": "OverrodeOperationDummy",
25-
"name": "My Overrode Operation Dummy",
22+
"@context": "/contexts/OverriddenOperationDummy",
23+
"@id": "/overridden_operation_dummies/1",
24+
"@type": "OverriddenOperationDummy",
25+
"name": "My Overridden Operation Dummy",
2626
"alias": null,
2727
"description": "Gerard"
2828
}
2929
"""
3030

3131
Scenario: Get a resource
32-
When I send a "GET" request to "/overrode_operation_dummies/1"
32+
When I send a "GET" request to "/overridden_operation_dummies/1"
3333
Then the response status code should be 200
3434
And the response should be in JSON
3535
And the header "Content-Type" should be equal to "application/ld+json"
3636
And the JSON should be equal to:
3737
"""
3838
{
39-
"@context": "/contexts/OverrodeOperationDummy",
40-
"@id": "/overrode_operation_dummies/1",
41-
"@type": "OverrodeOperationDummy",
42-
"name": "My Overrode Operation Dummy",
39+
"@context": "/contexts/OverriddenOperationDummy",
40+
"@id": "/overridden_operation_dummies/1",
41+
"@type": "OverriddenOperationDummy",
42+
"name": "My Overridden Operation Dummy",
4343
"alias": null,
4444
"description": "Gerard"
4545
}
4646
"""
4747

48+
Scenario: Get a resource in XML
49+
When I add "Accept" header equal to "application/xml"
50+
And I send a "GET" request to "/overridden_operation_dummies/1"
51+
Then the response status code should be 200
52+
And the header "Content-Type" should be equal to "application/xml"
53+
And the response should be equal to
54+
"""
55+
<?xml version="1.0"?>
56+
<response><name>My Overridden Operation Dummy</name><alias/><description>Gerard</description></response>
57+
"""
58+
4859
Scenario: Get a not found exception
49-
When I send a "GET" request to "/overrode_operation_dummies/42"
60+
When I send a "GET" request to "/overridden_operation_dummies/42"
5061
Then the response status code should be 404
5162

5263
Scenario: Get a collection
53-
When I send a "GET" request to "/overrode_operation_dummies"
64+
When I send a "GET" request to "/overridden_operation_dummies"
5465
Then the response status code should be 200
5566
And the response should be in JSON
5667
And the header "Content-Type" should be equal to "application/ld+json"
5768
And the JSON should be equal to:
5869
"""
5970
{
60-
"@context": "/contexts/OverrodeOperationDummy",
61-
"@id": "\/overrode_operation_dummies",
71+
"@context": "/contexts/OverriddenOperationDummy",
72+
"@id": "\/overridden_operation_dummies",
6273
"@type": "hydra:Collection",
6374
"hydra:member": [
6475
{
65-
"@id": "\/overrode_operation_dummies\/1",
66-
"@type": "OverrodeOperationDummy",
67-
"name": "My Overrode Operation Dummy",
76+
"@id": "\/overridden_operation_dummies\/1",
77+
"@type": "OverriddenOperationDummy",
78+
"name": "My Overridden Operation Dummy",
6879
"alias": null,
6980
"description": "Gerard"
7081
}
@@ -74,10 +85,10 @@ Feature: Create-Retrieve-Update-Delete with a Overrode Operation context
7485
"""
7586

7687
Scenario: Update a resource
77-
When I send a "PUT" request to "/overrode_operation_dummies/1" with body:
88+
When I send a "PUT" request to "/overridden_operation_dummies/1" with body:
7889
"""
7990
{
80-
"@id": "/overrode_operation_dummies/1",
91+
"@id": "/overridden_operation_dummies/1",
8192
"name": "A nice dummy",
8293
"alias": "Dummy"
8394
}
@@ -88,33 +99,33 @@ Feature: Create-Retrieve-Update-Delete with a Overrode Operation context
8899
And the JSON should be equal to:
89100
"""
90101
{
91-
"@context": "/contexts/OverrodeOperationDummy",
92-
"@id": "/overrode_operation_dummies/1",
93-
"@type": "OverrodeOperationDummy",
102+
"@context": "/contexts/OverriddenOperationDummy",
103+
"@id": "/overridden_operation_dummies/1",
104+
"@type": "OverriddenOperationDummy",
94105
"alias": "Dummy",
95106
"description": "Gerard"
96107
}
97108
"""
98109

99110
Scenario: Get the final resource
100-
When I send a "GET" request to "/overrode_operation_dummies/1"
111+
When I send a "GET" request to "/overridden_operation_dummies/1"
101112
Then the response status code should be 200
102113
And the response should be in JSON
103114
And the header "Content-Type" should be equal to "application/ld+json"
104115
And the JSON should be equal to:
105116
"""
106117
{
107-
"@context": "/contexts/OverrodeOperationDummy",
108-
"@id": "/overrode_operation_dummies/1",
109-
"@type": "OverrodeOperationDummy",
110-
"name": "My Overrode Operation Dummy",
118+
"@context": "/contexts/OverriddenOperationDummy",
119+
"@id": "/overridden_operation_dummies/1",
120+
"@type": "OverriddenOperationDummy",
121+
"name": "My Overridden Operation Dummy",
111122
"alias": "Dummy",
112123
"description": "Gerard"
113124
}
114125
"""
115126

116127
@dropSchema
117128
Scenario: Delete a resource
118-
When I send a "DELETE" request to "/overrode_operation_dummies/1"
129+
When I send a "DELETE" request to "/overridden_operation_dummies/1"
119130
Then the response status code should be 204
120131
And the response should be empty

tests/Fixtures/TestBundle/Entity/OverrodeOperationDummy.php renamed to tests/Fixtures/TestBundle/Entity/OverriddenOperationDummy.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,32 +18,32 @@
1818
use Symfony\Component\Validator\Constraints as Assert;
1919

2020
/**
21-
* Overrode Operation Dummy.
21+
* Overridden Operation Dummy.
2222
*
2323
* @author Amrouche Hamza <[email protected]>
2424
*
2525
* @ApiResource(
2626
* attributes={
27-
* "normalization_context"={"groups"={"overrode_operation_dummy_read"}},
28-
* "denormalization_context"={"groups"={"overrode_operation_dummy_write"}}
27+
* "normalization_context"={"groups"={"overridden_operation_dummy_read"}},
28+
* "denormalization_context"={"groups"={"overridden_operation_dummy_write"}}
2929
* },
3030
* itemOperations={
3131
* "get"={
3232
* "method"="GET",
33-
* "normalization_context"={"groups"={"overrode_operation_dummy_get"}},
34-
* "denormalization_context"={"groups"={"overrode_operation_dummy_get"}}
33+
* "normalization_context"={"groups"={"overridden_operation_dummy_get"}},
34+
* "denormalization_context"={"groups"={"overridden_operation_dummy_get"}}
3535
* },
3636
* "put"={
3737
* "method"="PUT",
38-
* "normalization_context"={"groups"={"overrode_operation_dummy_put"}},
39-
* "denormalization_context"={"groups"={"overrode_operation_dummy_put"}}
38+
* "normalization_context"={"groups"={"overridden_operation_dummy_put"}},
39+
* "denormalization_context"={"groups"={"overridden_operation_dummy_put"}}
4040
* },
4141
* "delete"={"method"="DELETE"}
4242
* }
4343
* )
4444
* @ORM\Entity
4545
*/
46-
class OverrodeOperationDummy
46+
class OverriddenOperationDummy
4747
{
4848
/**
4949
* @var int The id.
@@ -59,7 +59,7 @@ class OverrodeOperationDummy
5959
*
6060
* @ORM\Column
6161
* @Assert\NotBlank
62-
* @Groups({"overrode_operation_dummy_read", "overrode_operation_dummy_write", "overrode_operation_dummy_get"})
62+
* @Groups({"overridden_operation_dummy_read", "overridden_operation_dummy_write", "overridden_operation_dummy_get"})
6363
* @ApiProperty(iri="http://schema.org/name")
6464
*/
6565
private $name;
@@ -68,7 +68,7 @@ class OverrodeOperationDummy
6868
* @var string The dummy name alias.
6969
*
7070
* @ORM\Column(nullable=true)
71-
* @Groups({"overrode_operation_dummy_read", "overrode_operation_dummy_put", "overrode_operation_dummy_get"})
71+
* @Groups({"overridden_operation_dummy_read", "overridden_operation_dummy_put", "overridden_operation_dummy_get"})
7272
* @ApiProperty(iri="https://schema.org/alternateName")
7373
*/
7474
private $alias;
@@ -77,14 +77,14 @@ class OverrodeOperationDummy
7777
* @var string A short description of the item.
7878
*
7979
* @ORM\Column(nullable=true)
80-
* @Groups({"overrode_operation_dummy_read" ,"overrode_operation_dummy_write", "overrode_operation_dummy_get", "overrode_operation_dummy_put"})
80+
* @Groups({"overridden_operation_dummy_read" ,"overridden_operation_dummy_write", "overridden_operation_dummy_get", "overridden_operation_dummy_put"})
8181
* @ApiProperty(iri="https://schema.org/description")
8282
*/
8383
public $description;
8484

8585
/**
8686
* @ORM\Column(nullable=true)
87-
* @Groups({"overrode_operation_dummy_write"})
87+
* @Groups({"overridden_operation_dummy_write"})
8888
*/
8989
public $notGettable;
9090

0 commit comments

Comments
 (0)