mongoid-audit 0.2.0 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50bb3934bb4dae8960bb1513eee0c969db1c5984
4
- data.tar.gz: 17bc52f155696941b1f9136eeafbb455e30232d2
3
+ metadata.gz: b9c16d338784fdacfa88a98c10f63d1512a813c5
4
+ data.tar.gz: 008ae2f160e31bb3851558f8acb60d60d083543c
5
5
  SHA512:
6
- metadata.gz: 5926f65b34af90012152b9645f4f51a4a35fba2aac2c7369ce65a420880263e7773c3c05699cfbfce4a91788d5a5d09d25df3317bffb289e820076901d1fef82
7
- data.tar.gz: 32ec2981cb51c405128b6858a63f4ee322b9baf7c11e25690606c4705a0955b7a0a157f8119f05ad57c04ed345ca8831b64ed08f6e3f94f1dc2619fe916d01c0
6
+ metadata.gz: c118e113a776ab1e4e80671eb563be01ebc665606723ca3708ce3510835a518f87ac6e034a750f7d0ebef1689c6b347346a31af75c167f00b52bf00e82722fd1
7
+ data.tar.gz: d1fde99a8443fae7373fba853e35fb4f4922bd9b29aeee85d6385110531b5d790add3f2381be0c88f6dbc39ef7114ca018cb4c7608f3d3ad33a77528bc679d8f
@@ -0,0 +1 @@
1
+ service_name: travis-ci
@@ -1 +1 @@
1
- ruby-2.0.0-p0
1
+ ruby-2.0.0-p247
@@ -1,5 +1,15 @@
1
- language: ruby
2
1
  services: mongodb
2
+
3
+ notifications:
4
+ email: false
5
+
6
+ language: ruby
3
7
  rvm:
4
8
  - 1.9.3
9
+ - 2.0.0
10
+ - jruby-19mode
11
+
12
+ gemfile:
13
+ - Gemfile
14
+ - gemfiles/mongoid-4.0.gemfile
5
15
 
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in mongoid-audit.gemspec
4
- gemspec
4
+ gem "mongoid", github: "mongoid/mongoid"
5
+ gemspec
data/README.md CHANGED
@@ -1,8 +1,19 @@
1
1
  Mongoid::Audit
2
2
  ==============
3
3
 
