spec_helper.rb revision b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger# This file is copied to spec/ when you run 'rails generate rspec:install'
e437b19c184243f688c2dd9b3bf083a454c804c7Julian KornbergerENV["RAILS_ENV"] ||= 'test'
e3ae5c822699ae375f274bec0a24c1a0b36b731fJulian Kornberger
8020ba658ffa8f8c9a14ba3a7d2e9257ea400becTim Reddehaserequire File.expand_path("../../test/shared_helper", __FILE__)
8020ba658ffa8f8c9a14ba3a7d2e9257ea400becTim Reddehase
8020ba658ffa8f8c9a14ba3a7d2e9257ea400becTim Reddehaseinclude SharedHelper
8020ba658ffa8f8c9a14ba3a7d2e9257ea400becTim Reddehaseuse_simplecov
e3ae5c822699ae375f274bec0a24c1a0b36b731fJulian Kornberger
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerrequire File.expand_path("../../config/environment", __FILE__)
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerrequire 'rspec/rails'
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerrequire 'rspec/autorun'
0782f0889387f60a6bcf31f9f869c930466db1dbEugen Kuksarequire Rails.root.join('config', 'database_cleaner.rb')
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehaserequire 'addressable/template'
17e57f34169ca7ed023832806a77f0e0613074f1Tim Reddehaserequire 'webmock/rspec'
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
7aa257096578ae891833367f3e2cc75ded9dbd36Eileen BolloffWebMock.disable_net_connect!(allow_localhost: true)
daa05c1ca31894d2bcba80bea773829908efbef8Tim Reddehaseelasticsearch_port = ENV['ELASTIC_TEST_PORT'].present? ? ENV['ELASTIC_TEST_PORT'] : '9250'
daa05c1ca31894d2bcba80bea773829908efbef8Tim ReddehaseElasticsearch::Model.client = Elasticsearch::Client.new host: "localhost:#{elasticsearch_port}"
7aa257096578ae891833367f3e2cc75ded9dbd36Eileen Bolloff
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger# Requires supporting ruby files with custom matchers and macros, etc,
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger# in spec/support/ and its subdirectories.
e437b19c184243f688c2dd9b3bf083a454c804c7Julian KornbergerDir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehaseclass ActionController::TestRequest
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase
789e293810190b918998fa027c76126e7aa4bf38henning mueller attr_writer :query_string
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase def query_string
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase @query_string.to_s
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase end
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehaseend
ef68dc9d6ba7fc331ecdef35f74cff6bb12835b8Tim Reddehase
8855a26fb8a7c3743d2ae2cb817e21fb23b674c4Tim Reddehasedef fixture_file(path)
8855a26fb8a7c3743d2ae2cb817e21fb23b674c4Tim Reddehase fixture_path = Rails.root.join('test/fixtures/')
8855a26fb8a7c3743d2ae2cb817e21fb23b674c4Tim Reddehase fixture_path.join(path)
658c5ac5444dac6fd0b33ea20690fa14103dbaebTim Reddehaseend
658c5ac5444dac6fd0b33ea20690fa14103dbaebTim Reddehase
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehasedef ontology_file(path, ext=nil)
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase portion =
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase if ext
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase "#{path}.#{ext}"
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase elsif path.include?('.')
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase path
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase else
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase "#{path}.#{path.to_s.split('/').first}"
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase end
8855a26fb8a7c3743d2ae2cb817e21fb23b674c4Tim Reddehase fixture_file("ontologies/#{portion}")
8855a26fb8a7c3743d2ae2cb817e21fb23b674c4Tim Reddehaseend
8855a26fb8a7c3743d2ae2cb817e21fb23b674c4Tim Reddehase
8855a26fb8a7c3743d2ae2cb817e21fb23b674c4Tim Reddehasedef hets_out_file(name, ext='xml')
8855a26fb8a7c3743d2ae2cb817e21fb23b674c4Tim Reddehase ontology_file("hets-out/#{name}.#{ext}")
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehaseend
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase
a41053781a26a3dafdbbe8b740b48128cdacfb43Tim Reddehasedef hets_uri(portion = nil, version = nil)
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase hets_instance = HetsInstance.choose
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase if hets_instance.nil?
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase FactoryGirl.create(:local_hets_instance)
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase hets_instance = HetsInstance.choose
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase end
a41053781a26a3dafdbbe8b740b48128cdacfb43Tim Reddehase specific = ''
a41053781a26a3dafdbbe8b740b48128cdacfb43Tim Reddehase # %2F is percent-encoding for forward slash /
a41053781a26a3dafdbbe8b740b48128cdacfb43Tim Reddehase specific << "ref%2F#{version}.*" if version
a41053781a26a3dafdbbe8b740b48128cdacfb43Tim Reddehase specific << "#{portion}.*" if portion
0404717d2bad53ac5922514e490a2b07361d58d8Tim Reddehase %r{#{hets_instance.uri}/dg/.*#{specific}}
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehaseend
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase
a41053781a26a3dafdbbe8b740b48128cdacfb43Tim Reddehasedef stub_hets_for(fixture_file, with: nil, with_version: nil)
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase stub_request(:get, 'http://localhost:8000/version').
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase to_return(body: Hets.minimal_version_string)
a41053781a26a3dafdbbe8b740b48128cdacfb43Tim Reddehase stub_request(:get, hets_uri(with, with_version)).
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase to_return(body: fixture_file.read)
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehaseend
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehasedef setup_hets
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase let(:hets_instance) { create(:local_hets_instance) }
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase before do
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase stub_request(:get, 'http://localhost:8000/version').
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase to_return(body: Hets.minimal_version_string)
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase hets_instance
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase end
3c4b1bd39fa36d241f2ef0d6f7ebbf2a9a6f4d36henning muellerend
3c4b1bd39fa36d241f2ef0d6f7ebbf2a9a6f4d36henning mueller
6bbb03b1a673f7709df590df43aaed9e8740f671Tim Reddehasedef add_fixture_file(repository, relative_file)
e850c5fd45bb26b64e3a1d02f8beb3a951470d27Tim Reddehase path = ontology_file(relative_file)
8bc65b8b85b830b0432ea7701f2047acd552cedcTim Reddehase version_for_file(repository, path)
8bc65b8b85b830b0432ea7701f2047acd552cedcTim Reddehaseend
6bbb03b1a673f7709df590df43aaed9e8740f671Tim Reddehase
8bc65b8b85b830b0432ea7701f2047acd552cedcTim Reddehasedef version_for_file(repository, path)
7c7a19761235efff584ee65a1c6dc4aa1735ff64Eugen Kuksa dummy_user = create :user
8bc65b8b85b830b0432ea7701f2047acd552cedcTim Reddehase basename = File.basename(path)
6bbb03b1a673f7709df590df43aaed9e8740f671Tim Reddehase version = repository.save_file path, basename, "#{basename} added", dummy_user
6bbb03b1a673f7709df590df43aaed9e8740f671Tim Reddehaseend
6bbb03b1a673f7709df590df43aaed9e8740f671Tim Reddehase
e5fc71a1941c833e676942534582f2adb510660dTim Reddehase# includes the convenience-method `define_ontology('name')`
8bc65b8b85b830b0432ea7701f2047acd552cedcTim Reddehaseinclude OntologyUnited::Convenience
8bc65b8b85b830b0432ea7701f2047acd552cedcTim Reddehase
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehasedef parse_this(user, ontology, fixture_file)
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase file = File.open(fixture_file)
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase evaluator = Hets::Evaluator.new(user, ontology, io: file)
56cef2d91f243b2b1f773acc20f9c5ae9fb5c537Tim Reddehase evaluator.import
dc6831d0eb2d0ab3af7b0268a429562b110e07bbTim Reddehase file.close unless file.closed?
56cef2d91f243b2b1f773acc20f9c5ae9fb5c537Tim Reddehaseend
56cef2d91f243b2b1f773acc20f9c5ae9fb5c537Tim Reddehase
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa# Recording HTTP Requests
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen KuksaVCR.configure do |c|
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa c.cassette_library_dir = 'test/fixtures/vcr'
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa c.hook_into :webmock
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa c.ignore_localhost = true
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa c.ignore_hosts \
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa '127.0.0.1',
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa 'localhost',
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa 'colore.googlecode.com',
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa 'trac.informatik.uni-bremen.de'
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksaend
b5d0ff6d0e8ec48e5e484716f3ae17e9cacf3987Eugen Kuksa
e437b19c184243f688c2dd9b3bf083a454c804c7Julian KornbergerRSpec.configure do |config|
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger # ## Mock Framework
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger # config.mock_with :mocha
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger # config.mock_with :flexmock
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger # config.mock_with :rr
a06b758dc863e147d288497ee69491afc2d23b7dTim Reddehase config.mock_with :rspec
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
6b3c7e4142f5868d6ad67b43926905ffa851caecEugen Kuksa config.before(:suite) do
6b3c7e4142f5868d6ad67b43926905ffa851caecEugen Kuksa FactoryGirl.create :proof_statuses
6b3c7e4142f5868d6ad67b43926905ffa851caecEugen Kuksa end
6b3c7e4142f5868d6ad67b43926905ffa851caecEugen Kuksa
836ef862a9f5bd2a1d5c68bbccb11c00b248758aTim Reddehase config.before(:each) do
836ef862a9f5bd2a1d5c68bbccb11c00b248758aTim Reddehase redis = WrappingRedis::RedisWrapper.new
6b136443f2bc8ea49192210a7281ffa0f44b14fcTim Reddehase redis.del redis.keys if redis.keys.any?
836ef862a9f5bd2a1d5c68bbccb11c00b248758aTim Reddehase end
836ef862a9f5bd2a1d5c68bbccb11c00b248758aTim Reddehase
cfe6bf1bc38ab15b759dee8bb5c86c3727058a2eTim Reddehase config.after(:each) do
cfe6bf1bc38ab15b759dee8bb5c86c3727058a2eTim Reddehase end
cfe6bf1bc38ab15b759dee8bb5c86c3727058a2eTim Reddehase
6876ece18854869a08606c12e0e814435fa73a29Tim Reddehase config.expose_current_running_example_as :example
6876ece18854869a08606c12e0e814435fa73a29Tim Reddehase
6876ece18854869a08606c12e0e814435fa73a29Tim Reddehase config.infer_spec_type_from_file_location!
6876ece18854869a08606c12e0e814435fa73a29Tim Reddehase
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger config.infer_base_class_for_anonymous_controllers = true
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger config.include Devise::TestHelpers, type: :controller
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger
61467f8ae537212ba3c895868c91235a21985cb8Tim Reddehase config.treat_symbols_as_metadata_keys_with_true_values = true
61467f8ae537212ba3c895868c91235a21985cb8Tim Reddehase
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger # Run specs in random order to surface order dependencies. If you find an
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger # order dependency and want to debug it, you can fix the order by providing
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger # the seed, which is printed after each run.
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger # --seed 1234
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornberger config.order = "random"
ee9341b3b65f9d567605249940e4948af119e784Eugen Kuksa
ee9341b3b65f9d567605249940e4948af119e784Eugen Kuksa config.mock_with :rspec do |mocks|
ee9341b3b65f9d567605249940e4948af119e784Eugen Kuksa mocks.yield_receiver_to_any_instance_implementation_blocks = false
ee9341b3b65f9d567605249940e4948af119e784Eugen Kuksa end
e437b19c184243f688c2dd9b3bf083a454c804c7Julian Kornbergerend