rails_soft_deletable 0.0.7 → 0.0.8
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 +8 -8
- data/lib/rails_soft_deletable/rails/associations.rb +21 -0
- data/lib/rails_soft_deletable/rails/railtie.rb +5 -0
- data/lib/rails_soft_deletable/version.rb +1 -1
- data/spec/dummy/app/models/decimal_model.rb +1 -1
- data/spec/dummy/app/models/forest.rb +7 -0
- data/spec/dummy/app/models/park.rb +3 -0
- data/spec/dummy/app/models/tree.rb +7 -0
- data/spec/dummy/db/schema.rb +16 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +2070 -0
- data/spec/rails_soft_deletable_spec.rb +185 -4
- metadata +13 -4
- data/spec/schema.rb +0 -11
| @@ -4,6 +4,187 @@ describe RailsSoftDeletable do | |
| 4 4 | 
             
              let (:model) { IntegerModel.create! }
         | 
| 5 5 | 
             
              let (:decimal_model) { DecimalModel.create! }
         | 
| 6 6 | 
             
              let (:integer_model) { IntegerModel.create! }
         | 
| 7 | 
            +
              let (:forest) { Forest.create! }
         | 
| 8 | 
            +
              let (:park) { Park.create! }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              context ".with_deleted" do
         | 
| 11 | 
            +
                it "returns both non deleted and soft deleted object" do
         | 
| 12 | 
            +
                  model.destroy
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  expect(IntegerModel.with_deleted).to include(model, integer_model)
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              context ".only_deleted" do
         | 
| 19 | 
            +
                it "returns only deleted object" do
         | 
| 20 | 
            +
                  model.destroy
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  expect(IntegerModel.only_deleted).to include(model)
         | 
| 23 | 
            +
                  expect(IntegerModel.only_deleted).not_to include(integer_model)
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              context "with associations" do
         | 
| 28 | 
            +
                context "model with soft_deletable" do
         | 
| 29 | 
            +
                  context ".belongs_to" do
         | 
| 30 | 
            +
                    context "with deleted option" do
         | 
| 31 | 
            +
                      before do
         | 
| 32 | 
            +
                        Tree.belongs_to(:forest, with_deleted: true)
         | 
| 33 | 
            +
                        forest.destroy
         | 
| 34 | 
            +
                        @tree = Tree.create!(forest_id: forest.id)
         | 
| 35 | 
            +
                      end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                      it "returns associated objects" do
         | 
| 38 | 
            +
                        expect(@tree.forest).to eq(forest)
         | 
| 39 | 
            +
                      end
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    context "without deleted option" do
         | 
| 43 | 
            +
                      before do
         | 
| 44 | 
            +
                        Tree.belongs_to(:forest)
         | 
| 45 | 
            +
                        forest.destroy
         | 
| 46 | 
            +
                        @tree = Tree.create!(forest_id: forest.id)
         | 
| 47 | 
            +
                      end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                      it "does not return deleted associated objects" do
         | 
| 50 | 
            +
                        expect(@tree.forest).to be_nil
         | 
| 51 | 
            +
                      end
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  context ".has_many" do
         | 
| 56 | 
            +
                    context "with deleted option" do
         | 
| 57 | 
            +
                      before do
         | 
| 58 | 
            +
                        Forest.has_many(:trees, with_deleted: true)
         | 
| 59 | 
            +
                        @tree_destroyed = Tree.create!(forest_id: forest.id)
         | 
| 60 | 
            +
                        @tree_destroyed.destroy
         | 
| 61 | 
            +
                        @tree = Tree.create!(forest_id: forest.id)
         | 
| 62 | 
            +
                      end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                      it "returns all associated objects" do
         | 
| 65 | 
            +
                        expect(forest.trees).to include(@tree_destroyed, @tree)
         | 
| 66 | 
            +
                      end
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                    context "without deleted option" do
         | 
| 70 | 
            +
                      before do
         | 
| 71 | 
            +
                        Forest.has_many(:trees)
         | 
| 72 | 
            +
                        Tree.create!(forest_id: forest.id).destroy
         | 
| 73 | 
            +
                      end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                      it "returns empty" do
         | 
| 76 | 
            +
                        expect(forest.trees).to be_empty
         | 
| 77 | 
            +
                      end
         | 
| 78 | 
            +
                    end
         | 
| 79 | 
            +
                  end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                  context ".has_one" do
         | 
| 82 | 
            +
                    context "with deleted option" do
         | 
| 83 | 
            +
                      before do
         | 
| 84 | 
            +
                        Forest.has_one(:tree, conditions: ["biggest = ?", true], with_deleted: true)
         | 
| 85 | 
            +
                        @tree = Tree.create!(forest_id: forest.id, biggest: true)
         | 
