Sha256: a10c064391e5da4dc4f0381933ac1a65b691c6af044221b4882af342b5bc6ec6

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require 'test_helper'

module TrackChanges
  class AuditFilterTest < Test::Unit::TestCase
    should "accept a single model" do
      assert TrackChanges::AuditFilter.new(:model)
    end

    should "accept multiple models" do
      assert TrackChanges::AuditFilter.new(:model_a, :model_b)
    end

    should "respond to #before" do
      assert TrackChanges::AuditFilter.new.respond_to?(:before)
    end

    should "respond to #after" do
      assert TrackChanges::AuditFilter.new.respond_to?(:after)
    end

    should "create an audit when before and after called" do
      expected_change_set = {"value" => ["old", "new"]}
      expected_user       = "current user"

      audit = mock('audit')

      model = mock('model')
      model.stubs(:attributes=).returns({})
      model.stubs(:changes).returns(expected_change_set)

      modified_model = mock('modified model')
      modified_model.stubs(:changed?).returns(false)
      modified_model.stubs(:attributes).returns({})
      modified_model.stubs(:audits).returns(audit)

      controller = mock('controller')
      controller.stubs(:instance_variable_get).returns(model, modified_model)
      controller.stubs(:current_user).returns(expected_user)

      audit_filter = AuditFilter.new(:model)
      audit_filter.before(controller)

      audit.expects(:create!).with(has_entries(:user => expected_user, :change_set => expected_change_set)).returns(true)
      audit_filter.after(controller)
    end

    should "ignore nil models" do
      controller = mock('controller')
      controller.expects(:instance_variable_get).returns(nil)

      audit_filter = AuditFilter.new(:model)
      assert_nothing_raised do
        audit_filter.before(controller)
        audit_filter.after(controller)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
track_changes-0.4.1 test/track_changes/audit_filter_test.rb