diff --git a/spec/integration/nested_embedded_documents_tracked_in_parent_spec.rb b/spec/integration/nested_embedded_documents_tracked_in_parent_spec.rb new file mode 100644 index 00000000..66db8e8f --- /dev/null +++ b/spec/integration/nested_embedded_documents_tracked_in_parent_spec.rb @@ -0,0 +1,47 @@ +require 'spec_helper' + +describe Mongoid::History::Tracker do + before :all do + class Child + include Mongoid::Document + include Mongoid::History::Trackable + + field :name + embedded_in :parent, inverse_of: :child + end + + class Parent + include Mongoid::Document + include Mongoid::History::Trackable + + field :name, type: String + embeds_one :child + + track_history on: [:fields, :embedded_relations], # track title and body fields only, default is :all + modifier_field: :modifier, # adds "referenced_in :modifier" to track who made the change, default is :modifier + modifier_field_inverse_of: :nil, + version_field: :version, # adds "field :version, :type => Integer" to track current version, default is :version + track_create: false, # track document creation, default is false + track_update: true, # track document updates, default is true + track_destroy: false # track document destruction, default is false + end + end + + it 'should be able to track history for nested embedded documents in parent' do + p = Parent.new(name: 'bowser') + p.child = Child.new(name: 'todd') + p.save! + + p.child.name = 'mario' + p.save! + + changes = p.history_tracks.reverse + expect(changes.length).to eq(1) + expect(changes.first.modified['name']).to eq('mario') + end + + after :all do + Object.send(:remove_const, :Parent) + Object.send(:remove_const, :Child) + end +end