spec/support/shared_examples.rb (40 lines of code) (raw):

# # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one # or more contributor license agreements. Licensed under the Elastic License; # you may not use this file except in compliance with the Elastic License. # # frozen_string_literal: true shared_examples 'implements all private methods of base class' do it '' do base_class_private_methods = get_class_specific_private_methods(base_class_instance) specific_class_private_methods = get_class_specific_private_methods(concrete_class_instance) expect(specific_class_private_methods).to include(*base_class_private_methods) end end shared_examples 'does not populate updated_at' do it 'returns document that does not have updated_at field' do expect(document.with_indifferent_access).to_not include(have_key(:updated_at)) end end shared_examples 'a connector' do it 'implements display_name class method' do expect(described_class.display_name).to_not be_nil end it 'implements service_type class method' do expect(described_class.service_type).to_not be_nil end it 'implements configurable_fields class method' do expect(described_class.configurable_fields).to_not be_nil end it 'implements validate filtering class method' do expect(described_class.validate_filtering).to_not be_nil end it 'configurable_fields class method returns valid configuration' do # expected configurable fields format: # { # 'key' => { # 'label' => '', # 'value' => '' # } # } configurable_fields = described_class.configurable_fields.with_indifferent_access expect(configurable_fields).to respond_to(:keys) expect(configurable_fields).to respond_to(:[]) configurable_fields.each_key do |field_name| field_definition = configurable_fields[field_name] # is a hash too expect(field_definition).to respond_to(:keys) expect(field_definition).to respond_to(:[]) expect(field_definition['label']).to_not be_nil if field_definition['value'] expect(field_definition['value']).to_not be_nil end end end end