track_changes 0.5.1 → 1.0.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. data/README.rdoc +46 -32
  2. data/TODO +1 -1
  3. data/VERSION.yml +4 -4
  4. data/lib/generators/track_changes/templates/initializer.rb +1 -0
  5. data/lib/generators/track_changes/templates/migration.rb +18 -0
  6. data/lib/generators/track_changes/templates/stylesheet.css +12 -0
  7. data/lib/generators/track_changes/track_changes_generator.rb +30 -0
  8. data/lib/track_changes/action_controller.rb +31 -0
  9. data/lib/track_changes/active_record.rb +26 -0
  10. data/lib/track_changes/around_save.rb +9 -0
  11. data/lib/track_changes/changes.rb +15 -0
  12. data/lib/track_changes/configuration.rb +3 -32
  13. data/lib/track_changes/current_user.rb +5 -0
  14. data/lib/track_changes/current_user_filter.rb +12 -0
  15. data/lib/track_changes/engine.rb +7 -0
  16. data/lib/track_changes.rb +11 -10
  17. data/test/functional/posts_controller_test.rb +39 -10
  18. data/test/railsapp/Gemfile +12 -0
  19. data/test/railsapp/Gemfile.lock +84 -0
  20. data/test/railsapp/Rakefile +4 -0
  21. data/test/{rails_root → railsapp}/app/controllers/application_controller.rb +1 -0
  22. data/test/railsapp/app/controllers/posts_controller.rb +40 -0
  23. data/test/railsapp/app/models/post.rb +3 -0
  24. data/test/railsapp/app/models/user.rb +3 -0
  25. data/test/railsapp/app/views/layouts/application.html.erb +12 -0
  26. data/test/railsapp/app/views/posts/_form.html.erb +13 -0
  27. data/test/railsapp/app/views/posts/_post.html.erb +3 -0
  28. data/test/railsapp/app/views/posts/edit.html.erb +5 -0
  29. data/test/railsapp/app/views/posts/index.html.erb +2 -0
  30. data/test/railsapp/config/application.rb +12 -0
  31. data/test/railsapp/config/boot.rb +13 -0
  32. data/test/railsapp/config/database.yml +5 -0
  33. data/test/railsapp/config/environment.rb +5 -0
  34. data/test/railsapp/config/environments/test.rb +10 -0
  35. data/test/railsapp/config/routes.rb +3 -0
  36. data/test/railsapp/config.ru +2 -0
  37. data/test/railsapp/db/test.sqlite3 +0 -0
  38. data/test/railsapp/log/test.log +6385 -0
  39. data/test/railsapp/script/rails +6 -0
  40. data/test/schema.rb +19 -0
  41. data/test/test_helper.rb +4 -26
  42. data/test/track_changes_test.rb +34 -0
  43. metadata +124 -88
  44. data/lib/track_changes/audit_filter.rb +0 -69
  45. data/lib/track_changes/base.rb +0 -9
  46. data/lib/track_changes/class_methods.rb +0 -74
  47. data/lib/track_changes/filter.rb +0 -43
  48. data/lib/track_changes/initializer.rb +0 -18
  49. data/lib/track_changes/instance_methods.rb +0 -5
  50. data/lib/track_changes/result.rb +0 -36
  51. data/test/base_test.rb +0 -20
  52. data/test/class_methods_test.rb +0 -29
  53. data/test/filter_test.rb +0 -73
  54. data/test/rails_root/app/controllers/posts_controller.rb +0 -36
  55. data/test/rails_root/app/models/audit.rb +0 -4
  56. data/test/rails_root/app/models/post.rb +0 -3
  57. data/test/rails_root/config/boot.rb +0 -110
  58. data/test/rails_root/config/database.yml +0 -3
  59. data/test/rails_root/config/environment.rb +0 -7
  60. data/test/rails_root/config/environments/test.rb +0 -7
  61. data/test/rails_root/config/initializers/new_rails_defaults.rb +0 -7
  62. data/test/rails_root/config/initializers/session_store.rb +0 -4
  63. data/test/rails_root/config/initializers/track_changes_setup.rb +0 -8
  64. data/test/rails_root/config/routes.rb +0 -3
  65. data/test/rails_root/db/migrate/20100115021125_create_audits.rb +0 -16
  66. data/test/rails_root/db/migrate/20100115021151_create_posts.rb +0 -15
  67. data/test/rails_root/log/test.log +0 -543
  68. data/test/rails_root/script/console +0 -3
  69. data/test/rails_root/script/generate +0 -3
  70. data/test/result_test.rb +0 -35
  71. data/test/track_changes/audit_filter_test.rb +0 -154
  72. data/test/track_changes/configuration_test.rb +0 -36
  73. data/test/track_changes/initializer_test.rb +0 -37
