act_with_flags 0.2.4 → 3.0.1

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +9 -3
  3. data/.ruby-gemset +1 -1
  4. data/.ruby-version +1 -1
  5. data/.watchr +29 -16
  6. data/Appraisals +10 -6
  7. data/Gemfile +7 -6
  8. data/Gemfile.lock +124 -104
  9. data/MIT-LICENSE +1 -1
  10. data/README.md +30 -3
  11. data/Rakefile +5 -5
  12. data/TODO +21 -0
  13. data/act_with_flags.gemspec +20 -20
  14. data/gemfiles/rails_6.0.gemfile +2 -1
  15. data/gemfiles/rails_7.0.gemfile +15 -0
  16. data/lib/act_with_flags/admin.rb +5 -48
  17. data/lib/act_with_flags/clear.rb +30 -0
  18. data/lib/act_with_flags/define.rb +6 -35
  19. data/lib/act_with_flags/flags.rb +67 -0
  20. data/lib/act_with_flags/print.rb +21 -27
  21. data/lib/act_with_flags/utils.rb +25 -13
  22. data/lib/act_with_flags/version.rb +8 -7
  23. data/lib/act_with_flags.rb +14 -25
  24. data/test/any_all_none_test.rb +6 -9
  25. data/test/benchmark_test.rb +73 -0
  26. data/test/clear_test.rb +5 -7
  27. data/test/coding_check_add_test.rb +29 -0
  28. data/test/coding_coverage_test.rb +19 -0
  29. data/test/coding_mask2d_test.rb +25 -0
  30. data/test/coding_null_test.rb +29 -0
  31. data/test/coding_one_test.rb +26 -0
  32. data/test/coding_reset_test.rb +18 -0
  33. data/test/inheritance_any_test.rb +9 -33
  34. data/test/inheritance_test.rb +7 -10
  35. data/test/internal/app/controllers/orders_controller.rb +1 -3
  36. data/test/internal/app/models/order.rb +1 -5
  37. data/test/internal/config/routes.rb +1 -1
  38. data/test/internal/db/schema.rb +6 -7
  39. data/test/legacy_test.rb +8 -9
  40. data/test/mask_test.rb +6 -7
  41. data/test/null_test.rb +3 -5
  42. data/test/one_test.rb +7 -9
  43. data/test/origin_test.rb +7 -26
  44. data/test/origins_test.rb +57 -0
  45. data/test/remove_from_test.rb +3 -4
  46. data/test/test_helper.rb +8 -8
  47. metadata +21 -41
  48. data/.rubocop.yml +0 -9
  49. data/test/internal_benchmark_test.rb +0 -52
  50. data/test/internal_check_add_test.rb +0 -36
  51. data/test/internal_null_test.rb +0 -29
  52. data/test/internal_one_test.rb +0 -27
  53. 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.4
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: 2021-06-20 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
@@ -94,16 +94,15 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- description: Handles flags in a Rails model instance
97
+ description: Handles flags/booleans in a Rails model instance
98
98
  email:
99
- - dittmar.krall@matique.de
99
+ - dittmar.krall@matiq.com
100
100
  executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
104
  - ".github/workflows/rake.yml"
105
105
  - ".gitignore"
106
- - ".rubocop.yml"
107
106
  - ".ruby-gemset"
108
107
  - ".ruby-version"
109
108
  - ".watchr"
@@ -113,17 +112,28 @@ files:
113
112
  - MIT-LICENSE
114
113
  - README.md
115
114
  - Rakefile
115
+ - TODO
116
116
  - act_with_flags.gemspec
117
117
  - gemfiles/rails_6.0.gemfile
118
118
  - gemfiles/rails_6.1.gemfile
119
+ - gemfiles/rails_7.0.gemfile
119
120
  - lib/act_with_flags.rb
120
121
  - lib/act_with_flags/admin.rb
122
+ - lib/act_with_flags/clear.rb
121
123
  - lib/act_with_flags/define.rb
124
+ - lib/act_with_flags/flags.rb
122
125
  - lib/act_with_flags/print.rb
123
126
  - lib/act_with_flags/utils.rb
124
127
  - lib/act_with_flags/version.rb
125
128
  - test/any_all_none_test.rb
129
+ - test/benchmark_test.rb
126
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
127
137
  - test/inheritance_any_test.rb
128
138
  - test/inheritance_test.rb
129
139
  - test/internal/app/assets/config/manifest.js
@@ -136,23 +146,20 @@ files:
136
146
  - test/internal/config/routes.rb
137
147
  - test/internal/config/secrets.yml
138
148
  - test/internal/db/schema.rb
139
- - test/internal_benchmark_test.rb
140
- - test/internal_check_add_test.rb
141
- - test/internal_null_test.rb
142
- - test/internal_one_test.rb
143
149
  - test/legacy_test.rb
144
150
  - test/mask_test.rb
145
151
  - test/null_test.rb
146
152
  - test/one_test.rb
147
153
  - test/origin_test.rb
154
+ - test/origins_test.rb
148
155
  - test/remove_from_test.rb
149
- - test/reset_test.rb
150
156
  - test/string_test.rb
151
157
  - test/test_helper.rb
152
- homepage: http://matique.de
158
+ homepage: http://matiq.com
153
159
  licenses:
154
160
  - MIT
155
- metadata: {}
161
+ metadata:
162
+ source_code_uri: https://github.com/matique/act_with_flags
156
163
  post_install_message:
157
164
  rdoc_options: []
158
165
  require_paths:
@@ -168,35 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
175
  - !ruby/object:Gem::Version
169
176
  version: '0'
170
177
  requirements: []
171
- rubygems_version: 3.2.6
178
+ rubygems_version: 3.3.7
172
179
  signing_key:
173
180
  specification_version: 4
174
181
  summary: act_with_flags gem
175
- test_files:
176
- - test/any_all_none_test.rb
177
- - test/clear_test.rb
178
- - test/inheritance_any_test.rb
179
- - test/inheritance_test.rb
180
- - test/internal/app/assets/config/manifest.js
181
- - test/internal/app/controllers/application_controller.rb
182
- - test/internal/app/controllers/orders_controller.rb
183
- - test/internal/app/models/application_record.rb
184
- - test/internal/app/models/order.rb
185
- - test/internal/app/views/layouts/application.html.erb
186
- - test/internal/config/database.yml
187
- - test/internal/config/routes.rb
188
- - test/internal/config/secrets.yml
189
- - test/internal/db/schema.rb
190
- - test/internal_benchmark_test.rb
191
- - test/internal_check_add_test.rb
192
- - test/internal_null_test.rb
193
- - test/internal_one_test.rb
194
- - test/legacy_test.rb
195
- - test/mask_test.rb
196
- - test/null_test.rb
197
- - test/one_test.rb
198
- - test/origin_test.rb
199
- - test/remove_from_test.rb
200
- - test/reset_test.rb
201
- - test/string_test.rb
202
- - test/test_helper.rb
182
+ test_files: []
data/.rubocop.yml DELETED
@@ -1,9 +0,0 @@
1
- inherit_from:
2
- - ~/configs/.rubocop.yml
3
-
4
- AllCops:
5
- NewCops: enable
6
- Include:
7
- - 'lib/**/*.rb'
8
- Exclude:
9
- - 'test/**/*'
@@ -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