spec_helper.rb revision 0404717d2bad53ac5922514e490a2b07361d58d8
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# This file is copied to spec/ when you run 'rails generate rspec:install'
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo SirainenENV["RAILS_ENV"] ||= 'test'
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
8aacc9e7c84f8376822823ec98c2f551d4919b2eTimo Sirainenrequire File.expand_path("../../test/shared_helper", __FILE__)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Siraineninclude SharedHelper
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenuse_simplecov
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenrequire File.expand_path("../../config/environment", __FILE__)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenrequire 'rspec/rails'
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainenrequire 'rspec/autorun'
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenrequire Rails.root.join('config', 'database_cleaner.rb')
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainenrequire 'addressable/template'
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainenrequire 'webmock/rspec'
e6d7d19c328e7043ad35d5a52c1617bde915a16fTimo Sirainen
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen# Requires supporting ruby files with custom matchers and macros, etc,
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen# in spec/support/ and its subdirectories.
e6d7d19c328e7043ad35d5a52c1617bde915a16fTimo SirainenDir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
d7095f3a4466fbb78b2d5eb3d322bc15a5b0ab1fTimo Sirainen
d7095f3a4466fbb78b2d5eb3d322bc15a5b0ab1fTimo Sirainenclass ActionController::TestRequest
d7095f3a4466fbb78b2d5eb3d322bc15a5b0ab1fTimo Sirainen
d7095f3a4466fbb78b2d5eb3d322bc15a5b0ab1fTimo Sirainen attr_writer :query_string
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen def query_string
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen @query_string.to_s
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen end
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainen
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainenend
e6d7d19c328e7043ad35d5a52c1617bde915a16fTimo Sirainen
e6d7d19c328e7043ad35d5a52c1617bde915a16fTimo Sirainendef fixture_file(name, ext='xml')
e6d7d19c328e7043ad35d5a52c1617bde915a16fTimo Sirainen ontology_file("xml/#{name}.#{ext}")
bbf796c17f02538058d7559bfe96d677e5b55015Timo Sirainenend
8aacc9e7c84f8376822823ec98c2f551d4919b2eTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainendef ontology_file(path, ext=nil)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen fixture_path = Rails.root + "test/fixtures/ontologies/"
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen portion =
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen if ext
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen "#{path}.#{ext}"
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen elsif path.include?('.')
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen path
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen else
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen "#{path}.#{path.to_s.split('/').first}"
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen end
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen fixture_path.join(portion)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainenend
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainendef hets_uri(portion = nil)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen hets_instance = HetsInstance.choose
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen if hets_instance.nil?
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen FactoryGirl.create(:local_hets_instance)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen hets_instance = HetsInstance.choose
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen end
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen specific = "#{portion}.*" if portion
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen %r{#{hets_instance.uri}/dg/.*#{specific}}
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainenend
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainendef stub_hets_for(fixture_file, with: nil)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen stub_request(:get, 'http://localhost:8000/version').
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen to_return(body: Hets.minimal_version_string)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen stub_request(:get, hets_uri(with)).
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen to_return(body: fixture_file.read)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainenend
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainendef setup_hets
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen let(:hets_instance) { create(:local_hets_instance) }
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen before do
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen stub_request(:get, 'http://localhost:8000/version').
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen to_return(body: Hets.minimal_version_string)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen hets_instance
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen end
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainenend
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainendef add_fixture_file(repository, relative_file)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen path = ontology_file(relative_file)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen version_for_file(repository, path)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainenend
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainendef version_for_file(repository, path)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen dummy_user = FactoryGirl.create :user
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen basename = File.basename(path)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen version = repository.save_file path, basename, "#{basename} added", dummy_user
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainenend
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen# includes the convenience-method `define_ontology('name')`
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Siraineninclude OntologyUnited::Convenience
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainendef parse_this(user, ontology, fixture_file)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen file = File.open(fixture_file)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen evaluator = Hets::Evaluator.new(user, ontology, io: file)
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen evaluator.import
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen file.close unless file.closed?
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainenend
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo SirainenRSpec.configure do |config|
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen # ## Mock Framework
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen # config.mock_with :mocha
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen # config.mock_with :flexmock
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen # config.mock_with :rr
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen config.mock_with :rspec
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen config.before(:each) do
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen redis = WrappingRedis::RedisWrapper.new
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen redis.del redis.keys if redis.keys.any?
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen end
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen config.after(:each) do
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen end
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen config.expose_current_running_example_as :example
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen config.infer_spec_type_from_file_location!
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen config.infer_base_class_for_anonymous_controllers = true
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen config.include Devise::TestHelpers, type: :controller
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen config.treat_symbols_as_metadata_keys_with_true_values = true
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen # Run specs in random order to surface order dependencies. If you find an
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen # order dependency and want to debug it, you can fix the order by providing
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen # the seed, which is printed after each run.
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen # --seed 1234
dc2d666a911bfab4c7fa85d5f9cd6df78aafdb1fTimo Sirainen config.order = "random"
dc2d666a911bfab4c7fa85d5f9cd6df78aafdb1fTimo Sirainenend
2382b8f17365dbdb758630f0d7a488af5336d7b5Timo Sirainen