spec_helper.rb revision 8855a26fb8a7c3743d2ae2cb817e21fb23b674c4
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber# This file is copied to spec/ when you run 'rails generate rspec:install'
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane GraberENV["RAILS_ENV"] ||= 'test'
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberrequire File.expand_path("../../test/shared_helper", __FILE__)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberinclude SharedHelper
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberuse_simplecov
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberrequire File.expand_path("../../config/environment", __FILE__)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberrequire 'rspec/rails'
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberrequire 'rspec/autorun'
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberrequire Rails.root.join('config', 'database_cleaner.rb')
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberrequire 'addressable/template'
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberrequire 'webmock/rspec'
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber# Requires supporting ruby files with custom matchers and macros, etc,
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber# in spec/support/ and its subdirectories.
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane GraberDir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberclass ActionController::TestRequest
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber attr_writer :query_string
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber def query_string
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber @query_string.to_s
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber end
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberend
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberdef fixture_file(path)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber fixture_path = Rails.root.join('test/fixtures/')
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber fixture_path.join(path)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberend
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
fd2b7320e3562450111b5adaabcb7f6b9c8d9d13Stéphane Graberdef ontology_file(path, ext=nil)
fd2b7320e3562450111b5adaabcb7f6b9c8d9d13Stéphane Graber portion =
fd2b7320e3562450111b5adaabcb7f6b9c8d9d13Stéphane Graber if ext
fd2b7320e3562450111b5adaabcb7f6b9c8d9d13Stéphane Graber "#{path}.#{ext}"
fd2b7320e3562450111b5adaabcb7f6b9c8d9d13Stéphane Graber elsif path.include?('.')
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber path
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber else
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber "#{path}.#{path.to_s.split('/').first}"
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber end
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber fixture_file("ontologies/#{portion}")
fd2b7320e3562450111b5adaabcb7f6b9c8d9d13Stéphane Graberend
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberdef hets_out_file(name, ext='xml')
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber ontology_file("hets-out/#{name}.#{ext}")
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberend
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberdef hets_uri(portion = nil)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber hets_instance = HetsInstance.choose
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber if hets_instance.nil?
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber FactoryGirl.create(:local_hets_instance)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber hets_instance = HetsInstance.choose
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber end
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber specific = "#{portion}.*" if portion
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber %r{#{hets_instance.uri}/dg/.*#{specific}}
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberend
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberdef stub_hets_for(fixture_file, with: nil)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber stub_request(:get, 'http://localhost:8000/version').
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber to_return(body: Hets.minimal_version_string)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber stub_request(:get, hets_uri(with)).
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber to_return(body: fixture_file.read)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberend
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberdef setup_hets
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber let(:hets_instance) { create(:local_hets_instance) }
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber before do
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber stub_request(:get, 'http://localhost:8000/version').
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber to_return(body: Hets.minimal_version_string)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber hets_instance
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber end
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberend
c2997f9e6bc45936c46482af4a682af33880791cStéphane Graber
48356bbfdf8f277c5fe65287d76b7d891ca40964Stéphane Graberdef add_fixture_file(repository, relative_file)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber path = ontology_file(relative_file)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber version_for_file(repository, path)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberend
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graberdef version_for_file(repository, path)
45794802f13e5db18b5d7acb45169e1f4e8b70b2Stéphane Graber dummy_user = FactoryGirl.create :user
basename = File.basename(path)
version = repository.save_file path, basename, "#{basename} added", dummy_user
end
# includes the convenience-method `define_ontology('name')`
include OntologyUnited::Convenience
def parse_this(user, ontology, fixture_file)
file = File.open(fixture_file)
evaluator = Hets::Evaluator.new(user, ontology, io: file)
evaluator.import
file.close unless file.closed?
end
RSpec.configure do |config|
# ## Mock Framework
# config.mock_with :mocha
# config.mock_with :flexmock
# config.mock_with :rr
config.mock_with :rspec
config.before(:each) do
redis = WrappingRedis::RedisWrapper.new
redis.del redis.keys if redis.keys.any?
end
config.after(:each) do
end
config.expose_current_running_example_as :example
config.infer_spec_type_from_file_location!
config.infer_base_class_for_anonymous_controllers = true
config.include Devise::TestHelpers, type: :controller
config.treat_symbols_as_metadata_keys_with_true_values = true
# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
config.order = "random"
end