Feature #12960 » 0010-feat-psych-add-another-test-case.patch
| test/psych/visitors/test_custom_class.rb | ||
|---|---|---|
|
assert_equal "F", team.members[0].gender
|
||
|
end
|
||
|
def test_merge_mapping
|
||
|
input = <<-END
|
||
|
column-defaults:
|
||
|
- &id
|
||
|
name : id
|
||
|
type : int
|
||
|
pkey : true
|
||
|
tables:
|
||
|
- name : admin_users
|
||
|
columns:
|
||
|
- <<: *id
|
||
|
name: user_id
|
||
|
END
|
||
|
#
|
||
|
classmap = {
|
||
|
"tables" => Struct.new('Table', 'name', 'columns'),
|
||
|
"columns" => Struct.new('Column', 'name', 'type', 'pkey', 'required'),
|
||
|
}
|
||
|
#
|
||
|
visitor = Psych::Visitors::CustomClassVisitor.create(classmap)
|
||
|
tree = Psych.parse(input)
|
||
|
ydoc = visitor.accept(tree)
|
||
|
#
|
||
|
assert_kind_of classmap["tables"], ydoc['tables'][0]
|
||
|
assert_kind_of classmap["columns"], ydoc['tables'][0]['columns'][0]
|
||
|
#
|
||
|
table = ydoc['tables'][0]
|
||
|
assert_equal "int", table.columns[0].type # merged
|
||
|
assert_equal true, table.columns[0].pkey # merged
|
||
|
assert_equal "user_id", table.columns[0].name # ovrerwritten
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
- « Previous
- 1
- …
- 8
- 9
- 10
- Next »