Module: WikidataAdaptor::TestHelpers::RestApi

Includes:
Aliases, Descriptions, Items, Labels, OpenApiDocument, Properties, PropertyDataTypes, SearchItem, SearchProperty, Sitelinks, Statements
Defined in:
lib/wikidata_adaptor/test_helpers/rest_api.rb,
lib/wikidata_adaptor/test_helpers/rest_api/items.rb,
lib/wikidata_adaptor/test_helpers/rest_api/labels.rb,
lib/wikidata_adaptor/test_helpers/rest_api/aliases.rb,
lib/wikidata_adaptor/test_helpers/rest_api/sitelinks.rb,
lib/wikidata_adaptor/test_helpers/rest_api/properties.rb,
lib/wikidata_adaptor/test_helpers/rest_api/statements.rb,
lib/wikidata_adaptor/test_helpers/rest_api/search_item.rb,
lib/wikidata_adaptor/test_helpers/rest_api/descriptions.rb,
lib/wikidata_adaptor/test_helpers/rest_api/search_property.rb,
lib/wikidata_adaptor/test_helpers/rest_api/support/support.rb,
lib/wikidata_adaptor/test_helpers/rest_api/open_api_document.rb,
lib/wikidata_adaptor/test_helpers/rest_api/property_data_types.rb

Overview

WebMock stubs for the Wikibase REST API

Include this module in your RSpec tests to access stub methods for all Wikibase REST API endpoints.

Examples:

RSpec.describe MyClass do
  include WikidataAdaptor::TestHelpers::RestApi

  it "fetches an item" do
    stub_get_item("Q42")
    # ...
  end
end

Defined Under Namespace

Modules: Aliases, Descriptions, Items, Labels, OpenApiDocument, Properties, PropertyDataTypes, SearchItem, SearchProperty, Sitelinks, Statements, Support

Constant Summary collapse

WIKIBASE_REST_ENDPOINT =

Default test endpoint for stubbed requests

ENV["WIKIBASE_REST_ENDPOINT"] || "https://test.test/w/rest.php/wikibase"

Instance Method Summary collapse

Methods included from SearchProperty

#stub_search_properties, #stub_suggest_properties

Methods included from SearchItem

#stub_search_items, #stub_suggest_items

Methods included from PropertyDataTypes

#stub_get_property_data_types

Methods included from Statements

#stub_delete_item_statement, #stub_delete_item_statement_unexpected_error, #stub_delete_property_statement, #stub_delete_property_statement_unexpected_error, #stub_delete_statement, #stub_delete_statement_unexpected_error, #stub_get_item_statement, #stub_get_item_statements, #stub_get_property_statement, #stub_get_property_statements, #stub_get_statement, #stub_patch_item_statement, #stub_patch_item_statement_unexpected_error, #stub_patch_property_statement, #stub_patch_property_statement_unexpected_error, #stub_patch_statement, #stub_patch_statement_unexpected_error, #stub_post_item_statement, #stub_post_item_statement_unexpected_error, #stub_post_property_statement, #stub_post_property_statement_unexpected_error, #stub_put_item_statement, #stub_put_item_statement_unexpected_error, #stub_put_property_statement, #stub_put_property_statement_unexpected_error, #stub_put_statement, #stub_put_statement_unexpected_error

Methods included from Descriptions

#stub_delete_item_description, #stub_delete_item_description_unexpected_error, #stub_delete_property_description, #stub_delete_property_description_unexpected_error, #stub_get_item_description, #stub_get_item_description_with_language_fallback, #stub_get_item_description_with_language_fallback_redirect, #stub_get_item_descriptions, #stub_get_property_description, #stub_get_property_description_with_language_fallback, #stub_get_property_description_with_language_fallback_redirect, #stub_get_property_descriptions, #stub_patch_item_descriptions, #stub_patch_item_descriptions_unexpected_error, #stub_patch_property_descriptions, #stub_patch_property_descriptions_unexpected_error, #stub_put_item_description, #stub_put_item_description_unexpected_error, #stub_put_property_description, #stub_put_property_description_unexpected_error

Methods included from Labels

