Files
openfoodnetwork/engines/dfc_provider/spec/requests/enterprise_groups_spec.rb
2025-05-20 12:45:34 +02:00

71 lines
1.9 KiB
Ruby

# frozen_string_literal: true
require_relative "../swagger_helper"
RSpec.describe "EnterpriseGroups", swagger_doc: "dfc.yaml" do
let(:user) { create(:oidc_user, id: 12_345) }
let(:group) {
create(
:enterprise_group,
id: 60_000, owner: user, name: "Sustainable Farmers", address:,
enterprises: [enterprise],
)
}
let(:address) { create(:address, id: 40_000, address1: "8 Acres Drive") }
let(:enterprise) { create(:enterprise, id: 10_000) }
before { login_as user }
path "/api/dfc/enterprise_groups" do
get "List groups" do
produces "application/json"
response "200", "successful" do
let!(:groups) { [group] }
run_test! do
graph = json_response["@graph"]
expect(graph[0]["@type"]).to eq "dfc-b:Person"
expect(graph[0]).to include(
"dfc-b:affiliates" => "http://test.host/api/dfc/enterprise_groups/60000",
)
expect(graph[1]["@type"]).to eq "dfc-b:Enterprise"
expect(graph[1]).to include(
"dfc-b:name" => "Sustainable Farmers",
"dfc-b:affiliatedBy" => "http://test.host/api/dfc/enterprises/10000",
)
end
end
end
end
path "/api/dfc/enterprise_groups/{id}" do
get "Show groups" do
parameter name: :id, in: :path, type: :string
produces "application/json"
response "200", "successful" do
let(:id) { group.id }
run_test! do
graph = json_response["@graph"]
expect(graph[0]).to include(
"@type" => "dfc-b:Enterprise",
"dfc-b:name" => "Sustainable Farmers",
"dfc-b:hasAddress" => "http://test.host/api/dfc/addresses/40000",
"dfc-b:affiliatedBy" => "http://test.host/api/dfc/enterprises/10000",
)
expect(graph[1]).to include(
"@type" => "dfc-b:Address",
"dfc-b:hasStreet" => "8 Acres Drive",
)
end
end
end
end
end