| 86 | 
            +
                        @tree.destroy
         | 
| 87 | 
            +
                      end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                      it "returns deleted object" do
         | 
| 90 | 
            +
                        expect(forest.tree).to eq(@tree)
         | 
| 91 | 
            +
                      end
         | 
| 92 | 
            +
                    end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                    context "without deleted option" do
         | 
| 95 | 
            +
                      before do
         | 
| 96 | 
            +
                        Forest.has_one(:tree, conditions: ["biggest = ?", true])
         | 
| 97 | 
            +
                        Tree.create!(forest_id: forest.id, biggest: true).destroy
         | 
| 98 | 
            +
                      end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                      it "returns nil" do
         | 
| 101 | 
            +
                        expect(forest.tree).to be_nil
         | 
| 102 | 
            +
                      end
         | 
| 103 | 
            +
                    end
         | 
| 104 | 
            +
                  end
         | 
| 105 | 
            +
                end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                context "model without soft_deletable" do
         | 
| 108 | 
            +
                  context ".belongs_to" do
         | 
| 109 | 
            +
                    context "with deleted option" do
         | 
| 110 | 
            +
                      before do
         | 
| 111 | 
            +
                        Park.belongs_to(:forest, with_deleted: true)
         | 
| 112 | 
            +
                        forest.destroy
         | 
| 113 | 
            +
                        park.forest = forest
         | 
| 114 | 
            +
                        park.save
         | 
| 115 | 
            +
                      end
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                      it "returns associated objects" do
         | 
| 118 | 
            +
                        expect(park.reload.forest).to eq(forest)
         | 
| 119 | 
            +
                      end
         | 
| 120 | 
            +
                    end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                    context "without deleted option" do
         | 
| 123 | 
            +
                      before do
         | 
| 124 | 
            +
                        Park.belongs_to(:forest)
         | 
| 125 | 
            +
                        forest.destroy
         | 
| 126 | 
            +
                        park.forest = forest
         | 
| 127 | 
            +
                        park.save
         | 
| 128 | 
            +
                      end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                      it "does not return deleted associated objects" do
         | 
| 131 | 
            +
                        expect(park.reload.forest).to be_nil
         | 
| 132 | 
            +
                      end
         | 
| 133 | 
            +
                    end
         | 
| 134 | 
            +
                  end
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                  context ".has_many" do
         | 
| 137 | 
            +
                    context "with deleted option" do
         | 
| 138 | 
            +
                      before do
         | 
| 139 | 
            +
                        Park.has_many(:trees, with_deleted: true)
         | 
| 140 | 
            +
                        @tree_destroyed = Tree.create!(park_id: park.id)
         | 
| 141 | 
            +
                        @tree_destroyed.destroy
         | 
| 142 | 
            +
                        @tree = Tree.create!(park_id: park.id)
         | 
| 143 | 
            +
                      end
         | 
| 144 | 
            +
             | 
| 145 | 
            +
                      it "returns all associated objects" do
         | 
| 146 | 
            +
                        expect(park.trees).to include(@tree_destroyed, @tree)
         | 
| 147 | 
            +
                      end
         | 
| 148 | 
            +
                    end
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                    context "without deleted option" do
         | 
| 151 | 
            +
                      before do
         | 
| 152 | 
            +
                        Park.has_many(:trees)
         | 
| 153 | 
            +
                        Tree.create!(park_id: park.id).destroy
         | 
| 154 | 
            +
                      end
         | 
| 155 | 
            +
             | 
| 156 | 
            +
                      it "returns empty" do
         | 
| 157 | 
            +
                        expect(park.trees).to be_empty
         | 
| 158 | 
            +
                      end
         | 
| 159 | 
            +
                    end
         | 
| 160 | 
            +
                  end
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                  context ".has_one" do
         | 
| 163 | 
            +
                    context "with deleted option" do
         | 
| 164 | 
            +
                      before do
         | 
| 165 | 
            +
                        Park.has_one(:tree, conditions: ["biggest = ?", true], with_deleted: true)
         | 
| 166 | 
            +
                        @tree = Tree.create!(park_id: park.id, biggest: true)
         | 
| 167 | 
            +
                        @tree.destroy
         | 
| 168 | 
            +
                      end
         | 
| 169 | 
            +
             | 
| 170 | 
            +
                      it "returns deleted object" do
         | 
| 171 | 
            +
                        expect(park.tree).to eq(@tree)
         | 
| 172 | 
            +
                      end
         | 
| 173 | 
            +
                    end
         | 
| 174 | 
            +
             | 
| 175 | 
            +
                    context "without deleted option" do
         | 
| 176 | 
            +
                      before do
         | 
| 177 | 
            +
                        Park.has_one(:tree, conditions: ["biggest = ?", true])
         | 
