gds-api-adapters 26.5.0 → 26.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/gds_api/publishing_api_v2.rb +5 -0
- data/lib/gds_api/version.rb +1 -1
- data/test/publishing_api_v2_test.rb +101 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3030fdcb2fb240546b4d1d5fc55a277621facf0a
|
4
|
+
data.tar.gz: 4cb591fdd8b8227355a9dd17a733dcf5d621f303
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e64ffcc0ffef99a3a3b298b5b9edc7e86c27da5534ef81f1d5e292952cca31730a9e284be563721c8583576887a1ebf2c3eed85cd6575c49214eeb089a938d3c
|
7
|
+
data.tar.gz: 1f7055f253784348b9349609ff65503fa124d08e9b8fc77081b9f2eca99c94d5e3c6769c92d0ec16fc492c5a37a3b09acaa807b910e66e6168f74bbbd50b9912
|
@@ -57,6 +57,11 @@ class GdsApi::PublishingApiV2 < GdsApi::Base
|
|
57
57
|
get_json("#{endpoint}/v2/content#{query}")
|
58
58
|
end
|
59
59
|
|
60
|
+
def get_linked_items(content_id, params = {})
|
61
|
+
query = query_string(params)
|
62
|
+
get_json("#{endpoint}/v2/linked/#{content_id}#{query}")
|
63
|
+
end
|
64
|
+
|
60
65
|
private
|
61
66
|
|
62
67
|
def content_url(content_id, params = {})
|
data/lib/gds_api/version.rb
CHANGED
@@ -1005,4 +1005,105 @@ describe GdsApi::PublishingApiV2 do
|
|
1005
1005
|
end
|
1006
1006
|
end
|
1007
1007
|
end
|
1008
|
+
describe "#get_linked_items" do
|
1009
|
+
describe "if the content item does not exist" do
|
1010
|
+
before do
|
1011
|
+
publishing_api
|
1012
|
+
.given("no content exists")
|
1013
|
+
.upon_receiving("a request to return the items linked to it")
|
1014
|
+
.with(
|
1015
|
+
method: :get,
|
1016
|
+
path: "/v2/linked/#{@content_id}",
|
1017
|
+
query: "fields%5B%5D=content_id&fields%5B%5D=base_path&link_type=topic",
|
1018
|
+
)
|
1019
|
+
.will_respond_with(
|
1020
|
+
status: 404,
|
1021
|
+
body: {
|
1022
|
+
"error" => {
|
1023
|
+
"code" => 404,
|
1024
|
+
"message" => Pact.term(generate: "not found", matcher:/\S+/)
|
1025
|
+
},
|
1026
|
+
},
|
1027
|
+
headers: {
|
1028
|
+
"Content-Type" => "application/json; charset=utf-8",
|
1029
|
+
},
|
1030
|
+
)
|
1031
|
+
end
|
1032
|
+
|
1033
|
+
it "404s" do
|
1034
|
+
response = @api_client.get_linked_items(
|
1035
|
+
@content_id,
|
1036
|
+
{
|
1037
|
+
link_type: "topic",
|
1038
|
+
fields: ["content_id", "base_path"],
|
1039
|
+
}
|
1040
|
+
)
|
1041
|
+
assert_nil response
|
1042
|
+
end
|
1043
|
+
end
|
1044
|
+
|
1045
|
+
describe "there are two documents that link to the wantend document" do
|
1046
|
+
before do
|
1047
|
+
content_id2 = "08dfd5c3-d935-4e81-88fd-cfe65b78893d"
|
1048
|
+
content_id3 = "e2961462-bc37-48e9-bb98-c981ef1a2d59"
|
1049
|
+
|
1050
|
+
@linked_content_item = content_item_for_content_id("6cb2cf8c-670f-4de3-97d5-6ad9114581c7")
|
1051
|
+
@linking_content_item1 = content_item_for_content_id(content_id3,
|
1052
|
+
"base_path" => "/item-b",
|
1053
|
+
"links" => {
|
1054
|
+
"topic" => [ @linked_content_item['content_id1'] ]
|
1055
|
+
})
|
1056
|
+
@linking_content_item2 = content_item_for_content_id(content_id2,
|
1057
|
+
"base_path" => "/item-a",
|
1058
|
+
"links" => {
|
1059
|
+
"topic" => [ @linked_content_item['content_id1'] ],
|
1060
|
+
})
|
1061
|
+
|
1062
|
+
publishing_api
|
1063
|
+
.given("there are two documents with a 'topic' link to another document")
|
1064
|
+
.upon_receiving("a get linked request")
|
1065
|
+
.with(
|
1066
|
+
method: :get,
|
1067
|
+
path: "/v2/linked/" + @linked_content_item['content_id'],
|
1068
|
+
query: "fields%5B%5D=content_id&fields%5B%5D=base_path&link_type=topic",
|
1069
|
+
headers: {
|
1070
|
+
"Content-Type" => "application/json",
|
1071
|
+
},
|
1072
|
+
)
|
1073
|
+
.will_respond_with(
|
1074
|
+
status: 200,
|
1075
|
+
body: [
|
1076
|
+
{
|
1077
|
+
content_id: @linking_content_item1["content_id"],
|
1078
|
+
base_path: @linking_content_item1["base_path"]
|
1079
|
+
},
|
1080
|
+
{
|
1081
|
+
content_id: @linking_content_item2["content_id"],
|
1082
|
+
base_path: @linking_content_item2["base_path"]
|
1083
|
+
}
|
1084
|
+
]
|
1085
|
+
)
|
1086
|
+
end
|
1087
|
+
|
1088
|
+
it "returns the requested fields of linking items" do
|
1089
|
+
response = @api_client.get_linked_items(
|
1090
|
+
@linked_content_item["content_id"],
|
1091
|
+
{
|
1092
|
+
link_type: "topic",
|
1093
|
+
fields: ["content_id", "base_path"],
|
1094
|
+
}
|
1095
|
+
)
|
1096
|
+
assert_equal 200, response.code
|
1097
|
+
|
1098
|
+
expected_documents = [
|
1099
|
+
{ "content_id" => @linking_content_item2["content_id"], "base_path" => "/item-a" },
|
1100
|
+
{ "content_id" => @linking_content_item1["content_id"], "base_path" => "/item-b" },
|
1101
|
+
]
|
1102
|
+
|
1103
|
+
expected_documents.each do |document|
|
1104
|
+
response.to_a.must_include document
|
1105
|
+
end
|
1106
|
+
end
|
1107
|
+
end
|
1108
|
+
end
|
1008
1109
|
end
|