act_with_flags 0.2.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +30 -0
  3. data/.ruby-gemset +1 -1
  4. data/.ruby-version +1 -1
  5. data/.watchr +27 -19
  6. data/Appraisals +12 -4
  7. data/Gemfile +7 -4
  8. data/Gemfile.lock +152 -110
  9. data/MIT-LICENSE +20 -0
  10. data/README.md +30 -4
  11. data/Rakefile +6 -7
  12. data/TODO +21 -0
  13. data/act_with_flags.gemspec +20 -21
  14. data/gemfiles/rails_6.0.gemfile +4 -1
  15. data/gemfiles/{rails_5.2.gemfile → rails_6.1.gemfile} +3 -1
  16. data/gemfiles/rails_7.0.gemfile +15 -0
  17. data/lib/act_with_flags/admin.rb +5 -48
  18. data/lib/act_with_flags/clear.rb +30 -0
  19. data/lib/act_with_flags/define.rb +6 -35
  20. data/lib/act_with_flags/flags.rb +67 -0
  21. data/lib/act_with_flags/print.rb +21 -27
  22. data/lib/act_with_flags/utils.rb +25 -13
  23. data/lib/act_with_flags/version.rb +8 -9
  24. data/lib/act_with_flags.rb +14 -25
  25. data/test/any_all_none_test.rb +6 -9
  26. data/test/benchmark_test.rb +73 -0
  27. data/test/clear_test.rb +5 -7
  28. data/test/coding_check_add_test.rb +29 -0
  29. data/test/coding_coverage_test.rb +19 -0
  30. data/test/coding_mask2d_test.rb +25 -0
  31. data/test/coding_null_test.rb +29 -0
  32. data/test/coding_one_test.rb +26 -0
  33. data/test/coding_reset_test.rb +18 -0
  34. data/test/inheritance_any_test.rb +9 -33
  35. data/test/inheritance_test.rb +7 -10
  36. data/test/internal/app/assets/config/manifest.js +1 -0
  37. data/test/internal/app/controllers/orders_controller.rb +1 -3
  38. data/test/internal/app/models/order.rb +1 -5
  39. data/test/internal/config/routes.rb +1 -1
  40. data/test/internal/db/schema.rb +6 -7
  41. data/test/legacy_test.rb +8 -9
  42. data/test/mask_test.rb +6 -7
  43. data/test/null_test.rb +3 -5
  44. data/test/one_test.rb +7 -9
  45. data/test/origin_test.rb +7 -26
  46. data/test/origins_test.rb +57 -0
  47. data/test/remove_from_test.rb +3 -4
  48. data/test/test_helper.rb +12 -9
  49. metadata +25 -57
  50. data/.rubocop.yml +0 -79
  51. data/.travis.yml +0 -21
  52. data/LICENSE +0 -21
  53. data/test/internal_benchmark_test.rb +0 -52
  54. data/test/internal_check_add_test.rb +0 -36
  55. data/test/internal_null_test.rb +0 -29
  56. data/test/internal_one_test.rb +0 -27
  57. data/test/reset_test.rb +0 -17
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: act_with_flags
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dittmar Krall
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-04 00:00:00.000000000 Z
11
+ date: 2022-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: simplecov
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: sqlite3
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,38 +94,49 @@ dependencies:
108
94
  - - ">="
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0'
111
- description: Handles flags in a Rails model instance
97
+ description: Handles flags/booleans in a Rails model instance
112
98
  email:
113
- - dittmar.krall@matique.de
99
+ - dittmar.krall@matiq.com
114
100
  executables: []
115
101
  extensions: []
116
102
  extra_rdoc_files: []
117
103
  files:
104
+ - ".github/workflows/rake.yml"
118
105
  - ".gitignore"
119
- - ".rubocop.yml"
120
106
  - ".ruby-gemset"
121
107
  - ".ruby-version"
122
- - ".travis.yml"
123
108
  - ".watchr"
124
109
  - Appraisals
125
110
  - Gemfile
126
111
  - Gemfile.lock