| 178 | 
            +
                        Tree.create!(park_id: park.id, biggest: true).destroy
         | 
| 179 | 
            +
                      end
         | 
| 180 | 
            +
             | 
| 181 | 
            +
                      it "returns nil" do
         | 
| 182 | 
            +
                        expect(park.tree).to be_nil
         | 
| 183 | 
            +
                      end
         | 
| 184 | 
            +
                    end
         | 
| 185 | 
            +
                  end
         | 
| 186 | 
            +
                end
         | 
| 187 | 
            +
              end
         | 
| 7 188 |  | 
| 8 189 | 
             
              context "#destroy" do
         | 
| 9 190 | 
             
                it "marks deleted_at column" do
         | 
| @@ -20,14 +201,14 @@ describe RailsSoftDeletable do | |
| 20 201 | 
             
                end
         | 
| 21 202 |  | 
| 22 203 | 
             
                it "soft deletes the record" do
         | 
| 23 | 
            -
                  Timecop.freeze(Time.now) do
         | 
| 204 | 
            +
                  Timecop.freeze(Time.now.round) do
         | 
| 24 205 | 
             
                    decimal_model.destroy
         | 
| 25 206 | 
             
                    integer_model.destroy
         | 
| 26 207 |  | 
| 27 208 | 
             
                    expect(decimal_model.deleted_at).to eq(("%0.6f" % Time.now.to_f).to_f)
         | 
| 28 209 | 
             
                    expect(integer_model.deleted_at).to eq(Time.now.to_i)
         | 
| 29 210 |  | 
| 30 | 
            -
                    expect(decimal_model.soft_delete_time).to eq(Time.now)
         | 
| 211 | 
            +
                    expect(decimal_model.soft_delete_time).to eq(Time.now.in_time_zone)
         | 
| 31 212 | 
             
                    expect(integer_model.soft_delete_time.to_i).to eq(Time.now.to_i)
         | 
| 32 213 | 
             
                  end
         | 
| 33 214 | 
             
                end
         | 
| @@ -119,14 +300,14 @@ describe RailsSoftDeletable do | |
| 119 300 | 
             
                end
         | 
| 120 301 |  | 
| 121 302 | 
             
                it "soft deletes the record" do
         | 
| 122 | 
            -
                  Timecop.freeze(Time.now) do
         | 
| 303 | 
            +
                  Timecop.freeze(Time.now.round) do
         | 
| 123 304 | 
             
                    decimal_model.delete
         | 
| 124 305 | 
             
                    integer_model.delete
         | 
| 125 306 |  | 
| 126 307 | 
             
                    expect(decimal_model.deleted_at).to eq(("%0.6f" % Time.now.to_f).to_f)
         | 
| 127 308 | 
             
                    expect(integer_model.deleted_at.to_i).to eq(Time.now.to_i)
         | 
| 128 309 |  | 
| 129 | 
            -
                    expect(decimal_model.soft_delete_time).to eq(Time.now)
         | 
| 310 | 
            +
                    expect(decimal_model.soft_delete_time).to eq(Time.now.in_time_zone)
         | 
| 130 311 | 
             
                    expect(integer_model.soft_delete_time.to_i).to eq(Time.now.to_i)
         | 
| 131 312 | 
             
                  end
         | 
| 132 313 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rails_soft_deletable
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.8
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Quan Nguyen
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013-12- | 
| 12 | 
            +
            date: 2013-12-11 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              type: :runtime
         | 
| @@ -126,6 +126,7 @@ files: | |
| 126 126 | 
             
            - lib/rails_soft_deletable/callbacks.rb
         | 
| 127 127 | 
             
            - lib/rails_soft_deletable/query.rb
         | 
| 128 128 | 
             
            - lib/rails_soft_deletable/rails/active_record.rb
         | 
| 129 | 
            +
            - lib/rails_soft_deletable/rails/associations.rb
         | 
| 129 130 | 
             
            - lib/rails_soft_deletable/rails/railtie.rb
         | 
| 130 131 | 
             
            - lib/rails_soft_deletable/version.rb
         | 
| 131 132 | 
             
            - lib/rails_soft_deletable.rb
         | 
| @@ -134,7 +135,10 @@ files: | |
| 134 135 | 
             
            - spec/dummy/app/controllers/application_controller.rb
         | 
| 135 136 | 
             
            - spec/dummy/app/helpers/application_helper.rb
         | 
| 136 137 | 
             
            - spec/dummy/app/models/decimal_model.rb
         | 
| 138 | 
            +
            - spec/dummy/app/models/forest.rb
         | 
| 137 139 | 
             
            - spec/dummy/app/models/integer_model.rb
         | 
| 140 | 
            +
            - spec/dummy/app/models/park.rb
         | 
