act_with_flags 0.2.4 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
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