@@ -1,154 +0,0 @@
1
- require 'test_helper'
2
-
3
- module TrackChanges
4
- class AuditFilterTest < Test::Unit::TestCase
5
- should "accept a single model" do
6
- assert TrackChanges::AuditFilter.new(:model)
7
- end
8
-
9
- should "accept multiple models" do
10
- assert TrackChanges::AuditFilter.new(:model_a, :model_b)
11
- end
12
-
13
- should "respond to #before" do
14
- assert TrackChanges::AuditFilter.new.respond_to?(:before)
15
- end
16
-
17
- should "respond to #after" do
18
- assert TrackChanges::AuditFilter.new.respond_to?(:after)
19
- end
20
-
21
- should "create an audit when before and after called" do
22
- expected_change_set = {"value" => ["old", "new"]}
23
- expected_user = "current user"
24
-
25
- audit = mock('audit')
26
-
27
- model = mock('model')
28
- model.stubs(:attributes=).returns({})
29
- model.stubs(:changes).returns(expected_change_set)
30
-
31
- modified_model = mock('modified model')
32
- modified_model.stubs(:changed?).returns(false)
33
- modified_model.stubs(:attributes).returns({})
34
- modified_model.stubs(:audits).returns(audit)
35
-
36
- controller = mock('controller')
37
- controller.stubs(:instance_variable_get).returns(model, modified_model)
38
- controller.stubs(:current_user).returns(expected_user)
39
-
40
- audit_filter = AuditFilter.new(:model)
41
- audit_filter.before(controller)
42
-
43
- audit.expects(:create!).with(has_entries(:user => expected_user, :change_set => expected_change_set)).returns(true)
44
- audit_filter.after(controller)
45
- end
46
-
47
- should "ignore nil models" do
48
- controller = mock('controller')
49
- controller.expects(:instance_variable_get).returns(nil)
50
-
51
- audit_filter = AuditFilter.new(:model)
52
- assert_nothing_raised do
53
- audit_filter.before(controller)
54
- audit_filter.after(controller)
55
- end
56
- end
57
-
58
- should "respect ignore_nil option" do
59
- controller = mock('controller')
60
- controller.stubs(:instance_variable_get).returns(nil)
61
-
62
- audit_filter = AuditFilter.new(:model, :ignore_nil => false)
63
- assert_raises TypeError do
64
- audit_filter.before(controller)
65
- audit_filter.after(controller)
66
- end
67
-
68
- audit_filter = AuditFilter.new(:model, :ignore_nil => true)
69
- assert_nothing_raised do
70
- audit_filter.before(controller)
71
- audit_filter.after(controller)
72
- end
73
- end
74
-
75
- should "respect audit_accessor option" do
76
- change = mock('change')
77
- change.stubs(:create!).returns(true)
78
-
79
- model = mock('model')
80
- model.stubs(:attributes=).returns({})
81
- model.stubs(:changes).returns({:not => :empty})
82
-
83
- modified_model = mock('modified model')
84
- modified_model.stubs(:changed?).returns(false)
85
- modified_model.stubs(:attributes).returns({})
86
- modified_model.stubs(:changes).returns(change)
87
-
88
- controller = mock('controller')
89
- controller.stubs(:instance_variable_get).returns(model, modified_model)
90
- controller.stubs(:current_user).returns("user")
91
-
92
- audit_filter = AuditFilter.new(:model, :audit_accessor => :changes)
93
- audit_filter.before(controller)
94
-
95
- # Test call to :changes
96
- audit_filter.after(controller)
97
-
98
- audit = mock('audit')
99
- audit.stubs(:create!).returns(true)
100
- modified_model.stubs(:audits).returns(audit)
101
-
102
- # Test call to :audits
103
- audit_filter.after(controller)
104
- end
105
-
106
- should "respect :current_user option with :user" do
107
- audit = mock('audit')
108
- audit.stubs(:create!).returns(true)
109
-
110
- model = mock('model')
111
- model.stubs(:attributes=).returns({})
112
- model.stubs(:changes).returns({:not => :empty})
113
-
114
- modified_model = mock('modified model')
115
- modified_model.stubs(:changed?).returns(false)
116
- modified_model.stubs(:attributes).returns({})
117
- modified_model.stubs(:audits).returns(audit)
118
-
119
- controller = mock('controller')
120
- controller.stubs(:instance_variable_get).returns(model, modified_model)
121
- controller.stubs(:user).returns("configured user")
122
-
123
- audit_filter = AuditFilter.new(:model, :current_user => :user)
124
- audit_filter.before(controller)
125
-
126
- # Test call to :user
127
- audit_filter.after(controller)
128
- end
129
-
130
- should "respect :current_user option with :current_user" do
131
- audit = mock('audit')
132
- audit.stubs(:create!).returns(true)
133
-
134
- model = mock('model')
135
- model.stubs(:attributes=).returns({})
136
- model.stubs(:changes).returns({:not => :empty})
137
-
138
- modified_model = mock('modified model')
139
- modified_model.stubs(:changed?).returns(false)
140
- modified_model.stubs(:attributes).returns({})
141
- modified_model.stubs(:audits).returns(audit)
142
-
143
- controller = mock('controller')
144
- controller.stubs(:instance_variable_get).returns(model, modified_model)
145
- controller.stubs(:current_user).returns("configured user")
146
-
147
- audit_filter = AuditFilter.new(:model, :current_user => :current_user)
148
- audit_filter.before(controller)
149
-
150
- # Test call to :current_user
151
- audit_filter.after(controller)
152
- end
153
- end
154
- end
@@ -1,36 +0,0 @@
1
- require 'test_helper'
2
-
3
- module TrackChanges
4
- class ConfigurationTest < ActiveSupport::TestCase
5
- def setup
6
- @configuration = TrackChanges::Configuration.new
7
- end
8
-
9
- should "have audit_association accessor" do
10
- assert @configuration.respond_to?(:audit_association)
11
- assert @configuration.respond_to?(:audit_association=)
12
- end
13
-
14
- should "have current_user accessor" do
15
- assert @configuration.respond_to?(:current_user)
16
- assert @configuration.respond_to?(:current_user=)
17
- end
18
-
19
- should "have ignore_nil accessor" do
20
- assert @configuration.respond_to?(:ignore_nil)
21
- assert @configuration.respond_to?(:ignore_nil=)
22
- end
23
-
24
- should "set default audit_association to Audit" do
25
- assert_equal :audits, @configuration.audit_association
26
- end
27
-
28
- should "set default current user association" do
29
- assert_equal :current_user, @configuration.current_user
30
- end
31
-
32
- should "set default ignore_nil" do
33
- assert_equal true, @configuration.ignore_nil
34
- end
35
- end
36
- end
@@ -1,37 +0,0 @@
1
- require 'test_helper'
2
-
3
- module TrackChanges
4
- class InitializerTest < ActiveSupport::TestCase
5
- should "be a singleton" do
6
- first_instance = Initializer.instance
7
- second_instance = Initializer.instance
8
- assert_equal first_instance, second_instance
9
- end
10
-
11
- should "have an accessor for configuration" do
12
- initializer = Initializer.instance
13
-
14
- assert initializer.respond_to?(:configuration)
15
- end
16
-
17
- should "yield configuration on call to instance" do
18
- block_executed = false
19
- initializer = Initializer.instance do |configuration|
20
- block_executed = true
21
- assert configuration.kind_of?(TrackChanges::Configuration)
22
- end
23
-
24
- assert block_executed, "block wasn't executed"
25
- end
26
-
27
- should "set global configuration" do
28
- initializer = Initializer.instance do |configuration|
29
- configuration.audit_association = :test_audit_association
30
- end
31
-
32
- initializer = Initializer.instance
33
- configuration = initializer.configuration
34
- assert_equal :test_audit_association, configuration.audit_association
35
- end
36
- end
37
- end