historic 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/lib/historic/historic.rb +4 -0
- data/test/historic_test.rb +9 -0
- data/test/test_helper.rb +2 -0
- metadata +1 -1
data/VERSION.yml
CHANGED
data/lib/historic/historic.rb
CHANGED
@@ -39,6 +39,7 @@ module ActiveRecord
|
|
39
39
|
@historic_record_class = (options.delete(:class_name) || "#{self.to_s}History").constantize
|
40
40
|
|
41
41
|
options[:on_change_of] = [options[:on_change_of]] if options[:on_change_of] && !options[:on_change_of].is_a?(Array)
|
42
|
+
options[:version_column] ||= :version
|
42
43
|
@historic_options = options
|
43
44
|
end
|
44
45
|
|
@@ -54,6 +55,9 @@ module ActiveRecord
|
|
54
55
|
|
55
56
|
if historic_should_move_to_history?(historic_options)
|
56
57
|
historic_copy_to_history
|
58
|
+
if self.respond_to?(historic_options[:version_column])
|
59
|
+
self.increment(historic_options[:version_column])
|
60
|
+
end
|
57
61
|
end
|
58
62
|
end
|
59
63
|
|
data/test/historic_test.rb
CHANGED
@@ -30,6 +30,10 @@ class HistoricTest < Test::Unit::TestCase
|
|
30
30
|
assert HistoricItemHistory.exists?({:field_1=>@old_item.field_1, :field_2=>@old_item.field_2, :field_3=>@old_item.field_3})
|
31
31
|
end
|
32
32
|
|
33
|
+
should "increment @item's version by one" do
|
34
|
+
assert_equal @old_item.version + 1, @item.version
|
35
|
+
end
|
36
|
+
|
33
37
|
context ", the HistoricItemHistory" do
|
34
38
|
setup do
|
35
39
|
@item_history = HistoricItemHistory.find_by_field_1_and_field_2_and_field_3(@old_item.field_1, @old_item.field_2, @old_item.field_3)
|
@@ -54,6 +58,10 @@ class HistoricTest < Test::Unit::TestCase
|
|
54
58
|
should "set historic_item_id reference field" do
|
55
59
|
assert_equal @item.id, @item_history.historic_item_id
|
56
60
|
end
|
61
|
+
|
62
|
+
should "have a version equal to the old item's version" do
|
63
|
+
assert_equal @old_item.version, @item_history.version
|
64
|
+
end
|
57
65
|
end #for the HistoricItemHistory
|
58
66
|
end #when changing field_1 of HistoricIte
|
59
67
|
end #when changing the value of :field_1 to @new_field_1
|
@@ -88,5 +96,6 @@ class HistoricTest < Test::Unit::TestCase
|
|
88
96
|
# assert HistoricItemHistory.exists?({:field_1=>@item.field_1, :field_2=>@item.field_2, :field_3=>@item.field_3})
|
89
97
|
end
|
90
98
|
end #when destroyed
|
99
|
+
|
91
100
|
end # An item guide
|
92
101
|
end
|
data/test/test_helper.rb
CHANGED
@@ -16,12 +16,14 @@ class Test::Unit::TestCase
|
|
16
16
|
columns = [:field_1, :field_2, :field_3]
|
17
17
|
create_table :historic_items do |t|
|
18
18
|
t.string *columns
|
19
|
+
t.integer :version, :default => 0
|
19
20
|
end
|
20
21
|
|
21
22
|
create_table :historic_item_histories do |t|
|
22
23
|
t.string *columns
|
23
24
|
t.integer :position
|
24
25
|
t.integer :historic_item_id
|
26
|
+
t.integer :version
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|