mongoid-suicide 0.3.0 → 0.5.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
  SHA256:
3
- metadata.gz: b6e80af3d89bb1d84f63ae1e8a8b73f9b8d690764712d988222a2fdaddcc3a26
4
- data.tar.gz: 2fa7206f7905a34e9f8aa4a6a815930f9237aeef4afd9fd39b1671b974a5b0c3
3
+ metadata.gz: 43a5468e10b1358e3392f8ce47b892edd096050807e4d7cb6c1854590c15ed73
4
+ data.tar.gz: 6332bfa8904bf06d485a93e58fb1460ba611a0e546a5fb6da03e7b4bb6292178
5
5
  SHA512:
6
- metadata.gz: 4ccb256a24c8a40c52950ef86c8051ae8b9c4c8c5345ee178fb0d636bbb4fa58d27e5889f1b413a8202b6d5ec023e4b29d0cef7d1069fa00dfc196888f786fa5
7
- data.tar.gz: 39be74915a2806f9a08b78dbc2330596973738524f7c75679ea1b408671fafabeddf3cc05edfe21f4f22e1ab78ba7c178d545cd306fa1b16771ec8f954a3375c
6
+ metadata.gz: b7ea49b48455b92b9c6e280092abee0687749e184a4973fffabd1bf507cfada60dd1073561b44ea7c2e91108b5a322596f4d1c566038a2c5a84ce72599d0db5d
7
+ data.tar.gz: eeb8a7d4fad4bac82544eadb6f4e573c1b95672c44fe2d20ca63f6b9d8aacd0971b02be86ac50fdceaf4b580214b83ba0c8accecb98cc2a7da0fe3f6ae6410f7
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "bundler" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "daily"
@@ -0,0 +1,22 @@
1
+ name: Ruby
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ name: build (${{ matrix.ruby }} / ${{ matrix.os }})
8
+ strategy:
9
+ matrix:
10
+ ruby: [3.1, 3.2, 3.3, head, jruby, jruby-head]
11
+ os: [ubuntu-latest, macos-latest]
12
+ runs-on: ${{ matrix.os }}
13
+ steps:
14
+ - uses: actions/checkout@master
15
+ - name: Set up Ruby
16
+ uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: ${{ matrix.ruby }}
19
+ - name: Install dependencies
20
+ run: bundle install
21
+ - name: Run test
22
+ run: rspec
data/.rubocop.yml ADDED
@@ -0,0 +1,14 @@
1
+ require: rubocop-rspec
2
+
3
+ AllCops:
4
+ NewCops: enable
5
+ TargetRubyVersion: 3.1
6
+ Metrics/MethodLength:
7
+ Enabled: false
8
+ Metrics/ModuleLength:
9
+ Enabled: false
10
+ Metrics/AbcSize:
11
+ Enabled: false
12
+ Naming/FileName:
13
+ Exclude:
14
+ - 'lib/mongoid-suicide.rb'
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.3.1
data/Gemfile CHANGED
@@ -1,11 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in mongoid-suicide.gemspec
4
6
  gemspec
5
7
 
6
- gem 'rake'
7
8
  gem 'mongoid'
8
9
 
10
+ group :development do
11
+ gem 'rubocop', require: false
12
+ gem 'rubocop-rspec', require: false
13
+ end
14
+
9
15
  group :test do