127
- - LICENSE
112
+ - MIT-LICENSE
128
113
  - README.md
129
114
  - Rakefile
115
+ - TODO
130
116
  - act_with_flags.gemspec
131
- - gemfiles/rails_5.2.gemfile
132
117
  - gemfiles/rails_6.0.gemfile
118
+ - gemfiles/rails_6.1.gemfile
119
+ - gemfiles/rails_7.0.gemfile
133
120
  - lib/act_with_flags.rb
134
121
  - lib/act_with_flags/admin.rb
122
+ - lib/act_with_flags/clear.rb
135
123
  - lib/act_with_flags/define.rb
124
+ - lib/act_with_flags/flags.rb
136
125
  - lib/act_with_flags/print.rb
137
126
  - lib/act_with_flags/utils.rb
138
127
  - lib/act_with_flags/version.rb
139
128
  - test/any_all_none_test.rb
129
+ - test/benchmark_test.rb
140
130
  - test/clear_test.rb
131
+ - test/coding_check_add_test.rb
132
+ - test/coding_coverage_test.rb
133
+ - test/coding_mask2d_test.rb
134
+ - test/coding_null_test.rb
135
+ - test/coding_one_test.rb
136
+ - test/coding_reset_test.rb
141
137
  - test/inheritance_any_test.rb
142
138
  - test/inheritance_test.rb
139
+ - test/internal/app/assets/config/manifest.js
143
140
  - test/internal/app/controllers/application_controller.rb
144
141
  - test/internal/app/controllers/orders_controller.rb
145
142
  - test/internal/app/models/application_record.rb
@@ -149,23 +146,20 @@ files:
149
146
  - test/internal/config/routes.rb
150
147
  - test/internal/config/secrets.yml
151
148
  - test/internal/db/schema.rb
152
- - test/internal_benchmark_test.rb
153
- - test/internal_check_add_test.rb
154
- - test/internal_null_test.rb
155
- - test/internal_one_test.rb
156
149
  - test/legacy_test.rb
157
150
  - test/mask_test.rb
158
151
  - test/null_test.rb
159
152
  - test/one_test.rb
160
153
  - test/origin_test.rb
154
+ - test/origins_test.rb
161
155
  - test/remove_from_test.rb
162
- - test/reset_test.rb
163
156
  - test/string_test.rb
164
157
  - test/test_helper.rb
165
- homepage: http://matique.de
158
+ homepage: http://matiq.com
166
159
  licenses:
167
160
  - MIT
168
- metadata: {}
161
+ metadata:
162
+ source_code_uri: https://github.com/matique/act_with_flags
169
163
  post_install_message:
170
164
  rdoc_options: []
171
165
  require_paths:
@@ -181,34 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
175
  - !ruby/object:Gem::Version
182
176
  version: '0'
183
177
  requirements: []
184
- rubygems_version: 3.0.6
178
+ rubygems_version: 3.3.7
185
179
  signing_key:
186
180
  specification_version: 4
187
181
  summary: act_with_flags gem
