spec_helper.rb revision 6b3c7e4142f5868d6ad67b43926905ffa851caec
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger# This file is copied to spec/ when you run 'rails generate rspec:install'
e8ceec219830407bded84634716d37d45d3a5872Julian KornbergerENV["RAILS_ENV"] ||= 'test'
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerrequire File.expand_path("../../test/shared_helper", __FILE__)
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehaseinclude SharedHelper
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehaseuse_simplecov
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehaserequire File.expand_path("../../config/environment", __FILE__)
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehaserequire 'rspec/rails'
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksarequire 'rspec/autorun'
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksarequire Rails.root.join('config', 'database_cleaner.rb')
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksarequire 'addressable/template'
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksarequire 'webmock/rspec'
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase
287c635762a6d32ead332084a0ba2cbbd3e9c055Eugen KuksaWebMock.disable_net_connect!(allow_localhost: true)
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehaseelasticsearch_port = ENV['ELASTIC_TEST_PORT'].present? ? ENV['ELASTIC_TEST_PORT'] : '9250'
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim ReddehaseElasticsearch::Model.client = Elasticsearch::Client.new host: "localhost:#{elasticsearch_port}"
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa# Requires supporting ruby files with custom matchers and macros, etc,
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa# in spec/support/ and its subdirectories.
afd1d888784385307c9c0544597a513c2008d342Eugen KuksaDir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehaseclass ActionController::TestRequest
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase attr_writer :query_string
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase def query_string
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase @query_string.to_s
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase end
37376063320bfb86e0cb9fd4eda25c52c4a667b8Tim Reddehase
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerend
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerdef fixture_file(path)
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa fixture_path = Rails.root.join('test/fixtures/')
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa fixture_path.join(path)
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksaend
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksadef ontology_file(path, ext=nil)
287c635762a6d32ead332084a0ba2cbbd3e9c055Eugen Kuksa portion =
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa if ext
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa "#{path}.#{ext}"
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa elsif path.include?('.')
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa path
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa else
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa "#{path}.#{path.to_s.split('/').first}"
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa end
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger fixture_file("ontologies/#{portion}")
287c635762a6d32ead332084a0ba2cbbd3e9c055Eugen Kuksaend
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerdef hets_out_file(name, ext='xml')
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa ontology_file("hets-out/#{name}.#{ext}")
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerend
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerdef hets_uri(portion = nil, version = nil)
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa hets_instance = HetsInstance.choose
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger if hets_instance.nil?
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger FactoryGirl.create(:local_hets_instance)
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger hets_instance = HetsInstance.choose
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger end
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa specific = ''
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa # %2F is percent-encoding for forward slash /
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger specific << "ref%2F#{version}.*" if version
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger specific << "#{portion}.*" if portion
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger %r{#{hets_instance.uri}/dg/.*#{specific}}
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerend
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerdef stub_hets_for(fixture_file, with: nil, with_version: nil)
afd1d888784385307c9c0544597a513c2008d342Eugen Kuksa stub_request(:get, 'http://localhost:8000/version').
c2373562f73b6acd4b8fd31745458b78c257ea15Eugen Kuksa to_return(body: Hets.minimal_version_string)
c2373562f73b6acd4b8fd31745458b78c257ea15Eugen Kuksa stub_request(:get, hets_uri(with, with_version)).
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger to_return(body: fixture_file.read)
38eb8e414b6c73efa6bcf81760625385094b757bEugen Kuksaend
38eb8e414b6c73efa6bcf81760625385094b757bEugen Kuksa
e8ceec219830407bded84634716d37d45d3a5872Julian Kornbergerdef setup_hets
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger let(:hets_instance) { create(:local_hets_instance) }
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger before do
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger stub_request(:get, 'http://localhost:8000/version').
e8ceec219830407bded84634716d37d45d3a5872Julian Kornberger to_return(body: Hets.minimal_version_string)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa hets_instance
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa end
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksaend
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksadef add_fixture_file(repository, relative_file)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa path = ontology_file(relative_file)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa version_for_file(repository, path)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksaend
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksadef version_for_file(repository, path)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa dummy_user = FactoryGirl.create :user
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa basename = File.basename(path)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa version = repository.save_file path, basename, "#{basename} added", dummy_user
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksaend
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa# includes the convenience-method `define_ontology('name')`
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksainclude OntologyUnited::Convenience
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksadef parse_this(user, ontology, fixture_file)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa file = File.open(fixture_file)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa evaluator = Hets::Evaluator.new(user, ontology, io: file)
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa evaluator.import
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa file.close unless file.closed?
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksaend
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen KuksaRSpec.configure do |config|
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa # ## Mock Framework
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa # config.mock_with :mocha
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa # config.mock_with :flexmock
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa # config.mock_with :rr
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.mock_with :rspec
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.before(:suite) do
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa FactoryGirl.create :proof_statuses
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa end
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.before(:each) do
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa redis = WrappingRedis::RedisWrapper.new
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa redis.del redis.keys if redis.keys.any?
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa end
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.after(:each) do
e9a9e072b9f689539df23f287f650806810918c8Eugen Kuksa end
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.expose_current_running_example_as :example
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.infer_spec_type_from_file_location!
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.infer_base_class_for_anonymous_controllers = true
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.include Devise::TestHelpers, type: :controller
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.treat_symbols_as_metadata_keys_with_true_values = true
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa # Run specs in random order to surface order dependencies. If you find an
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa # order dependency and want to debug it, you can fix the order by providing
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa # the seed, which is printed after each run.
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa # --seed 1234
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksa config.order = "random"
6d7c847f432955f15fc9556a55a5402c9290a465Eugen Kuksaend
060405b0a2d5afdb551c6449e5cefec5651b4a5aEugen Kuksa