Module: Woulda::ActsAsParanoid::Macros

Defined in:
lib/woulda/acts_as_paranoid/macros.rb

Instance Method Summary collapse

Instance Method Details

#should_act_as_paranoidObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/woulda/acts_as_paranoid/macros.rb', line 4

def should_act_as_paranoid
  klass = described_type
  should_have_db_column :deleted_at

  context "A #{klass.name}" do
    should "be paranoid (it will not be deleted from the database)" do
      assert klass.paranoid?
      assert klass.included_modules.include?(Caboose::Acts::Paranoid)
    end

    should "not have a value for deleted_at" do
      assert object = klass.find(:first)
      assert_nil object.deleted_at
    end

    context "when destroyed" do
      setup do
        assert object = klass.find(:first), "This context requires there to be an existing #{klass}"
        @deleted_id = object.id
        object.destroy
      end

      should "not be found" do
        assert_raise(ActiveRecord::RecordNotFound) { klass.find(@deleted_id) }
      end

      should "still exist in the database" do
        deleted_object = klass.find_with_deleted(@deleted_id)
        assert_not_nil deleted_object.deleted_at
      end
    end
  end
end