From edae4777ad6308bb4169c40368a24b62bb542d32 Mon Sep 17 00:00:00 2001 From: Yves Senn Date: Wed, 26 Dec 2012 15:16:09 +0100 Subject: quote column names in generated fixture files --- railties/test/generators/model_generator_test.rb | 29 +++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 70e080a8ab..9dd61e9c15 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -270,17 +270,34 @@ class ModelGeneratorTest < Rails::Generators::TestCase def test_invokes_default_test_framework run_generator assert_file "test/models/account_test.rb", /class AccountTest < ActiveSupport::TestCase/ - assert_file "test/fixtures/accounts.yml", /name: MyString/, /age: 1/ + + assert_file 'test/fixtures/accounts.yml', /name: MyString/, /age: 1/ + assert_generated_fixture('test/fixtures/accounts.yml', + {'one'=>{'name'=>'MyString', 'age'=>1}, 'two'=>{'name'=>'MyString', 'age'=>1}}) end def test_fixtures_use_the_references_ids run_generator ["LineItem", "product:references", "cart:belongs_to"] - assert_file "test/fixtures/line_items.yml", /product_id: \n cart_id: / + + assert_file 'test/fixtures/line_items.yml', /product_id: \n cart_id: / + assert_generated_fixture('test/fixtures/line_items.yml', + {"one"=>{"product_id"=>nil, "cart_id"=>nil}, "two"=>{"product_id"=>nil, "cart_id"=>nil}}) end def test_fixtures_use_the_references_ids_and_type run_generator ["LineItem", "product:references{polymorphic}", "cart:belongs_to"] - assert_file "test/fixtures/line_items.yml", /product_id: \n product_type: Product\n cart_id: / + + assert_file 'test/fixtures/line_items.yml', /product_id: \n product_type: Product\n cart_id: / + assert_generated_fixture('test/fixtures/line_items.yml', + {"one"=>{"product_id"=>nil, "product_type"=>"Product", "cart_id"=>nil}, + "two"=>{"product_id"=>nil, "product_type"=>"Product", "cart_id"=>nil}}) + end + + def test_fixtures_respect_reserved_yml_keywords + run_generator ["LineItem", "no:integer", "Off:boolean", 'ON:boolean'] + + assert_generated_fixture('test/fixtures/line_items.yml', + {"one"=>{"no"=>1, "Off"=>false, "ON"=>false}, "two"=>{"no"=>1, "Off"=>false, "ON"=>false}}) end def test_fixture_is_skipped @@ -338,4 +355,10 @@ class ModelGeneratorTest < Rails::Generators::TestCase end end end + + private + def assert_generated_fixture(path, parsed_contents) + fixture_file = File.new File.expand_path(path, destination_root) + assert_equal(parsed_contents, YAML.load(fixture_file)) + end end -- cgit v1.2.3