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.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +9 -3
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/.watchr +29 -16
- data/Appraisals +10 -6
- data/Gemfile +7 -6
- data/Gemfile.lock +124 -104
- data/MIT-LICENSE +1 -1
- data/README.md +30 -3
- data/Rakefile +5 -5
- data/TODO +21 -0
- data/act_with_flags.gemspec +20 -20
- data/gemfiles/rails_6.0.gemfile +2 -1
- data/gemfiles/rails_7.0.gemfile +15 -0
- data/lib/act_with_flags/admin.rb +5 -48
- data/lib/act_with_flags/clear.rb +30 -0
- data/lib/act_with_flags/define.rb +6 -35
- data/lib/act_with_flags/flags.rb +67 -0
- data/lib/act_with_flags/print.rb +21 -27
- data/lib/act_with_flags/utils.rb +25 -13
- data/lib/act_with_flags/version.rb +8 -7
- data/lib/act_with_flags.rb +14 -25
- data/test/any_all_none_test.rb +6 -9
- data/test/benchmark_test.rb +73 -0
- data/test/clear_test.rb +5 -7
- data/test/coding_check_add_test.rb +29 -0
- data/test/coding_coverage_test.rb +19 -0
- data/test/coding_mask2d_test.rb +25 -0
- data/test/coding_null_test.rb +29 -0
- data/test/coding_one_test.rb +26 -0
- data/test/coding_reset_test.rb +18 -0
- data/test/inheritance_any_test.rb +9 -33
- data/test/inheritance_test.rb +7 -10
- data/test/internal/app/controllers/orders_controller.rb +1 -3
- data/test/internal/app/models/order.rb +1 -5
- data/test/internal/config/routes.rb +1 -1
- data/test/internal/db/schema.rb +6 -7
- data/test/legacy_test.rb +8 -9
- data/test/mask_test.rb +6 -7
- data/test/null_test.rb +3 -5
- data/test/one_test.rb +7 -9
- data/test/origin_test.rb +7 -26
- data/test/origins_test.rb +57 -0
- data/test/remove_from_test.rb +3 -4
- data/test/test_helper.rb +8 -8
- metadata +21 -41
- data/.rubocop.yml +0 -9
- data/test/internal_benchmark_test.rb +0 -52
- data/test/internal_check_add_test.rb +0 -36
- data/test/internal_null_test.rb +0 -29
- data/test/internal_one_test.rb +0 -27
- 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.
|
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:
|
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@
|
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://
|
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.
|
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,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
|
data/test/internal_null_test.rb
DELETED
@@ -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
|
data/test/internal_one_test.rb
DELETED
@@ -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
|