spec_helper.rb revision 5931410e830c72a0c88879ed8acf01a1210a42ad
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi# This file is copied to spec/ when you run 'rails generate rspec:install'
57da8c32f85c0255efa61ee32e260068afdaa565KATOH YasufumiENV["RAILS_ENV"] ||= 'test'
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumirequire File.expand_path("../../spec/shared_helper", __FILE__)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiinclude SharedHelper
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiuse_simplecov
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumirequire File.expand_path("../../config/environment", __FILE__)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumirequire 'rspec/rails'
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumirequire 'rspec/autorun'
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumirequire Rails.root.join('config', 'database_cleaner.rb')
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumirequire 'addressable/template'
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumirequire 'webmock/rspec'
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH YasufumiWebMock.disable_net_connect!(allow_localhost: true)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumielasticsearch_port = ENV['ELASTIC_TEST_PORT'].present? ? ENV['ELASTIC_TEST_PORT'] : '9250'
57da8c32f85c0255efa61ee32e260068afdaa565KATOH YasufumiElasticsearch::Model.client = Elasticsearch::Client.new host: "localhost:#{elasticsearch_port}"
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi# Requires supporting ruby files with custom matchers and macros, etc,
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi# in spec/support/ and its subdirectories.
a5ba96715d4ef264c43d4f187251de491ba198c0KATOH YasufumiDir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
8900b9eb2514c07047541833286428572493a9fdStéphane Graberclass ActionController::TestRequest
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi attr_writer :query_string
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi def query_string
faefa7f8584a7d1567df2e6f1f9240a28a6466abStéphane Graber @query_string.to_s
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi end
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumidef fixture_file(path)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi fixture_path = Rails.root.join('spec/fixtures/')
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi fixture_path.join(path)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumidef ontology_file(path, ext=nil)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi portion =
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi if ext
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi "#{path}.#{ext}"
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi elsif path.include?('.')
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi path
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi else
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi "#{path}.#{path.to_s.split('/').first}"
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi end
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi fixture_file("ontologies/#{portion}")
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
6127da6b3f5815028bee187ac98840cd94313841KATOH Yasufumidef hets_out_file(name, ext='xml')
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi ontology_file("hets-out/#{name}.#{ext}")
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumidef hets_uri(portion = nil, version = nil)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi hets_instance = HetsInstance.choose
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi if hets_instance.nil?
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi FactoryGirl.create(:local_hets_instance)
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi hets_instance = HetsInstance.choose
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi end
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi specific = ''
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi # %2F is percent-encoding for forward slash /
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi specific << "ref%2F#{version}.*" if version
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi specific << "#{portion}.*" if portion
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi %r{#{hets_instance.uri}/dg/.*#{specific}}
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumiend
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumidef stub_hets_for(fixture_file, with: nil, with_version: nil)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi stub_request(:get, 'http://localhost:8000/version').
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi to_return(body: Hets.minimal_version_string)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi stub_request(:get, hets_uri(with, with_version)).
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi to_return(body: fixture_file.read)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumidef setup_hets
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi let(:hets_instance) { create(:local_hets_instance) }
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi before do
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi stub_request(:get, 'http://localhost:8000/version').
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi to_return(body: Hets.minimal_version_string)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi hets_instance
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi end
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
dc421f3aac1f0e516c763dd156629a8ed2a7b4caKATOH Yasufumi
dc421f3aac1f0e516c763dd156629a8ed2a7b4caKATOH Yasufumidef add_fixture_file(repository, relative_file)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi path = ontology_file(relative_file)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi version_for_file(repository, path)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumidef version_for_file(repository, path)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi dummy_user = create :user
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi basename = File.basename(path)
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi version = repository.save_file path, basename, "#{basename} added", dummy_user
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
dc421f3aac1f0e516c763dd156629a8ed2a7b4caKATOH Yasufumi# includes the convenience-method `define_ontology('name')`
dc421f3aac1f0e516c763dd156629a8ed2a7b4caKATOH Yasufumiinclude OntologyUnited::Convenience
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumidef parse_this(user, ontology, fixture_file)
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumi file = File.open(fixture_file)
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumi evaluator = Hets::Evaluator.new(user, ontology, io: file)
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumi evaluator.import
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumi file.close unless file.closed?
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumiend
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumi
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumi# Recording HTTP Requests
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH YasufumiVCR.configure do |c|
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumi c.cassette_library_dir = 'spec/fixtures/vcr'
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumi c.hook_into :webmock
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumi c.ignore_localhost = true
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumi c.ignore_hosts \
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumi '127.0.0.1',
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumi 'localhost',
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumi 'colore.googlecode.com',
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumi 'trac.informatik.uni-bremen.de'
f025e64819ea14ea5f87eae652a1666cdcbb640eKATOH Yasufumiend
b6acc629c0094fed0e451694e7a07a926847972bKATOH Yasufumi
b6acc629c0094fed0e451694e7a07a926847972bKATOH YasufumiRSpec.configure do |config|
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi # ## Mock Framework
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi # config.mock_with :mocha
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi # config.mock_with :flexmock
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi # config.mock_with :rr
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi config.mock_with :rspec
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi config.tty ||= ENV["SPEC_OPTS"].include?('--color') if ENV["SPEC_OPTS"]
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi config.before(:suite) do
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi FactoryGirl.create :proof_statuses
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi end
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi config.before(:each) do
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi redis = WrappingRedis::RedisWrapper.new
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi redis.del redis.keys if redis.keys.any?
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi end
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi config.after(:each) do
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi end
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi config.expose_current_running_example_as :example
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi config.infer_spec_type_from_file_location!
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi config.infer_base_class_for_anonymous_controllers = true
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi config.include Devise::TestHelpers, type: :controller
9b9e2d5e20be33cb7534f3fedceb9e2a7e04dd43KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi config.treat_symbols_as_metadata_keys_with_true_values = true
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi # Run specs in random order to surface order dependencies. If you find an
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi # order dependency and want to debug it, you can fix the order by providing
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi # the seed, which is printed after each run.
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi # --seed 1234
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi config.order = "random"
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi config.mock_with :rspec do |mocks|
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi mocks.yield_receiver_to_any_instance_implementation_blocks = false
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi end
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumiend
57da8c32f85c0255efa61ee32e260068afdaa565KATOH Yasufumi