class SchemaTest::TestHelper
Public Instance Methods
assert_api_schema(name, version:, structure: nil)
click to toggle source
# File lib/schema_test/test_helper.rb, line 3 def assert_api_schema(name, version:, structure: nil) install_asset_api_expansion_hook definition = ApiSchema::Definition.find(name, version) raise "Unknown definition #{name}, version: #{version}" unless definition.present? expected_structure = definition.as_structure if structure != expected_structure if ENV['CI'] flunk "Outdated API schema assertion at #{caller[0]}" else queue_write_expanded_assert_api_call(caller[0], __method__, name, version, expected_structure) end end assert_json_response_structure(*expected_structure) end
Private Instance Methods
expand_assert_api_calls()
click to toggle source
# File lib/schema_test/test_helper.rb, line 41 def expand_assert_api_calls @@__api_schema_calls_for_expansion.each do |file, line_indexes_with_structures| rewriter = SchemaTest::Rewriter.new(File.read(file), line_indexes_with_structures) File.open(file, 'w') { f.puts rewriter.output } end end
install_asset_api_expansion_hook()
click to toggle source
# File lib/schema_test/test_helper.rb, line 35 def install_asset_api_expansion_hook return if @@__api_schema_expansion_hook_installed at_exit { expand_assert_api_calls } @@__api_schema_expansion_hook_installed = true end
queue_write_expanded_assert_api_call(call_site, method, name, version, expected_structure)
click to toggle source
# File lib/schema_test/test_helper.rb, line 27 def queue_write_expanded_assert_api_call(call_site, method, name, version, expected_structure) file, line = call_site.split(':') line_index = line.to_i.pred @@__api_schema_calls_for_expansion[file] ||= [] @@__api_schema_calls_for_expansion[file] << [line_index, method, name, version, expected_structure] end