#stub_delete_item_label, #stub_delete_item_label_unexpected_error, #stub_delete_property_label, #stub_delete_property_label_unexpected_error, #stub_get_item_label, #stub_get_item_label_with_language_fallback, #stub_get_item_label_with_language_fallback_redirect, #stub_get_item_labels, #stub_get_property_label, #stub_get_property_label_with_language_fallback, #stub_get_property_label_with_language_fallback_redirect, #stub_get_property_labels, #stub_patch_item_labels, #stub_patch_item_labels_unexpected_error, #stub_patch_property_labels, #stub_patch_property_labels_unexpected_error, #stub_put_item_label, #stub_put_item_label_unexpected_error, #stub_put_property_label, #stub_put_property_label_unexpected_error

Methods included from Properties

#stub_get_property, #stub_get_property_invalid_property, #stub_get_property_not_found, #stub_get_property_unexpected_error, #stub_patch_property, #stub_patch_property_unexpected_error, #stub_post_property, #stub_post_property_access_denied, #stub_post_property_data_policy_violation, #stub_post_property_invalid_property, #stub_post_property_request_limit_reached, #stub_post_property_unexpected_error

Methods included from Support

#load_openapi_spec, #load_path_example, #posted_item_payload_fixture, #posted_item_response_fixture, #posted_property_payload_fixture, #posted_property_response_fixture

Methods included from Sitelinks

#stub_delete_item_sitelink, #stub_delete_item_sitelink_unexpected_error, #stub_get_item_sitelink, #stub_get_item_sitelinks, #stub_patch_item_sitelinks, #stub_patch_item_sitelinks_unexpected_error, #stub_put_item_sitelink, #stub_put_item_sitelink_unexpected_error

Methods included from Items

#stub_get_item, #stub_get_item_invalid_item, #stub_get_item_not_found, #stub_get_item_unexpected_error, #stub_patch_item, #stub_patch_item_unexpected_error, #stub_post_item, #stub_post_item_access_denied, #stub_post_item_data_policy_violation, #stub_post_item_invalid_item, #stub_post_item_request_limit_reached, #stub_post_item_unexpected_error

Methods included from Aliases

#stub_get_item_alias, #stub_get_item_aliases, #stub_get_property_alias, #stub_get_property_aliases, #stub_patch_item_aliases, #stub_patch_item_aliases_unexpected_error, #stub_patch_property_aliases, #stub_patch_property_aliases_unexpected_error, #stub_post_item_aliases, #stub_post_item_aliases_created, #stub_post_item_aliases_unexpected_error, #stub_post_property_aliases, #stub_post_property_aliases_created, #stub_post_property_aliases_unexpected_error

Methods included from OpenApiDocument

#stub_get_openapi_document

Instance Method Details

#stub_rest_api_request(method, path, with: {}, response_status: 200, response_headers: {}, response_body: {}, session: nil) ⇒ WebMock::RequestStub

Stub a Wikibase REST API request with WebMock

This is the base method used by all specific stub_* helpers. Use the specific stub methods instead of calling this directly.

Parameters:

  • method (Symbol)

    HTTP method (:get, :post, :put, :patch, :delete)

  • path (String)

    API path (e.g., "/v1/entities/items/Q42")

  • with (Hash) (defaults to: {})

    Optional request matching criteria

  • response_status (Integer) (defaults to: 200)

    HTTP status code to return

  • response_headers (Hash) (defaults to: {})

    HTTP headers to return

  • response_body (Hash, Array, String) (defaults to: {})

    Response body

  • session (String, nil) (defaults to: nil)

    Optional session token

Returns:

  • (WebMock::RequestStub)

    The configured stub



64
65
66
67
68
69
70
71
72
73
# File 'lib/wikidata_adaptor/test_helpers/rest_api.rb', line 64

def stub_rest_api_request(method, path, with: {}, response_status: 200, response_headers: {}, response_body: {}, session: nil)
  with.merge!(headers: { WikidataAdaptor::RestApi::AUTH_HEADER_NAME => session }) if session
  session = nil if response_status >= 400
  to_return = { status: response_status, headers: response_headers, body: prepare_response(response_body, session) }
  if with.empty?
    stub_request(method, "#{WIKIBASE_REST_ENDPOINT}#{path}").to_return(**to_return)
  else
    stub_request(method, "#{WIKIBASE_REST_ENDPOINT}#{path}").with(**with).to_return(**to_return)
  end
end