mongoid-audit 0.0.1
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.
- data/.gitignore +17 -0
- data/.rspec +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +191 -0
- data/Rakefile +1 -0
- data/config/mongoid.yml +8 -0
- data/lib/mongoid-audit.rb +24 -0
- data/lib/mongoid-audit/sweeper.rb +40 -0
- data/lib/mongoid-audit/trackable.rb +262 -0
- data/lib/mongoid-audit/tracker.rb +159 -0
- data/lib/mongoid-audit/version.rb +5 -0
- data/mongoid-audit.gemspec +27 -0
- data/spec/integration/integration_spec.rb +553 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/support/database_cleaner.rb +9 -0
- data/spec/support/mongoid.rb +17 -0
- data/spec/trackable_spec.rb +121 -0
- data/spec/tracker_spec.rb +17 -0
- metadata +168 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'active_support/core_ext'
|
6
|
+
require 'mongoid'
|
7
|
+
require 'database_cleaner'
|
8
|
+
|
9
|
+
Bundler.require
|
10
|
+
|
11
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each do |f|
|
12
|
+
require f
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'mongoid-audit'
|
16
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
ENV["MONGOID_ENV"] = "test"
|
2
|
+
Mongoid.load!("config/mongoid.yml")
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.before :each do
|
6
|
+
Mongoid.observers = Mongoid::Audit::Sweeper
|
7
|
+
end
|
8
|
+
config.backtrace_clean_patterns = [
|
9
|
+
# /\/lib\d*\/ruby\//,
|
10
|
+
# /bin\//,
|
11
|
+
# /gems/,
|
12
|
+
# /spec\/spec_helper\.rb/,
|
13
|
+
/lib\/rspec\/(core|expectations|matchers|mocks)/
|
14
|
+
]
|
15
|
+
end
|
16
|
+
|
17
|
+
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Mongoid::Audit::Trackable do
|
4
|
+
before :each do
|
5
|
+
class MyModel
|
6
|
+
include Mongoid::Document
|
7
|
+
include Mongoid::Audit::Trackable
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
after :each do
|
12
|
+
Mongoid::Audit.trackable_class_options = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have #track_history" do
|
16
|
+
MyModel.should respond_to :track_history
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should append trackable_class_options ONLY when #track_history is called" do
|
20
|
+
Mongoid::Audit.trackable_class_options.should be_blank
|
21
|
+
MyModel.track_history
|
22
|
+
Mongoid::Audit.trackable_class_options.keys.should == [:my_model]
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#track_history" do
|
26
|
+
before :each do
|
27
|
+
class MyModel
|
28
|
+
include Mongoid::Document
|
29
|
+
include Mongoid::Audit::Trackable
|
30
|
+
track_history
|
31
|
+
end
|
32
|
+
|
33
|
+
@expected_option = {
|
34
|
+
:on => :all,
|
35
|
+
:modifier_field => :modifier,
|
36
|
+
:version_field => :version,
|
37
|
+
:scope => :my_model,
|
38
|
+
:except => ["created_at", "updated_at", "version", "modifier_id", "_id", "id"],
|
39
|
+
:track_create => false,
|
40
|
+
:track_update => true,
|
41
|
+
:track_destroy => false,
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
after :each do
|
46
|
+
Mongoid::Audit.trackable_class_options = nil
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should have default options" do
|
50
|
+
Mongoid::Audit.trackable_class_options[:my_model].should == @expected_option
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should define callback function #track_update" do
|
54
|
+
MyModel.new.private_methods.collect(&:to_sym).should include(:track_update)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should define callback function #track_create" do
|
58
|
+
MyModel.new.private_methods.collect(&:to_sym).should include(:track_create)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should define callback function #track_destroy" do
|
62
|
+
MyModel.new.private_methods.collect(&:to_sym).should include(:track_destroy)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should define #history_trackable_options" do
|
66
|
+
MyModel.history_trackable_options.should == @expected_option
|
67
|
+
end
|
68
|
+
|
69
|
+
context "sub-model" do
|
70
|
+
before :each do
|
71
|
+
class MySubModel < MyModel
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should have default options" do
|
76
|
+
Mongoid::Audit.trackable_class_options[:my_model].should == @expected_option
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should define #history_trackable_options" do
|
80
|
+
MySubModel.history_trackable_options.should == @expected_option
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "track_history" do
|
85
|
+
|
86
|
+
it "should be enabled on the current thread" do
|
87
|
+
MyModel.new.track_history?.should == true
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should be disabled within disable_tracking" do
|
91
|
+
MyModel.disable_tracking do
|
92
|
+
MyModel.new.track_history?.should == false
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should be rescued if an exception occurs" do
|
97
|
+
begin
|
98
|
+
MyModel.disable_tracking do
|
99
|
+
raise "exception"
|
100
|
+
end
|
101
|
+
rescue
|
102
|
+
end
|
103
|
+
MyModel.new.track_history?.should == true
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should be disabled only for the class that calls disable_tracking" do
|
107
|
+
class MyModel2
|
108
|
+
include Mongoid::Document
|
109
|
+
include Mongoid::Audit::Trackable
|
110
|
+
track_history
|
111
|
+
end
|
112
|
+
|
113
|
+
MyModel.disable_tracking do
|
114
|
+
MyModel2.new.track_history?.should == true
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Mongoid::Audit::Tracker do
|
4
|
+
before :each do
|
5
|
+
class MyTracker
|
6
|
+
include Mongoid::Audit::Tracker
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
after :each do
|
11
|
+
Mongoid::Audit.tracker_class_name = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should set tracker_class_name when included" do
|
15
|
+
Mongoid::Audit.tracker_class_name.should == :my_tracker
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mongoid-audit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Gleb Tv
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: easy_diff
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: mongoid
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 3.0.4
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 3.0.4
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.12.0
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.12.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.0.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.0.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: database_cleaner
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.8.0
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.8.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: activesupport
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 3.2.11
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 3.2.11
|
110
|
+
description: Mongoid Audit
|
111
|
+
email:
|
112
|
+
- glebtv@gmail.com
|
113
|
+
executables: []
|
114
|
+
extensions: []
|
115
|
+
extra_rdoc_files: []
|
116
|
+
files:
|
117
|
+
- .gitignore
|
118
|
+
- .rspec
|
119
|
+
- .travis.yml
|
120
|
+
- Gemfile
|
121
|
+
- LICENSE.txt
|
122
|
+
- README.md
|
123
|
+
- Rakefile
|
124
|
+
- config/mongoid.yml
|
125
|
+
- lib/mongoid-audit.rb
|
126
|
+
- lib/mongoid-audit/sweeper.rb
|
127
|
+
- lib/mongoid-audit/trackable.rb
|
128
|
+
- lib/mongoid-audit/tracker.rb
|
129
|
+
- lib/mongoid-audit/version.rb
|
130
|
+
- mongoid-audit.gemspec
|
131
|
+
- spec/integration/integration_spec.rb
|
132
|
+
- spec/spec_helper.rb
|
133
|
+
- spec/support/database_cleaner.rb
|
134
|
+
- spec/support/mongoid.rb
|
135
|
+
- spec/trackable_spec.rb
|
136
|
+
- spec/tracker_spec.rb
|
137
|
+
homepage: https://github.com/rs-pro/mongoid-audit
|
138
|
+
licenses: []
|
139
|
+
post_install_message:
|
140
|
+
rdoc_options: []
|
141
|
+
require_paths:
|
142
|
+
- lib
|
143
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
144
|
+
none: false
|
145
|
+
requirements:
|
146
|
+
- - ! '>='
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
151
|
+
requirements:
|
152
|
+
- - ! '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
155
|
+
requirements: []
|
156
|
+
rubyforge_project:
|
157
|
+
rubygems_version: 1.8.22
|
158
|
+
signing_key:
|
159
|
+
specification_version: 3
|
160
|
+
summary: Easily track model change history and mantain audit log with mongoid
|
161
|
+
test_files:
|
162
|
+
- spec/integration/integration_spec.rb
|
163
|
+
- spec/spec_helper.rb
|
164
|
+
- spec/support/database_cleaner.rb
|
165
|
+
- spec/support/mongoid.rb
|
166
|
+
- spec/trackable_spec.rb
|
167
|
+
- spec/tracker_spec.rb
|
168
|
+
has_rdoc:
|