4
+ Mongoid Audit is a fork of mongoid-history https://github.com/aq1018/mongoid-history
5
+
6
+ Fork differences:
7
+ * Rails 4 support
8
+ * Built in rails_admin auditing support
9
+ * Properly setting user (modifier) all the time
10
+
11
+ In case of problems, you can try mongoid-history, which didn't work properly for us.
12
+
4
13
  [![Build Status](https://secure.travis-ci.org/rs-pro/mongoid-audit.png?branch=master)](http://travis-ci.org/rs-pro/mongoid-audit)
5
14
  [![Dependency Status](https://gemnasium.com/rs-pro/mongoid-audit.png)](https://gemnasium.com/rs-pro/mongoid-audit)
15
+ [![Coverage Status](https://coveralls.io/repos/rs-pro/mongoid-audit/badge.png?branch=master)](https://coveralls.io/r/rs-pro/mongoid-audit?branch=master)
16
+ [![Gem Version](https://badge.fury.io/rb/mongoid-audit.png)](http://badge.fury.io/rb/mongoid-audit)
6
17
 
7
18
  Mongoid-audit tracks historical changes for any document, including embedded ones. It achieves this by storing all history tracks in a single collection that you define. Embedded documents are referenced by storing an association path, which is an array of `document_name` and `document_id` fields starting from the top most parent document and down to the embedded document that should track history.
8
19
 
@@ -110,7 +121,7 @@ class Post
110
121
  :version_field => :version, # adds "field :version, :type => Integer" to track current version, default is :version
111
122
  :track_create => false, # track document creation, default is false
112
123
  :track_update => true, # track document updates, default is true
113
- :track_destroy => false, # track document destruction, default is false
124
+ :track_destroy => false # track document destruction, default is false
114
125
  end
115
126
 
116
127
  class Comment
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "mongoid", github: "mongoid/mongoid", branch: "master"
4
+
5
+ gemspec path: "../"
@@ -4,8 +4,6 @@ require 'mongoid'
4
4
  require 'rails-observers'
5
5
  require 'rails/observers/active_model/active_model'
6
6
 
7
-
8
-
9
7
  module Mongoid
10
8
  module Audit
11
9
  mattr_accessor :tracker_class_name
@@ -19,28 +17,8 @@ module Mongoid
19
17
  end
20
18
  end
21
19
 
22
- unless Mongoid.const_defined?('Observer')
23
- require "rails"
24
- module Rails
25
- module Mongoid
26
- class Railtie < Rails::Railtie
27
- initializer "instantiate observers" do
28
- config.after_initialize do
29
- ::Mongoid::Audit.tracker_class.add_observer ::Mongoid::Audit::Sweeper.instance
30
-
31
- # install model observer and action controller filter
32
- # Mongoid::Audit::Sweeper.send(:observe, Mongoid::Audit.tracker_class_name)
33
- if defined?(ActionController) and defined?(ActionController::Base)
34
- ActionController::Base.class_eval do
35
- before_filter { |controller| ::Mongoid::Audit::Sweeper.instance.before(controller) }
36
- after_filter { |controller| ::Mongoid::Audit::Sweeper.instance.after(controller) }
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
20
+ if defined? Rails::Railtie
21
+ require 'mongoid-audit/railtie'
44
22
  end
45
23
 
46
24
  if Object.const_defined?("RailsAdmin")
@@ -53,4 +31,4 @@ require 'mongoid-audit/sweeper'
53
31
 
54
32
  Mongoid::Audit.modifier_class_name = "User"
55
33
  Mongoid::Audit.trackable_class_options = {}
56
- Mongoid::Audit.current_user_method ||= :current_user
34
+ Mongoid::Audit.current_user_method ||= :current_user
@@ -9,7 +9,7 @@ module RailsAdmin
9
9
  def message
10
10
  @message = @version.action
11
11
  mods = @version.modified.to_a.map do |c|
12
- if c[1].class.name == "Moped::BSON::Binary"
12
+ if c[1].class.name == "Moped::BSON::Binary" || c[1].class.name == "BSON::Binary"
13
13
  c[0] + " = {binary data}"
14
14
  elsif c[1].to_s.length > 220
15
15
  c[0] + " = " + c[1].to_s[0..200]
@@ -70,7 +70,7 @@ module RailsAdmin
70
70
 
71
71
  def listing_for_model(model, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20))
72
72
  history = @version_class.where('association_chain.name' => model.model_name)
73
- history = history.any_of(action: /.*#{query}.*/, modifier_id: /.*#{query}.*/) if query
73
+ history = history.any_of({action: /.*#{query}.*/}, {modifier_id: /.*#{query}.*/}) if query.present?
74
74
  if sort
75
75
  order = sort_reverse == "true" ? :desc : :asc
76
76
  history = history.order_by(sort.to_sym => order)
@@ -85,7 +85,7 @@ module RailsAdmin
85
85
 
86
86
  def listing_for_object(model, object, query, sort, sort_reverse, all, page, per_page = (RailsAdmin::Config.default_items_per_page || 20))
87
87
  history = @version_class.where('association_chain.name' => model.model_name, 'association_chain.id' => object.id)
88
- history = history.any_of(message: /.*#{query}.*/, username: /.*#{query}.*/) if query
88
+ history = history.any_of({action: /.*#{query}.*/}, {username: /.*#{query}.*/}) if query.present?
89
89
  if sort
90
90
  order = sort_reverse == "true" ? :desc : :asc
91
91
  history = history.order_by(sort.to_sym => order)
@@ -105,4 +105,4 @@ end
105
105
 
106
106
  RailsAdmin.add_extension(:mongoid_audit, RailsAdmin::Extensions::MongoidAudit, {
107
107
  :auditing => true
108
- })
108
+ })
@@ -0,0 +1,18 @@
1
+ module Mongoid
2
+ module Audit
3
+ class Railtie < Rails::Railtie
4
+ initializer "instantiate observers" do
5
+ config.after_initialize do
6
+ ::Mongoid::Audit.tracker_class.add_observer( ::Mongoid::Audit::Sweeper.instance )
7
+ # install model observer and action controller filter
8
+ if defined?(ActionController) and defined?(ActionController::Base)
9
+ ActionController::Base.class_eval do
10
+ before_filter { |controller| ::Mongoid::Audit::Sweeper.instance.before(controller) }
11
+ after_filter { |controller| ::Mongoid::Audit::Sweeper.instance.after(controller) }
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -7,7 +7,7 @@ module Mongoid::Audit
7
7
  scope_name = self.collection_name.to_s.singularize.to_sym
8
8
  default_options = {
9
9
  :on => :all,
10
- :except => [:created_at, :updated_at, :deleted_at, :c_at, :u_at],
10
+ :except => [],
11
11
  :modifier_field => :modifier,
12
12
  :version_field => :version,
13
13
  :scope => scope_name,
@@ -22,6 +22,7 @@ module Mongoid::Audit
22
22
  # manually ensure _id, id, version will not be tracked in history
23
23
  options[:except] = [options[:except]] unless options[:except].is_a? Array
24
24
  options[:except] << options[:version_field]
25
+ options[:except] += [:created_at, :updated_at, :deleted_at, :c_at, :u_at]
25
26
  options[:except] << "#{options[:modifier_field]}_id".to_sym
26
27
  options[:except] += [:_id, :id]
27
28
  options[:except] = options[:except].map(&:to_s).flatten.compact.uniq
@@ -34,7 +35,7 @@ module Mongoid::Audit
34
35
  end
35
36
 
36
37
  field options[:version_field].to_sym, :type => Integer
37
- belongs_to options[:modifier_field].to_sym, :class_name => Mongoid::Audit.modifier_class_name
38
+ belongs_to options[:modifier_field].to_sym, :class_name => Mongoid::Audit.modifier_class_name, inverse_of: nil
38
39
 
39
40
  include MyInstanceMethods
40
41
  extend SingletonMethods
@@ -206,6 +207,7 @@ module Mongoid::Audit
206
207
  self.send("#{history_trackable_options[:version_field]}=", current_version)
207
208
 
208
209
  track = Mongoid::Audit.tracker_class.create!(history_tracker_attributes(:update).merge(:version => current_version, :action => "update", :trackable => self))
210
+
209
211
  self.send("#{history_trackable_options[:modifier_field]}=", track.modifier)
210
212
 
211
213
  clear_memoization
@@ -20,6 +20,24 @@ module Mongoid::Audit
20
20
  Mongoid::Audit.tracker_class_name = self.name.tableize.singularize.to_sym
21
21
 
22
22
  index({'association_chain.name' => 1, 'association_chain.id' => 1})
23
+
24
+ Mongoid::Interceptable::CALLBACKS.each do |callback|
25
+ callback_method = :"_notify_#{Mongoid::Audit.tracker_class_name}_#{callback}"
26
+ module_eval <<-RUBY, __FILE__, __LINE__+1
27
+ #{callback} #{callback_method.inspect}
28
+ def #{callback_method}(&block)
29
+ if "#{callback}".start_with?( 'around_' )
30
+ notify_observers(#{callback.inspect}, &block)
31
+ yield
32
+ else
33
+ notify_observers(#{callback.inspect}, &block)
34
+ true
35
+ end
36
+ end
37
+ private #{callback_method.inspect}
38
+ RUBY
39
+ end
40
+
23
41
  end
24
42
 
25
43
  def undo!(modifier)
@@ -74,7 +92,6 @@ module Mongoid::Audit
74
92
  @trackable_parent ||= trackable_parents_and_trackable[-2]
75
93
  end
76
94
 
77
-
78
95
  def affected
79
96
  @affected ||= (modified.keys | original.keys).inject({}){ |h,k| h[k] =
80
97
  trackable ? trackable.attributes[k] : modified[k]; h}
@@ -149,6 +166,5 @@ private
149
166
  end while( !chain.empty? )
150
167
  documents
151
168
  end
152
-
153
169
  end
154
170
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Audit
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -17,13 +17,14 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- gem.add_runtime_dependency('easy_diff', ">= 0")
21
- gem.add_runtime_dependency('mongoid', ">= 3.1.0")
22
- gem.add_runtime_dependency('rails-observers', "~> 0.1.1")
20
+ gem.add_dependency 'easy_diff', '~> 0.0.2'
21
+ gem.add_dependency 'mongoid', ['>= 4.0', '< 5.0']
22
+ gem.add_dependency 'rails-observers', '~> 0.1.2'
23
23
 
24
- gem.add_development_dependency('rake')
25
- gem.add_development_dependency('rspec', "~> 2.13.0")
26
- gem.add_development_dependency('bundler', '>= 1.0.0')
27
- gem.add_development_dependency('database_cleaner', "~> 0.9.1")
28
- gem.add_development_dependency('activesupport', '~> 4.0.0')
24
+ gem.add_development_dependency "bundler", "~> 1.3"
25
+ gem.add_development_dependency "rake"
26
+ gem.add_development_dependency "rspec"
27
+ gem.add_development_dependency "database_cleaner"
28
+ gem.add_development_dependency "coveralls"
29
+ gem.add_development_dependency "activesupport", '~> 4.0.0'
29
30
  end
@@ -2,10 +2,6 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe Mongoid::Audit do
4
4
  before :all do
5
- class HistoryTracker
6
- include Mongoid::Audit::Tracker
7
- end
8
-
9
5
  class Post
10
6
  include Mongoid::Document
11
7
  include Mongoid::Timestamps
@@ -14,6 +10,7 @@ describe Mongoid::Audit do
14
10
  field :title
15
11
  field :body
16
12
  field :rating
13
+ field :views
17
14
 
18
15
  embeds_many :comments
19
16
  embeds_one :section
@@ -50,6 +47,8 @@ describe Mongoid::Audit do
50
47
  include Mongoid::Timestamps
51
48
  include Mongoid::Audit::Trackable
52
49
 
50
+ has_and_belongs_to_many :own_restaurants, class_name: 'Restaurant', inverse_of: :owners
51
+
53
52
  field :email
54
53
  field :name
55
54
  track_history :except => [:email]
@@ -65,6 +64,17 @@ describe Mongoid::Audit do
65
64
  field :title
66
65
  track_history :on => [:title], :scope => :post, :track_create => true, :track_destroy => true, :modifier_field => :updated_by
67
66
  end
67
+
68
+ class Restaurant
69
+ include Mongoid::Document
70
+ include Mongoid::Audit::Trackable
71
+
72
+ has_and_belongs_to_many :owners, class_name: 'User', inverse_of: nil
73
+
74
+ field :title
75
+
76
+ track_history :on => [:title], :track_create => true, :track_destroy => true
77
+ end
68
78
  end
69
79
 
70
80
  before :each do
@@ -322,6 +332,15 @@ describe Mongoid::Audit do
322
332
 
323
333
  it "should assign modifier" do
324
334
  @section.update_attributes(:title => "Business", :modifier => @another_user)
335
+ @post.reload
336
+ # just workaround strange mongoid #last bug for now
337
+ @post.history_tracks.to_a[-1].modifier.should == @another_user
338
+ end
339
+
340
+ it "should update modifier" do
341
+ @section.update_attributes(:title => 'Technology 2', :modifier => @user)
342
+ @section.update_attributes(:title => "Business", :modifier => @another_user)
343
+ @post.reload
325
344
  @post.history_tracks.last.modifier.should == @another_user
326
345
  end
327
346
  end
@@ -361,9 +380,9 @@ describe Mongoid::Audit do
361
380
 
362
381
  describe "embedded with cascading callbacks" do
363
382
  before(:each) do
364
- Mongoid.instantiate_observers
365
383
  Thread.current[:mongoid_history_sweeper_controller] = self
366
- self.stub!(:current_user).and_return @user
384
+ # self.stub!(:current_user).and_return @user
385
+ allow(self).to receive(:current_user).and_return(@user)
367
386
  @tag_foo = @post.tags.create(:title => "foo", :updated_by => @user)
368
387
  @tag_bar = @post.tags.create(:title => "bar")
369
388
  end
@@ -546,7 +565,101 @@ describe Mongoid::Audit do
546
565
  @comment.redo! @user, :last => 1
547
566
  @comment.title.should == "Test5"
548
567
  end
568
+ end
569
+ end
570
+
571
+ describe "duplicate relations" do
572
+ it "should save correct relation" do
573
+ lambda{ Restaurant.create!( title: 'test', modifier_id: @user.id ) }.should_not raise_error
574
+ end
575
+ end
576
+
577
+
578
+ describe "rails admin history" do
579
+ before :each do
580
+ @restaurant = Restaurant.create!( title: 'test', modifier_id: @user.id )
581
+ @adapter = ::RailsAdmin::Extensions::MongoidAudit::AuditingAdapter.new( nil )
582
+ @model = Struct.new( :model_name ).new( 'Restaurant' )
583
+ end
584
+
585
+ it "should list all records from history table" do
586
+ query = ''
587
+
588
+ items = @adapter.listing_for_model(@model, query, false, 'false', true, 1, 10)
589
+
590
+ expect( items ).not_to be_empty
591
+
592
+ item = items.first
593
+
594
+ expect( item.message ).to eq 'create Restaurant [title = test]'
595
+ expect( item.table ).to eq 'Restaurant'
596
+ expect( item.username ).to eq @user.email
597
+ expect( item.item ).to eq @restaurant.id
598
+
599
+ query = nil
600
+
601
+ items = @adapter.listing_for_model(@model, query, false, 'false', true, 1, 10)
602
+
603
+ expect( items ).not_to be_empty
604
+
605
+ item = items.first
606
+
607
+ expect( item.message ).to eq 'create Restaurant [title = test]'
608
+ end
609
+
610
+ it "should list records from history table specified by query" do
611
+ query = 'create'
612
+
613
+ items = @adapter.listing_for_model(@model, query, false, 'false', true, 1, 10)
614
+
615
+ expect( items ).not_to be_empty
616
+
617
+ item = items.first
618
+
619
+ expect( item.message ).to eq 'create Restaurant [title = test]'
620
+ expect( item.table ).to eq 'Restaurant'
621
+ expect( item.username ).to eq @user.email
622
+ expect( item.item ).to eq @restaurant.id
623
+ end
624
+
625
+ it "should list records from history table specified by item" do
626
+ query = ''
627
+
628
+ items = @adapter.listing_for_object(@model, @restaurant, query, false, 'false', true, 1, 10)
629
+
630
+ expect( items ).not_to be_empty
631
+
632
+ item = items.first
633
+
634
+ expect( item.message ).to eq 'create Restaurant [title = test]'
635
+ expect( item.table ).to eq 'Restaurant'
636
+ expect( item.username ).to eq @user.email
637
+ expect( item.item ).to eq @restaurant.id
638
+
639
+ query = nil
640
+
641
+ items = @adapter.listing_for_object(@model, @restaurant, query, false, 'false', true, 1, 10)
642
+
643
+ expect( items ).not_to be_empty
644
+
645
+ item = items.first
646
+
647
+ expect( item.message ).to eq 'create Restaurant [title = test]'
648
+ end
649
+
650
+ it "should list records from history table specified by item and query" do
651
+ query = 'create'
652
+
653
+ items = @adapter.listing_for_object(@model, @restaurant, query, false, 'false', true, 1, 10)
654
+
655
+ expect( items ).not_to be_empty
656
+
657
+ item = items.first
549
658
 
659
+ expect( item.message ).to eq 'create Restaurant [title = test]'
660
+ expect( item.table ).to eq 'Restaurant'
661
+ expect( item.username ).to eq @user.email
662
+ expect( item.item ).to eq @restaurant.id
550
663
  end
551
664
  end
552
665
  end
@@ -1,3 +1,8 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ ENV["RAILS_ENV"] ||= 'test'
5
+
1
6
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
7
 
3
8
  require 'rubygems'
@@ -6,6 +11,11 @@ require 'active_support/core_ext'
6
11
  require 'mongoid'
7
12
  require 'database_cleaner'
8
13
 
14
+ module RailsAdmin
15
+ def self.add_extension(*args); end
16
+ end
17
+ require "mongoid-audit/rails_admin"
18
+
9
19
  Bundler.require
10
20
 
11
21
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each do |f|
@@ -13,4 +23,6 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each do |f|
13
23
  end
14
24
 
15
25
  require 'mongoid-audit'
16
-
26
+ class HistoryTracker
27
+ include Mongoid::Audit::Tracker
28
+ end
@@ -1,9 +1,11 @@
1
+ DatabaseCleaner[:mongoid].strategy = :truncation
2
+
1
3
  RSpec.configure do |config|
2
- config.before :suite do
3
- DatabaseCleaner.strategy = :truncation
4
+ config.before :each do
5
+ DatabaseCleaner.start
4
6
  end
7
+
5
8
  config.after :each do
6
9
  DatabaseCleaner.clean
7
10
  end
8
- end
9
-
11
+ end
@@ -1,17 +1,16 @@
1
- ENV["MONGOID_ENV"] = "test"
2
- Mongoid.load!("config/mongoid.yml")
1
+ Mongoid.configure do |config|
2
+ config.connect_to "mongoid-audit-test"
3
+ end
3
4
 
4
5
  RSpec.configure do |config|
5
6
  config.before :each do
6
- Mongoid.observers = Mongoid::Audit::Sweeper
7
+ HistoryTracker.add_observer(::Mongoid::Audit::Sweeper.instance)
7
8
  end
8
- config.backtrace_clean_patterns = [
9
+ config.backtrace_exclusion_patterns = [
9
10
  # /\/lib\d*\/ruby\//,
10
11
  # /bin\//,
11
12
  # /gems/,
12
13
  # /spec\/spec_helper\.rb/,
13
14
  /lib\/rspec\/(core|expectations|matchers|mocks)/
14
- ]
15
- end
16
-
17
-
15
+ ]
16
+ end
@@ -12,6 +12,11 @@ describe Mongoid::Audit::Trackable do
12
12
  Mongoid::Audit.trackable_class_options = nil
13
13
  end
14
14
 
15
+ def compare( option )
16
+ option[:except].sort! unless option[:except].nil?
17
+ option.should == @expected_option
18
+ end
19
+
15
20
  it "should have #track_history" do
16
21
  MyModel.should respond_to :track_history
17
22
  end
@@ -24,6 +29,8 @@ describe Mongoid::Audit::Trackable do
24
29
 
25
30
  describe "#track_history" do
26
31
  before :each do
32
+ Object.send(:remove_const, :MyModel) if Object.constants.include?(:MyModel)
33
+
27
34
  class MyModel
28
35
  include Mongoid::Document
29
36
  include Mongoid::Audit::Trackable
@@ -35,7 +42,7 @@ describe Mongoid::Audit::Trackable do
35
42
  :modifier_field => :modifier,
36
43
  :version_field => :version,
37
44
  :scope => :my_model,
38
- :except => ["created_at", "updated_at", "deleted_at", "c_at", "u_at", "version", "modifier_id", "_id", "id"],
45
+ :except => ["version", "created_at", "updated_at", "deleted_at", "c_at", "u_at", "modifier_id", "_id", "id"].sort,
39
46
  :track_create => false,
40
47
  :track_update => true,
41
48
  :track_destroy => false,
@@ -47,7 +54,7 @@ describe Mongoid::Audit::Trackable do
47
54
  end
48
55
 
49
56
  it "should have default options" do
50
- Mongoid::Audit.trackable_class_options[:my_model].should == @expected_option
57
+ compare( Mongoid::Audit.trackable_class_options[:my_model] )
51
58
  end
52
59
 
53
60
  it "should define callback function #track_update" do
@@ -63,21 +70,29 @@ describe Mongoid::Audit::Trackable do
63
70
  end
64
71
 
65
72
  it "should define #history_trackable_options" do
66
- MyModel.history_trackable_options.should == @expected_option
73
+ compare( MyModel.history_trackable_options )
67
74
  end
68
75
 
69
76
  context "sub-model" do
70
77
  before :each do
78
+ Object.send(:remove_const, :MyModel) if Object.constants.include?(:MyModel)
79
+ Object.send(:remove_const, :MySubModel) if Object.constants.include?(:MySubModel)
80
+
81
+ class MyModel
82
+ include Mongoid::Document
83
+ include Mongoid::Audit::Trackable
84
+ track_history
85
+ end
71
86
  class MySubModel < MyModel
72
87
  end
73
88
  end
74
89
 
75
90
  it "should have default options" do
76
- Mongoid::Audit.trackable_class_options[:my_model].should == @expected_option
91
+ compare( Mongoid::Audit.trackable_class_options[:my_model] )
77
92
  end
78
93
 
79
94
  it "should define #history_trackable_options" do
80
- MySubModel.history_trackable_options.should == @expected_option
95
+ compare( MySubModel.history_trackable_options )
81
96
  end
82
97
  end
83
98
 
@@ -114,8 +129,6 @@ describe Mongoid::Audit::Trackable do
114
129
  MyModel2.new.track_history?.should == true
115
130
  end
116
131
  end
117
-
118
132
  end
119
-
120
133
  end
121
134
  end
@@ -14,4 +14,4 @@ describe Mongoid::Audit::Tracker do
14
14
  it "should set tracker_class_name when included" do
15
15
  Mongoid::Audit.tracker_class_name.should == :my_tracker
16
16
  end
17
- end
17
+ end
metadata CHANGED
@@ -1,57 +1,77 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-audit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gleb Tv
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-03 00:00:00.000000000 Z
11
+ date: 2013-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: easy_diff
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.0.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.0.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mongoid
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '>='
32
32
  - !ruby/object:Gem::Version
33
- version: 3.1.0
33
+ version: '4.0'
34
+ - - <
35
+ - !ruby/object:Gem::Version
36
+ version: '5.0'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
41
  - - '>='
39
42
  - !ruby/object:Gem::Version
40
- version: 3.1.0
43
+ version: '4.0'
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ version: '5.0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: rails-observers
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
47
- version: 0.1.1
53
+ version: 0.1.2
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - ~>
53
59
  - !ruby/object:Gem::Version
54
- version: 0.1.1
60
+ version: 0.1.2
61
+ - !ruby/object:Gem::Dependency
62
+ name: bundler
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: '1.3'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: '1.3'
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: rake
57
77
  requirement: !ruby/object:Gem::Requirement
@@ -70,44 +90,44 @@ dependencies:
70
90
  name: rspec
71
91
  requirement: !ruby/object:Gem::Requirement
72
92
  requirements:
73
- - - ~>
93
+ - - '>='
74
94
  - !ruby/object:Gem::Version
75
- version: 2.13.0
95
+ version: '0'
76
96
  type: :development
77
97
  prerelease: false
78
98
  version_requirements: !ruby/object:Gem::Requirement
79
99
  requirements:
80
- - - ~>
100
+ - - '>='
81
101
  - !ruby/object:Gem::Version
82
- version: 2.13.0
102
+ version: '0'
83
103
  - !ruby/object:Gem::Dependency
84
- name: bundler
104
+ name: database_cleaner
85
105
  requirement: !ruby/object:Gem::Requirement
86
106
  requirements:
87
107
  - - '>='
88
108
  - !ruby/object:Gem::Version
89
- version: 1.0.0
109
+ version: '0'
90
110
  type: :development
91
111
  prerelease: false
92
112
  version_requirements: !ruby/object:Gem::Requirement
93
113
  requirements:
94
114
  - - '>='
95
115
  - !ruby/object:Gem::Version
96
- version: 1.0.0
116
+ version: '0'
97
117
  - !ruby/object:Gem::Dependency
98
- name: database_cleaner
118
+ name: coveralls
99
119
  requirement: !ruby/object:Gem::Requirement
100
120
  requirements:
101
- - - ~>
121
+ - - '>='
102
122
  - !ruby/object:Gem::Version
103
- version: 0.9.1
123
+ version: '0'
104
124
  type: :development
105
125
  prerelease: false
106
126
  version_requirements: !ruby/object:Gem::Requirement
107
127
  requirements:
108
- - - ~>
128
+ - - '>='
109
129
  - !ruby/object:Gem::Version
110
- version: 0.9.1
130
+ version: '0'
111
131
  - !ruby/object:Gem::Dependency
112
132
  name: activesupport
113
133
  requirement: !ruby/object:Gem::Requirement
@@ -129,6 +149,7 @@ executables: []
129
149
  extensions: []
130
150
  extra_rdoc_files: []
131
151
  files:
152
+ - .coveralls.yml
132
153
  - .gitignore
133
154
  - .rspec
134
155
  - .ruby-gemset
@@ -139,9 +160,11 @@ files:
139
160
  - README.md
140
161
  - Rakefile
141
162
  - config/mongoid.yml
163
+ - gemfiles/mongoid-4.0.gemfile
142
164
  - lib/mongoid-audit.rb
143
165
  - lib/mongoid-audit/mongoid_observer.rb
144
166
  - lib/mongoid-audit/rails_admin.rb
167
+ - lib/mongoid-audit/railtie.rb
145
168
  - lib/mongoid-audit/sweeper.rb
146
169
  - lib/mongoid-audit/trackable.rb
147
170
  - lib/mongoid-audit/tracker.rb
@@ -172,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
195
  version: '0'
173
196
  requirements: []
174
197
  rubyforge_project:
175
- rubygems_version: 2.0.3
198
+ rubygems_version: 2.1.10
176
199
  signing_key:
177
200
  specification_version: 4
178
201
  summary: Easily track model change history and mantain audit log with mongoid