| 141 | 
            +
            - spec/dummy/app/models/tree.rb
         | 
| 138 142 | 
             
            - spec/dummy/app/views/layouts/application.html.erb
         | 
| 139 143 | 
             
            - spec/dummy/config/application.rb
         | 
| 140 144 | 
             
            - spec/dummy/config/boot.rb
         | 
| @@ -151,7 +155,9 @@ files: | |
| 151 155 | 
             
            - spec/dummy/config/routes.rb
         | 
| 152 156 | 
             
            - spec/dummy/config.ru
         | 
| 153 157 | 
             
            - spec/dummy/db/schema.rb
         | 
| 158 | 
            +
            - spec/dummy/db/test.sqlite3
         | 
| 154 159 | 
             
            - spec/dummy/lib/soft_deletable_model_callbacks.rb
         | 
| 160 | 
            +
            - spec/dummy/log/test.log
         | 
| 155 161 | 
             
            - spec/dummy/public/404.html
         | 
| 156 162 | 
             
            - spec/dummy/public/422.html
         | 
| 157 163 | 
             
            - spec/dummy/public/500.html
         | 
| @@ -160,7 +166,6 @@ files: | |
| 160 166 | 
             
            - spec/dummy/README.rdoc
         | 
| 161 167 | 
             
            - spec/dummy/script/rails
         | 
| 162 168 | 
             
            - spec/rails_soft_deletable_spec.rb
         | 
| 163 | 
            -
            - spec/schema.rb
         | 
| 164 169 | 
             
            - spec/spec_helper.rb
         | 
| 165 170 | 
             
            - spec/support/environment.rb
         | 
| 166 171 | 
             
            - spec/support/timecop.rb
         | 
| @@ -197,7 +202,10 @@ test_files: | |
| 197 202 | 
             
            - spec/dummy/app/controllers/application_controller.rb
         | 
| 198 203 | 
             
            - spec/dummy/app/helpers/application_helper.rb
         | 
| 199 204 | 
             
            - spec/dummy/app/models/decimal_model.rb
         | 
| 205 | 
            +
            - spec/dummy/app/models/forest.rb
         | 
| 200 206 | 
             
            - spec/dummy/app/models/integer_model.rb
         | 
| 207 | 
            +
            - spec/dummy/app/models/park.rb
         | 
| 208 | 
            +
            - spec/dummy/app/models/tree.rb
         | 
| 201 209 | 
             
            - spec/dummy/app/views/layouts/application.html.erb
         | 
| 202 210 | 
             
            - spec/dummy/config/application.rb
         | 
| 203 211 | 
             
            - spec/dummy/config/boot.rb
         | 
| @@ -214,7 +222,9 @@ test_files: | |
| 214 222 | 
             
            - spec/dummy/config/routes.rb
         | 
| 215 223 | 
             
            - spec/dummy/config.ru
         | 
| 216 224 | 
             
            - spec/dummy/db/schema.rb
         | 
| 225 | 
            +
            - spec/dummy/db/test.sqlite3
         | 
| 217 226 | 
             
            - spec/dummy/lib/soft_deletable_model_callbacks.rb
         | 
| 227 | 
            +
            - spec/dummy/log/test.log
         | 
| 218 228 | 
             
            - spec/dummy/public/404.html
         | 
| 219 229 | 
             
            - spec/dummy/public/422.html
         | 
| 220 230 | 
             
            - spec/dummy/public/500.html
         | 
| @@ -223,7 +233,6 @@ test_files: | |
| 223 233 | 
             
            - spec/dummy/README.rdoc
         | 
| 224 234 | 
             
            - spec/dummy/script/rails
         | 
| 225 235 | 
             
            - spec/rails_soft_deletable_spec.rb
         | 
| 226 | 
            -
            - spec/schema.rb
         | 
| 227 236 | 
             
            - spec/spec_helper.rb
         | 
| 228 237 | 
             
            - spec/support/environment.rb
         | 
| 229 238 | 
             
            - spec/support/timecop.rb
         | 
    
        data/spec/schema.rb
    DELETED
    
    | @@ -1,11 +0,0 @@ | |
| 1 | 
            -
            # encoding: UTF-8
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            ActiveRecord::Schema.define(version: Time.now.strftime("%Y%m%d%H%M%S")) do
         | 
| 4 | 
            -
              create_table "decimal_models", force: true do |t|
         | 
| 5 | 
            -
                t.decimal "deleted_at", default: 0
         | 
| 6 | 
            -
              end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              create_table "integer_models", force: true do |t|
         | 
| 9 | 
            -
                t.integer "deleted_at", default: 0
         | 
| 10 | 
            -
              end
         | 
| 11 | 
            -
            end
         |