188
- test_files:
189
- - test/any_all_none_test.rb
190
- - test/clear_test.rb
191
- - test/inheritance_any_test.rb
192
- - test/inheritance_test.rb
193
- - test/internal/app/controllers/application_controller.rb
194
- - test/internal/app/controllers/orders_controller.rb
195
- - test/internal/app/models/application_record.rb
196
- - test/internal/app/models/order.rb
197
- - test/internal/app/views/layouts/application.html.erb
198
- - test/internal/config/database.yml
199
- - test/internal/config/routes.rb
200
- - test/internal/config/secrets.yml
201
- - test/internal/db/schema.rb
202
- - test/internal_benchmark_test.rb
203
- - test/internal_check_add_test.rb
204
- - test/internal_null_test.rb
205
- - test/internal_one_test.rb
206
- - test/legacy_test.rb
207
- - test/mask_test.rb
208
- - test/null_test.rb
209
- - test/one_test.rb
210
- - test/origin_test.rb
211
- - test/remove_from_test.rb
212
- - test/reset_test.rb
213
- - test/string_test.rb
214
- - test/test_helper.rb
182
+ test_files: []
data/.rubocop.yml DELETED
@@ -1,79 +0,0 @@
1
- # inherit_from: .rubocop_todo.yml
2
-
3
- # rubocop --auto-gen-config
4
- # rubocop
5
- # rubocop:disable all
6
-
7
- #inherit_from: .rubocop_todo.yml
8
-
9
- AllCops:
10
- Include:
11
- - 'app/**/*.rb'
12
- - 'bin/**/*.rb'
13
- - 'lib/**/*.rb'
14
-
15
- - 'config/**/*.rb'
16
- - 'db/**/*.rb'
17
- - 'lib/**/*.rb'
18
- - 'test/**/*.rb' # 581 offenses
19
- - '**/*.gemfile'
20
- - '**/*.gemspec'
21
- - '**/*.rake'
22
- - '**/*.ru'
23
- - '**/Gemfile'
24
- # - '**/Rakefile'
25
-
26
- #AllCops:
27
- # Exclude:
28
- # - 'db/**/*'
29
- # - 'config/**/*'
30
- # - 'script/**/*'
31
- # - 'bin/{rails,rake}'
32
- # - 'spec/**/*'
33
- # - !ruby/regexp /old_and_unused\.rb$/
34
-
35
- Bundler/OrderedGems:
36
- Exclude:
37
- - 'Gemfile'
38
-
39
- Layout/AccessModifierIndentation:
40
- Enabled: false
41
- Layout/AlignArray:
42
- Enabled: false
43
- Layout/CommentIndentation:
44
- Enabled: false
45
- Layout/EmptyLinesAroundAccessModifier:
46
- Enabled: false
47
- Layout/EmptyLinesAroundBlockBody:
48
- Enabled: false
49
- Layout/EmptyLinesAroundClassBody:
50
- Enabled: false
51
- Layout/ExtraSpacing:
52
- Enabled: false
53
- Layout/IndentFirstArrayElement:
54
- Enabled: false
55
- Layout/IndentationWidth:
56
- Enabled: false
57
- Layout/LeadingCommentSpace:
58
- Enabled: false
59
- Layout/Tab:
60
- Enabled: false
61
-
62
- Lint/UnusedBlockArgument:
63
- Enabled: false
64
-
65
- Style/BlockDelimiters:
66
- Enabled: false
67
- Style/Documentation:
68
- Enabled: false
69
- Style/FormatString:
70
- Enabled: false
71
- Style/FrozenStringLiteralComment:
72
- Enabled: false
73
- Style/WhenThen:
74
- Exclude:
75
- - '.watchr'
76
-
77
-
78
-
79
-
data/.travis.yml DELETED
@@ -1,21 +0,0 @@
1
- language: ruby
2
- sudo: false
3
-
4
- bundler_args: --without production
5
- #before_install:
6
- #- gem update bundler --no-document
7
- #- gem update bundler --no-rdoc --no-ri
8
- script: "bundle exec rake test"
9
-
10
- rvm:
11
- - 2.6.4
12
- - 2.6.1
13
-
14
- gemfile:
15
- - gemfiles/rails_6.0.gemfile
16
- - gemfiles/rails_5.2.gemfile
17
-
18
- matrix:
19
-
20
- notifications:
21
- email: false
data/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2019 Dittmar Krall (matique UG)
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,52 +0,0 @@
1
- # For development purposes; do not waste your tine reading it!
2
- # YAGNI
3
- # rubocop:disable all
4
-
5
- require 'test_helper'
6
- require 'benchmark'
7
- require 'benchmark/ips'
8
- # ENV['MORE'] = 'true'
9
-
10
- describe 'Internal timings' do
11
- let(:order) { Order.create }
12
-
13
- def setup
14
- reset_order
15
- Order.add_to_flags :blocked
16
- end
17
-
18
- it 'times ips' do
19
- return unless ENV['MORE']
20
-
21
- Benchmark.ips do |x|
22
- x.report('assign true : ') { order.blocked = true }
23
- x.report('assign false: ') { order.blocked = false }
24
- x.report('assign "false": ') { order.blocked = 'false' }
25
- x.report('x = order.blocked? ') { x = order.blocked? }
26
- x.report('x = order.blocked ') { x = order.blocked }
27
-
28
- x.compare!
29
- end
30
- end
31
-
32
- end
33
-
34
- class BenchFoo < Minitest::Benchmark
35
-
36
- def bench_order_blocked
37
- return unless ENV['MORE']
38
-
39
- n = 1_000_000
40
- n = 100_000
41
- n = 10_000
42
- Order.add_to_flags :blocked2
43
- order = Order.create
44
- assert_performance_constant do |input|
45
- n.times do
46
- order.blocked2 = true
47
- order.blocked2 = !order.blocked2
48
- end
49
- end
50
- end
51
-
52
- end
@@ -1,36 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'Internal check add flag' do
4
- let(:admin) { Order.act_with_flags }
5
-
6
- def setup
7
- reset_order
8
- Order.add_to_flags a: 1, b: 7, c: 3
9
- end
10
-
11
- it 'skip reserved position' do
12
- Order.add_to_flags :xx
13
- assert_equal 0, admin.position(:xx)
14
- Order.add_to_flags :yy
15
- assert_equal 2, admin.position(:yy)
16
- end
17
-
18
- it 'rejects redefinition' do
19
- Order.add_to_flags :z
20
- assert_raises { Order.add_to_flags :z }
21
- end
22
-
23
- it 'rejects reuse of position' do
24
- assert_raises { Order.add_to_flags qq: 1 }
25
- end
26
-
27
- it 'coverage to_s' do
28
- res = admin.to_s
29
- puts res if ENV['MORE']
30
- end
31
-
32
- it 'coverage position raise' do
33
- assert_raises { admin.position(:aaaa) }
34
- end
35
-
36
- end
@@ -1,29 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'Internal Null' do
4
- let(:admin) { Order.act_with_flags }
5
-
6
- def setup
7
- reset_order
8
- Order.add_to_flags
9
- end
10
-
11
- it 'respond to act_with_flags' do
12
- assert Order.respond_to?(:act_with_flags)
13
- refute_nil Order.act_with_flags
14
- end
15
-
16
- it 'tests to_boolean' do
17
- assert admin.to_boolean(true)
18
- refute admin.to_boolean(false)
19
- assert_raises { admin.to_boolean(nil) }
20
- assert_raises { admin.to_boolean(2) }
21
- assert_raises { admin.to_boolean('unknown') }
22
- end
23
-
24
- it 'tests a simple administration: names' do
25
- refute_nil admin.names
26
- assert_equal [], admin.names
27
- end
28
-
29
- end
@@ -1,27 +0,0 @@
1
- # rubocop: disable all
2
-
3
- require 'test_helper'
4
-
5
- describe 'Internal One Flag' do
6
- let(:flag) { :blocked }
7
- let(:admin) { Order.act_with_flags }
8
- let(:order) { Order.new }
9
-
10
- def setup
11
- reset_order
12
- Order.add_to_flags flag
13
- end
14
-
15
- it 'test Order.act_with_flags' do
16
- refute_nil admin
17
- assert_equal admin, order.class.act_with_flags
18
- end
19
-
20
- it 'checks definition of methods for flag' do
21
- msg = "method '#{flag}' not defined'
22
- assert order.respond_to?("#{flag}"), msg
23
- assert order.respond_to?("#{flag}?"), msg
24
- assert order.respond_to?("#{flag}="), msg
25
- end
26
-
27
- end
data/test/reset_test.rb DELETED
@@ -1,17 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'Testing reset' do
4
- let(:order) { Order.new }
5
-
6
- def setup
7
- reset_order
8
- Order.add_to_flags :a
9
- end
10
-
11
- it 'reset hard' do
12
- refute_equal [], Order.add_to_flags.names
13
- Order.act_with_flags&.reset
14
- assert_equal [], Order.add_to_flags.names
15
- end
16
-
17
- end