mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
fixture file will validate fixture format
This commit is contained in:
parent
5278af3d8e
commit
081b36c6ce
2 changed files with 26 additions and 1 deletions
|
@ -34,12 +34,19 @@ module ActiveRecord
|
|||
return @rows if @rows
|
||||
|
||||
data = YAML.load(render(IO.read(@file)))
|
||||
@rows = data ? data.to_a : []
|
||||
@rows = data ? validate(data).to_a : []
|
||||
end
|
||||
|
||||
def render(content)
|
||||
ERB.new(content).result
|
||||
end
|
||||
|
||||
# Validate our unmarshalled data.
|
||||
def validate(data)
|
||||
raise Fixture::FormatError, 'fixture is not a hash' unless Hash === data
|
||||
raise Fixture::FormatError unless data.all? { |name, row| Hash === row }
|
||||
data
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -48,6 +48,24 @@ module ActiveRecord
|
|||
end
|
||||
end
|
||||
|
||||
# A valid YAML file is not necessarily a value Fixture file. Make sure
|
||||
# an exception is raised if the format is not valid Fixture format.
|
||||
def test_wrong_fixture_format_string
|
||||
tmp_yaml ['empty', 'yml'], 'qwerty' do |t|
|
||||
assert_raises(ActiveRecord::Fixture::FormatError) do
|
||||
File.open(t.path) { |fh| fh.to_a }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_wrong_fixture_format_nested
|
||||
tmp_yaml ['empty', 'yml'], 'one: two' do |t|
|
||||
assert_raises(ActiveRecord::Fixture::FormatError) do
|
||||
File.open(t.path) { |fh| fh.to_a }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def tmp_yaml(name, contents)
|
||||
t = Tempfile.new name
|
||||
|
|
Loading…
Reference in a new issue