10
- gem 'rspec', '~> 3.4'
16
+ gem 'rspec'
11
17
  end
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 Anton Maminov
1
+ Copyright (c) 2015-2024 Anton Maminov
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  ![Mongoid::Suicide Logo](https://raw.github.com/mamantoha/mongoid-suicide/master/mongoid-suicide.png)
2
2
 
3
- [![Build Status][travis_badge]][travis]
4
- [![Gem Version][rubygems_badge]][rubygems]
5
- [![Code Climate][codeclimate_badge]][codeclimate]
3
+ [![Ruby](https://github.com/mamantoha/mongoid-suicide/actions/workflows/ruby.yml/badge.svg)](https://github.com/mamantoha/mongoid-suicide/actions/workflows/ruby.yml)
4
+ [![Gem Version](https://badge.fury.io/rb/mongoid-suicide.svg)](https://badge.fury.io/rb/mongoid-suicide)
6
5
 
7
6
  Provides methods to remove fields from Mongoid models
8
7
 
@@ -61,13 +60,4 @@ p.username
61
60
 
62
61
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
63
62
 
64
- Copyright (c) 2015-2018 by Anton Maminov
65
-
66
- [travis_badge]: http://img.shields.io/travis/mamantoha/mongoid-suicide.svg?style=flat
67
- [travis]: https://travis-ci.org/mamantoha/mongoid-suicide
68
-
69
- [rubygems_badge]: http://img.shields.io/gem/v/mongoid-suicide.svg?style=flat
70
- [rubygems]: http://rubygems.org/gems/mongoid-suicide
71
-
72
- [codeclimate_badge]: http://img.shields.io/codeclimate/github/mamantoha/mongoid-suicide.svg?style=flat
73
- [codeclimate]: https://codeclimate.com/github/mamantoha/mongoid-suicide
63
+ Copyright (c) 2015-2024 by Anton Maminov
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Mongoid
2
4
  module Suicide
3
- VERSION = "0.3.0"
5
+ VERSION = '0.5.0'
4
6
  end
5
7
  end
@@ -1,12 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mongoid'
2
- require "mongoid/suicide/version"
4
+ require 'mongoid/suicide/version'
3
5
 
6
+ # :nodoc:
4
7
  module Mongoid
5
-
6
8
  # This module allows remove fields.
7
9
  module Suicide
8
10
  extend ActiveSupport::Concern
9
11
 
12
+ # :nodoc:
10
13
  module ClassMethods
11
14
  # Removes the field from the Document.
12
15
  # A getter and setter will be removed.
@@ -19,22 +22,23 @@ module Mongoid
19
22
  # @return [ Field ] The removed field
20
23
  def remove_field(name)
21
24
  name = name.to_s
22
- if fields[name]
23
- aliased = fields[name].options[:as]
24
25
 
25
- remove_accessors(name, name)
26
- remove_accessors(name, aliased) if aliased
27
- remove_dirty_methods(name, name)
28
- remove_dirty_methods(name, aliased) if aliased
26
+ return unless fields[name]
29
27
 
30
- remove_defaults(name)
28
+ aliased = fields[name].options[:as]
31
29
 
32
- remove_field_in_descendants(name)
33
- remove_validations_for(name)
30
+ remove_accessors(name, name)
31
+ remove_accessors(name, aliased) if aliased
32
+ remove_dirty_methods(name)
33
+ remove_dirty_methods(aliased) if aliased
34
34
 
35
- aliased_fields.delete(aliased.to_s) if aliased
36
- fields.delete(name)
37
- end
35
+ remove_defaults(name)
36
+
37
+ remove_field_in_descendants(name)
38
+ remove_validations_for(name)
39
+
40
+ aliased_fields.delete(aliased.to_s) if aliased
41
+ fields.delete(name)
38
42
  end
39
43
 
40
44
  # Remove the field accessors.
@@ -60,11 +64,11 @@ module Mongoid
60
64
  remove_field_setter(meth)
61
65
  remove_field_check(meth)
62
66
 
63
- if field.options[:localize]
64
- remove_translations_getter(meth)
65
- remove_translations_setter(meth)
66
- localized_fields.delete(name)
67
- end
67
+ return unless field.options[:localize]
68
+
69
+ remove_translations_getter(meth)
70
+ remove_translations_setter(meth)
71
+ localized_fields.delete(name)
68
72
  end
69
73
 
70
74
  # Removes the dirty change methods.
@@ -81,7 +85,7 @@ module Mongoid
81
85
  #
82
86
  # @param [ Symbol ] name The attribute name.
83
87
  # @param [ String ] meth The name of the accessor.
84
- def remove_dirty_methods(name, meth)
88
+ def remove_dirty_methods(meth)
85
89
  remove_dirty_change_accessor(meth)
86
90
  remove_dirty_change_check(meth)
87
91
  remove_dirty_change_flag(meth)
@@ -108,7 +112,7 @@ module Mongoid
108
112
  name = name.to_sym
109
113
  a_name = [name]
110
114
 
111
- _validators.reject!{ |key, _| key == name }
115
+ _validators.reject! { |key, _| key == name }
112
116
  remove_validate_callbacks a_name
113
117
  end
114
118
 
@@ -120,12 +124,14 @@ module Mongoid
120
124
  # @param [ Array<Symbol> ] a_name The attribute name.
121
125
  def remove_validate_callbacks(a_name)
122
126
  chain = _validate_callbacks.dup.reject do |callback|
123
- f = callback.raw_filter
127
+ f = callback.filter
124
128
  f.respond_to?(:attributes) && f.attributes == a_name
125
129
  end
130
+
126
131
  reset_callbacks(:validate)
132
+
127
133
  chain.each do |callback|
128
- set_callback 'validate', callback.raw_filter
134
+ set_callback 'validate', callback.filter
129
135
  end
130
136
  end
131
137
 
@@ -1 +1,3 @@
1
- require "mongoid/suicide"
1
+ # frozen_string_literal: true
2
+
3
+ require 'mongoid/suicide'
@@ -1,23 +1,24 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'mongoid/suicide/version'
4
6
 
5
7
  Gem::Specification.new do |spec|
6
- spec.name = "mongoid-suicide"
8
+ spec.name = 'mongoid-suicide'
7
9
  spec.version = Mongoid::Suicide::VERSION
8
- spec.authors = ["Anton Maminov"]
9
- spec.email = ["anton.linux@gmail.com"]
10
- spec.summary = %q{Hacks to support Mongoid remove field}
11
- spec.description = %q{Hacks to support Mongoid remove field. Including associations and validations}
12
- spec.homepage = "https://github.com/mamantoha/mongoid-suicide"
13
- spec.license = "MIT"
10
+ spec.authors = ['Anton Maminov']
11
+ spec.email = ['anton.linux@gmail.com']
12
+ spec.summary = 'Hacks to support Mongoid remove field'
13
+ spec.description = 'Hacks to support Mongoid remove field. Including associations and validations'
14
+ spec.homepage = 'https://github.com/mamantoha/mongoid-suicide'
15
+ spec.license = 'MIT'
14
16
 
15
17
  spec.files = `git ls-files -z`.split("\x0")
16
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
19
20
 
20
- spec.add_development_dependency "bundler", "~> 1.7"
21
- spec.add_development_dependency "rake", "~> 10.0"
22
- spec.add_development_dependency "mongoid", ['> 4.0', '< 7.0']
21
+ spec.required_ruby_version = '>= 3.1.0'
22
+ spec.add_dependency 'mongoid', '> 4.0', '< 11.0'
23
+ spec.metadata['rubygems_mfa_required'] = 'true'
23
24
  end
data/mongoid-suicide.png CHANGED
Binary file
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Person
2
4
  include Mongoid::Document
3
5
  include Mongoid::Suicide
4
6
 
5
7
  field :username, type: String
6
- field :age, type: Integer, default: "100"
8
+ field :age, type: Integer, default: '100'
7
9
  end
@@ -0,0 +1,277 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Mongoid::Suicide do
6
+ describe '#remove_field' do
7
+ context 'when remove accessors' do
8
+ before do
9
+ Person.field(:remove_testing, type: String)
10
+ Person.remove_field(:remove_testing)
11
+ end
12
+
13
+ let(:person) do
14
+ Person.new
15
+ end
16
+
17
+ it 'removes field getter' do
18
+ expect do
19
+ person.remove_testing
20
+ end.to raise_error(NoMethodError)
21
+ end
22
+
23
+ it 'removes field setter' do
24
+ expect do
25
+ person.remove_testing = 'test'
26
+ end.to raise_error(NoMethodError)
27
+ end
28
+
29
+ it 'removes field _before_type_cast getter' do
30
+ expect do
31
+ person.remove_testing_before_type_cast
32
+ end.to raise_error(NoMethodError)
33
+ end
34
+
35
+ it 'removes field check method' do
36
+ expect do
37
+ person.remove_testing?
38
+ end.to raise_error(NoMethodError)
39
+ end
40
+
41
+ it 'removes field from fields' do
42
+ expect(Person.fields).not_to include('remove_testing')
43
+ end
44
+ end
45
+
46
+ context 'when remove accessors for aliasing field' do
47
+ before do
48
+ Person.field(:remove_testing, type: String, as: :rt)
49
+ Person.remove_field(:remove_testing)
50
+ end
51
+
52
+ let(:person) do
53
+ Person.new
54
+ end
55
+
56
+ it 'removes field getter' do
57
+ expect do
58
+ person.rt
59
+ end.to raise_error(NoMethodError)
60
+ end
61
+
62
+ it 'removes field setter' do
63
+ expect do
64
+ person.rt = 'test'
65
+ end.to raise_error(NoMethodError)
66
+ end
67
+
68
+ it 'removes field _before_type_cast getter' do
69
+ expect do
70
+ person.rt_before_type_cast
71
+ end.to raise_error(NoMethodError)
72
+ end
73
+
74
+ it 'removes field check method' do
75
+ expect do
76
+ person.rt?
77
+ end.to raise_error(NoMethodError)
78
+ end
79
+
80
+ it 'removes field from aliased_fields' do
81
+ expect(Person.aliased_fields).not_to include('rt')
82
+ end
83
+ end
84
+
85
+ context 'when remove translations' do
86
+ before do
87
+ Person.field(:remove_testing, type: String, localize: true)
88
+ Person.remove_field(:remove_testing)
89
+ end
90
+
91
+ let(:person) do
92
+ Person.new
93
+ end
94
+
95
+ it 'removes field translation getter' do
96
+ expect do
97
+ person.remove_testing_translations
98
+ end.to raise_error(NoMethodError)
99
+ end
100
+
101
+ it 'removes field translation setter' do
102
+ expect do
103
+ person.remove_testing_translations = { de: 'test' }
104
+ end.to raise_error(NoMethodError)
105
+ end
106
+
107
+ it 'removes field translation getter alias' do
108
+ expect do
109
+ person.remove_testing_t
110
+ end.to raise_error(NoMethodError)
111
+ end
112
+
113
+ it 'removes field translation setter alias' do
114
+ expect do
115
+ person.remove_testing_t = { de: 'test' }
116
+ end.to raise_error(NoMethodError)
117
+ end
118
+
119
+ it 'localized_fields should not have removed field' do
120
+ expect(person.localized_fields).not_to include('remove_testing')
121
+ end
122
+ end
123
+
124
+ context 'when remove translations for aliasing field' do
125
+ before do
126
+ Person.field(:remove_testing, type: String, localize: true, as: :rt)
127
+ Person.remove_field(:remove_testing)
128
+ end
129
+
130
+ let(:person) do
131
+ Person.new
132
+ end
133
+
134
+ it 'removes field translation getter' do
135
+ expect do
136
+ person.rt_translations
137
+ end.to raise_error(NoMethodError)
138
+ end
139
+
140
+ it 'removes field translation setter' do
141
+ expect do
142
+ person.rt_translations = { de: 'test' }
143
+ end.to raise_error(NoMethodError)
144
+ end
145
+
146
+ it 'removes field translation getter alias' do
147
+ expect do
148
+ person.rt_t
149
+ end.to raise_error(NoMethodError)
150
+ end
151
+
152
+ it 'removes field translation setter alias' do
153
+ expect do
154
+ person.rt_t = { de: 'test' }
155
+ end.to raise_error(NoMethodError)
156
+ end
157
+ end
158
+
159
+ context 'when remove dirty change methods' do
160
+ before do
161
+ Person.field(:remove_testing, type: String)
162
+ Person.remove_field(:remove_testing)
163
+ end
164
+
165
+ let(:person) do
166
+ Person.new
167
+ end
168
+
169
+ it 'removes the dirty change accessor' do
170
+ expect do
171
+ person.remove_testing_change
172
+ end.to raise_error(NoMethodError)
173
+ end
174
+
175
+ it 'removes the dirty change check' do
176
+ expect do
177
+ person.remove_testing_changed?
178
+ end.to raise_error(NoMethodError)
179
+ end
180
+
181
+ it 'removes the dirty change flag' do
182
+ expect do
183
+ person.remove_testing_will_change!
184
+ end.to raise_error(NoMethodError)
185
+ end
186
+
187
+ it 'removes the dirty default change check' do
188
+ expect do
189
+ person.remove_testing_changed_from_default?
190
+ end.to raise_error(NoMethodError)
191
+ end
192
+
193
+ it 'removes the dirty change previous value accessor' do
194
+ expect do
195
+ person.remove_testing_was
196
+ end.to raise_error(NoMethodError)
197
+ end
198
+
199
+ it 'removes the dirty change reset' do
200
+ expect do
201
+ person.reset_remove_testing!
202
+ end.to raise_error(NoMethodError)
203
+ end
204
+
205
+ it 'removes the dirty change reset to default' do
206
+ expect do
207
+ person.reset_remove_testing_to_default!
208
+ end.to raise_error(NoMethodError)
209
+ end
210
+ end
211
+
212
+ context 'when remove dirty change methods for aliasing field' do
213
+ before do
214
+ Person.field(:remove_testing, type: String, as: :rt)
215
+ Person.remove_field(:remove_testing)
216
+ end
217
+
218
+ let(:person) do
219
+ Person.new
220
+ end
221
+
222
+ it 'removes the dirty change accessor' do
223
+ expect do
224
+ person.rt_change
225
+ end.to raise_error(NoMethodError)
226
+ end
227
+
228
+ it 'removes the dirty change check' do
229
+ expect do
230
+ person.rt_changed?
231
+ end.to raise_error(NoMethodError)
232
+ end
233
+
234
+ it 'removes the dirty change flag' do
235
+ expect do
236
+ person.rt_will_change!
237
+ end.to raise_error(NoMethodError)
238
+ end
239
+
240
+ it 'removes the dirty default change check' do
241
+ expect do
242
+ person.rt_changed_from_default?
243
+ end.to raise_error(NoMethodError)
244
+ end
245
+
246
+ it 'removes the dirty change previous value accessor' do
247
+ expect do
248
+ person.rt_was
249
+ end.to raise_error(NoMethodError)
250
+ end
251
+
252
+ it 'removes the dirty change reset' do
253
+ expect do
254
+ person.reset_rt!
255
+ end.to raise_error(NoMethodError)
256
+ end
257
+
258
+ it 'removes the dirty change reset to default' do
259
+ expect do
260
+ person.reset_rt_to_default!
261
+ end.to raise_error(NoMethodError)
262
+ end
263
+ end
264
+
265
+ context 'when remove validators' do
266
+ before do
267
+ Person.field(:remove_testing, type: String)
268
+ Person.validates(:remove_testing, uniqueness: true)
269
+ Person.remove_field(:remove_testing)
270
+ end
271
+
272
+ it 'validators should not have removed field' do
273
+ expect(Person._validators).not_to include(:remove_testing)
274
+ end
275
+ end
276
+ end
277
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
4
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
5
 
4
- MODELS = File.join(File.dirname(__FILE__), "app/models")
6
+ MODELS = File.join(File.dirname(__FILE__), 'app/models')
5
7
  $LOAD_PATH.unshift(MODELS)
6
8
 
7
9
  require 'mongoid'
@@ -12,7 +14,7 @@ require 'rspec'
12
14
  # Mongoid.logger.level = Logger::DEBUG
13
15
 
14
16
  # Autoload every model for the test suite that sits in spec/app/models.
15
- Dir[ File.join(MODELS, "*.rb") ].sort.each do |file|
16
- name = File.basename(file, ".rb")
17
+ Dir[File.join(MODELS, '*.rb')].each do |file|
18
+ name = File.basename(file, '.rb')
17
19
  autoload name.camelize.to_sym, name
18
20
  end
metadata CHANGED
@@ -1,43 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-suicide
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Maminov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-06 00:00:00.000000000 Z
11
+ date: 2024-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.7'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.7'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
13
  - !ruby/object:Gem::Dependency
42
14
  name: mongoid
43
15
  requirement: !ruby/object:Gem::Requirement
@@ -47,8 +19,8 @@ dependencies:
47
19
  version: '4.0'
48
20
  - - "<"
49
21
  - !ruby/object:Gem::Version
50
- version: '7.0'
51
- type: :development
22
+ version: '11.0'
23
+ type: :runtime
52
24
  prerelease: false
53
25
  version_requirements: !ruby/object:Gem::Requirement
54
26
  requirements:
@@ -57,7 +29,7 @@ dependencies:
57
29
  version: '4.0'
58
30
  - - "<"
59
31
  - !ruby/object:Gem::Version
60
- version: '7.0'
32
+ version: '11.0'
61
33
  description: Hacks to support Mongoid remove field. Including associations and validations
62
34
  email:
63
35
  - anton.linux@gmail.com
@@ -65,26 +37,29 @@ executables: []
65
37
  extensions: []
66
38
  extra_rdoc_files: []
67
39
  files:
40
+ - ".github/dependabot.yml"
41
+ - ".github/workflows/ruby.yml"
68
42
  - ".gitignore"
69
43
  - ".rspec"
70
- - ".travis.yml"
44
+ - ".rubocop.yml"
45
+ - ".ruby-version"
71
46
  - Gemfile
72
47
  - LICENSE.txt
73
48
  - README.md
74
- - Rakefile
75
49
  - lib/mongoid-suicide.rb
76
50
  - lib/mongoid/suicide.rb
77
51
  - lib/mongoid/suicide/version.rb
78
52
  - mongoid-suicide.gemspec
79
53
  - mongoid-suicide.png
80
54
  - spec/app/models/person.rb
81
- - spec/mongoid_suicide_spec.rb
55
+ - spec/mongoid/suicide_spec.rb
82
56
  - spec/spec_helper.rb
83
57
  homepage: https://github.com/mamantoha/mongoid-suicide
84
58
  licenses:
85
59
  - MIT
86
- metadata: {}
87
- post_install_message:
60
+ metadata:
61
+ rubygems_mfa_required: 'true'
62
+ post_install_message:
88
63
  rdoc_options: []
89
64
  require_paths:
90
65
  - lib
@@ -92,19 +67,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
67
  requirements:
93
68
  - - ">="
94
69
  - !ruby/object:Gem::Version
95
- version: '0'
70
+ version: 3.1.0
96
71
  required_rubygems_version: !ruby/object:Gem::Requirement
97
72
  requirements:
98
73
  - - ">="
99
74
  - !ruby/object:Gem::Version
100
75
  version: '0'
101
76
  requirements: []
102
- rubyforge_project:
103
- rubygems_version: 2.7.3
104
- signing_key:
77
+ rubygems_version: 3.5.9
78
+ signing_key:
105
79
  specification_version: 4
106
80
  summary: Hacks to support Mongoid remove field
107
- test_files:
108
- - spec/app/models/person.rb
109
- - spec/mongoid_suicide_spec.rb
110
- - spec/spec_helper.rb
81
+ test_files: []
data/.travis.yml DELETED
@@ -1,13 +0,0 @@
1
- language: ruby
2
-
3
- bundler_args: --without development
4
-
5
- rvm:
6
- - 2.5.0
7
- - 2.4.3
8
- - 2.3.3
9
-
10
- gemfile:
11
- - Gemfile
12
-
13
- sudo: false
data/Rakefile DELETED
@@ -1,37 +0,0 @@
1
- require "bundler/gem_tasks"
2
-
3
- require "bundler"
4
- Bundler.setup
5
-
6
- require "rake"
7
- require "rspec/core/rake_task"
8
-
9
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
10
- require "mongoid/suicide/version"
11
-
12
- task :gem => :build
13
- task :build do
14
- system "gem build mongoid-suicide.gemspec"
15
- end
16
-
17
- task :install => :build do
18
- system "gem install mongoid-suicide-#{Mongoid::VERSION}.gem"
19
- end
20
-
21
- task :release => :build do
22
- system "git tag -a v#{Mongoid::Suicide::VERSION} -m 'Tagging #{Mongoid::Suicide::VERSION}'"
23
- system "git push --tags"
24
- system "gem push mongoid-#{Mongoid::Suicide::VERSION}.gem"
25
- system "rm mongoid-#{Mongoid::Suicide::VERSION}.gem"
26
- end
27
-
28
- RSpec::Core::RakeTask.new("spec") do |spec|
29
- spec.pattern = "spec/**/*_spec.rb"
30
- end
31
-
32
- RSpec::Core::RakeTask.new('spec:progress') do |spec|
33
- spec.rspec_opts = %w(--format progress)
34
- spec.pattern = "spec/**/*_spec.rb"
35
- end
36
-
37
- task :default => :spec
@@ -1,308 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Suicide do
4
- describe "#remove_field" do
5
- context "remove accessors" do
6
-
7
- before do
8
- Person.field(:remove_testing, type: String)
9
- end
10
-
11
- let(:person) do
12
- Person.new
13
- end
14
-
15
- before(:each) do
16
- Person.remove_field(:remove_testing)
17
- end
18
-
19
- it "removes field getter" do
20
- expect {
21
- person.remove_testing
22
- }.to raise_error(NoMethodError)
23
- end
24
-
25
- it "removes field setter" do
26
- expect {
27
- person.remove_testing = 'test'
28
- }.to raise_error(NoMethodError)
29
- end
30
-
31
- it "removes field _before_type_cast getter" do
32
- expect {
33
- person.remove_testing_before_type_cast
34
- }.to raise_error(NoMethodError)
35
- end
36
-
37
- it "removes field check method" do
38
- expect {
39
- person.remove_testing?
40
- }.to raise_error(NoMethodError)
41
- end
42
-
43
- it "removes field from fields" do
44
- expect(Person.fields).to_not include("remove_testing")
45
- end
46
- end
47
-
48
- context "remove accessors for aliasing field" do
49
-
50
- before do
51
- Person.field(:remove_testing, type: String, as: :rt)
52
- end
53
-
54
- let(:person) do
55
- Person.new
56
- end
57
-
58
- before(:each) do
59
- Person.remove_field(:remove_testing)
60
- end
61
-
62
- it "removes field getter" do
63
- expect {
64
- person.rt
65
- }.to raise_error(NoMethodError)
66
- end
67
-
68
- it "removes field setter" do
69
- expect {
70
- person.rt = 'test'
71
- }.to raise_error(NoMethodError)
72
- end
73
-
74
- it "removes field _before_type_cast getter" do
75
- expect {
76
- person.rt_before_type_cast
77
- }.to raise_error(NoMethodError)
78
- end
79
-
80
- it "removes field check method" do
81
- expect {
82
- person.rt?
83
- }.to raise_error(NoMethodError)
84
- end
85
-
86
- it "removes field from aliased_fields" do
87
- expect(Person.aliased_fields).to_not include("rt")
88
- end
89
-
90
- end
91
-
92
- context "remove translations" do
93
-
94
- before do
95
- Person.field(:remove_testing, type: String, localize: true)
96
- end
97
-
98
- let(:person) do
99
- Person.new
100
- end
101
-
102
- before(:each) do
103
- Person.remove_field(:remove_testing)
104
- end
105
-
106
- it "removes field translation getter" do
107
- expect {
108
- person.remove_testing_translations
109
- }.to raise_error(NoMethodError)
110
- end
111
-
112
- it "removes field translation setter" do
113
- expect {
114
- person.remove_testing_translations = { de: 'test' }
115
- }.to raise_error(NoMethodError)
116
- end
117
-
118
- it "removes field translation getter alias" do
119
- expect {
120
- person.remove_testing_t
121
- }.to raise_error(NoMethodError)
122
- end
123
-
124
- it "removes field translation setter alias" do
125
- expect {
126
- person.remove_testing_t = { de: 'test' }
127
- }.to raise_error(NoMethodError)
128
- end
129
-
130
- it "localized_fields should not have removed field" do
131
- expect(person.localized_fields).to_not include('remove_testing')
132
- end
133
-
134
- end
135
-
136
- context "remove translations for aliasing field" do
137
-
138
- before do
139
- Person.field(:remove_testing, type: String, localize: true, as: :rt)
140
- end
141
-
142
- let(:person) do
143
- Person.new
144
- end
145
-
146
- before(:each) do
147
- Person.remove_field(:remove_testing)
148
- end
149
-
150
- it "removes field translation getter" do
151
- expect {
152
- person.rt_translations
153
- }.to raise_error(NoMethodError)
154
- end
155
-
156
- it "removes field translation setter" do
157
- expect {
158
- person.rt_translations = { de: 'test' }
159
- }.to raise_error(NoMethodError)
160
- end
161
-
162
- it "removes field translation getter alias" do
163
- expect {
164
- person.rt_t
165
- }.to raise_error(NoMethodError)
166
- end
167
-
168
- it "removes field translation setter alias" do
169
- expect {
170
- person.rt_t = { de: 'test' }
171
- }.to raise_error(NoMethodError)
172
- end
173
-
174
- end
175
-
176
- context "remove dirty change methods" do
177
-
178
- before do
179
- Person.field(:remove_testing, type: String)
180
- end
181
-
182
- let(:person) do
183
- Person.new
184
- end
185
-
186
- before(:each) do
187
- Person.remove_field(:remove_testing)
188
- end
189
-
190
- it "removes the dirty change accessor" do
191
- expect {
192
- person.remove_testing_change
193
- }.to raise_error(NoMethodError)
194
- end
195
-
196
- it "removes the dirty change check" do
197
- expect {
198
- person.remove_testing_changed?
199
- }.to raise_error(NoMethodError)
200
- end
201
-
202
- it "removes the dirty change flag" do
203
- expect {
204
- person.remove_testing_will_change!
205
- }.to raise_error(NoMethodError)
206
- end
207
-
208
- it "removes the dirty default change check" do
209
- expect {
210
- person.remove_testing_changed_from_default?
211
- }.to raise_error(NoMethodError)
212
- end
213
-
214
- it "removes the dirty change previous value accessor" do
215
- expect {
216
- person.remove_testing_was
217
- }.to raise_error(NoMethodError)
218
- end
219
-
220
- it "removes the dirty change reset" do
221
- expect {
222
- person.reset_remove_testing!
223
- }.to raise_error(NoMethodError)
224
- end
225
-
226
- it "removes the dirty change reset to default" do
227
- expect {
228
- person.reset_remove_testing_to_default!
229
- }.to raise_error(NoMethodError)
230
- end
231
-
232
- end
233
-
234
- context "remove dirty change methods for aliasing field" do
235
-
236
- before do
237
- Person.field(:remove_testing, type: String, as: :rt)
238
- end
239
-
240
- let(:person) do
241
- Person.new
242
- end
243
-
244
- before(:each) do
245
- Person.remove_field(:remove_testing)
246
- end
247
-
248
- it "removes the dirty change accessor" do
249
- expect {
250
- person.rt_change
251
- }.to raise_error(NoMethodError)
252
- end
253
-
254
- it "removes the dirty change check" do
255
- expect {
256
- person.rt_changed?
257
- }.to raise_error(NoMethodError)
258
- end
259
-
260
- it "removes the dirty change flag" do
261
- expect {
262
- person.rt_will_change!
263
- }.to raise_error(NoMethodError)
264
- end
265
-
266
- it "removes the dirty default change check" do
267
- expect {
268
- person.rt_changed_from_default?
269
- }.to raise_error(NoMethodError)
270
- end
271
-
272
- it "removes the dirty change previous value accessor" do
273
- expect {
274
- person.rt_was
275
- }.to raise_error(NoMethodError)
276
- end
277
-
278
- it "removes the dirty change reset" do
279
- expect {
280
- person.reset_rt!
281
- }.to raise_error(NoMethodError)
282
- end
283
-
284
- it "removes the dirty change reset to default" do
285
- expect {
286
- person.reset_rt_to_default!
287
- }.to raise_error(NoMethodError)
288
- end
289
-
290
- end
291
-
292
- context "remove validators" do
293
- before do
294
- Person.field(:remove_testing, type: String)
295
- Person.validates(:remove_testing, uniqueness: true)
296
- end
297
-
298
- before(:each) do
299
- Person.remove_field(:remove_testing)
300
- end
301
-
302
- it "validators should not have removed field" do
303
- expect(Person._validators).to_not include(:remove_testing)
304
- end
305
- end
306
- end
307
-
308
- end