1 require File.dirname(__FILE__) + '/../test_helper'
3 class PersonTest < ActiveSupport::TestCase
6 @person = Person.find :first
7 @lazy = ['history', 'bio'].to_set
8 @columns = Person.column_names.to_set - ['id']
11 def test_lazy_attributes_values
12 assert_equal @lazy, @person.class.lazy_attributes
15 def test_quoted_attributes_should_include_all_columns
16 assert_equal @columns, @person.send(:attributes_with_quotes).keys.to_set.delete('id')
19 def test_quoted_attributes_should_exclude_lazy_columns_for_updates
20 assert_equal @columns - @lazy, attr_for_update(@person)
23 def test_changed_lazy_attributes_behave_well
24 @person.name = "Whatever"
25 assert_equal @columns - @lazy, attr_for_update(@person)
27 @person.bio = "Hello world"
28 assert_equal @columns - ['history'], attr_for_update(@person)
30 @person.history = "Nothing."
31 assert_equal @columns, attr_for_update(@person)
36 assert_equal "Nothing.", @person.history
37 assert_equal "Whatever", @person.name
40 def test_save_clears_lazy_data
42 assert_equal @columns - ['history'], attr_for_update(@person)
45 assert_equal @columns - @lazy, attr_for_update(@person)
46 assert_equal "DSL", @person.bio
49 def test_reload_clears_lazy_data
50 @person.bio = "Shenanigans"
51 @person.history = "Bloody"
52 assert_equal @columns, attr_for_update(@person)
56 assert_equal @columns - @lazy, attr_for_update(@person)
61 def attr_for_update(person)
62 person.send(:attributes_with_quotes, false, false).keys.to_set