class ActiveRecord::FixtureSet::FileTest

Public Instance Methods

fixture_helper() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 75
def fixture_helper
  "Fixture helper"
end
test_empty_file() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 49
def test_empty_file
  tmp_yaml ["empty", "yml"], "" do |t|
    assert_equal [], File.open(t.path) { |fh| fh.to_a }
  end
end
test_erb_filename() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 140
def test_erb_filename
  filename = "filename.yaml"
  erb = File.new(filename).send(:prepare_erb, "<% Quails.env %>\n")
  assert_equal erb.filename, filename
end
test_erb_processing() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 42
def test_erb_processing
  File.open(::File.join(FIXTURES_ROOT, "developers.yml")) do |fh|
    devs = Array.new(8) { |i| "dev_#{i + 3}" }
    assert_equal [], devs - fh.to_a.map(&:first)
  end
end
test_extracts_model_class_from_config_row() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 134
def test_extracts_model_class_from_config_row
  File.open(::File.join(FIXTURES_ROOT, "other_posts.yml")) do |fh|
    assert_equal "Post", fh.model_class
  end
end
test_independent_render_contexts() click to toggle source

Make sure that each fixture gets its own rendering context so that fixtures are independent.

# File activerecord/test/cases/fixture_set/file_test.rb, line 115
def test_independent_render_contexts
  yaml1 = "<% def leaked_method; 'leak'; end %>\n"
  yaml2 = "one:\n  name: <%= leaked_method %>\n"
  tmp_yaml ["leaky", "yml"], yaml1 do |t1|
    tmp_yaml ["curious", "yml"], yaml2 do |t2|
      File.open(t1.path) { |fh| fh.to_a }
      assert_raises(NameError) do
        File.open(t2.path) { |fh| fh.to_a }
      end
    end
  end
end
test_names() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 23
def test_names
  File.open(::File.join(FIXTURES_ROOT, "accounts.yml")) do |fh|
    assert_equal ["signals37",
                  "unknown",
                  "quails_core_account",
                  "last_account",
                  "quails_core_account_2",
                  "odegy_account"].sort, fh.to_a.map(&:first).sort
  end
end
test_open() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 9
def test_open
  fh = File.open(::File.join(FIXTURES_ROOT, "accounts.yml"))
  assert_equal 6, fh.to_a.length
end
test_open_with_block() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 14
def test_open_with_block
  called = false
  File.open(::File.join(FIXTURES_ROOT, "accounts.yml")) do |fh|
    called = true
    assert_equal 6, fh.to_a.length
  end
  assert called, "block called"
end
test_removes_fixture_config_row() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 128
def test_removes_fixture_config_row
  File.open(::File.join(FIXTURES_ROOT, "other_posts.yml")) do |fh|
    assert_equal(["second_welcome"], fh.each.map { |name, _| name })
  end
end
test_render_context_helper() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 73
def test_render_context_helper
  ActiveRecord::FixtureSet.context_class.class_eval do
    def fixture_helper
      "Fixture helper"
    end
  end
  yaml = "one:\n  name: <%= fixture_helper %>\n"
  tmp_yaml ["curious", "yml"], yaml do |t|
    golden =
        [["one", { "name" => "Fixture helper" }]]
    assert_equal golden, File.open(t.path) { |fh| fh.to_a }
  end
  ActiveRecord::FixtureSet.context_class.class_eval do
    remove_method :fixture_helper
  end
end
test_render_context_lookup_scope() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 90
      def test_render_context_lookup_scope
        yaml = <<END
one:
  ActiveRecord: <%= defined? ActiveRecord %>
  ActiveRecord_FixtureSet: <%= defined? ActiveRecord::FixtureSet %>
  FixtureSet: <%= defined? FixtureSet %>
  ActiveRecord_FixtureSet_File: <%= defined? ActiveRecord::FixtureSet::File %>
  File: <%= File.name %>
END

        golden = [["one", {
          "ActiveRecord" => "constant",
          "ActiveRecord_FixtureSet" => "constant",
          "FixtureSet" => nil,
          "ActiveRecord_FixtureSet_File" => "constant",
          "File" => "File"
        }]]

        tmp_yaml ["curious", "yml"], yaml do |t|
          assert_equal golden, File.open(t.path) { |fh| fh.to_a }
        end
      end
test_values() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 34
def test_values
  File.open(::File.join(FIXTURES_ROOT, "accounts.yml")) do |fh|
    assert_equal [1, 2, 3, 4, 5, 6].sort, fh.to_a.map(&:last).map { |x|
      x["id"]
    }.sort
  end
end
test_wrong_fixture_format_nested() click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 65
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
test_wrong_fixture_format_string() click to toggle source

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.

# File activerecord/test/cases/fixture_set/file_test.rb, line 57
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

Private Instance Methods

tmp_yaml(name, contents) { |t| ... } click to toggle source
# File activerecord/test/cases/fixture_set/file_test.rb, line 147
def tmp_yaml(name, contents)
  t = Tempfile.new name
  t.binmode
  t.write contents
  t.close
  yield t
ensure
  t.close true
end