act_with_flags 0.0.4 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -0
  3. data/.rubocop.yml +3 -74
  4. data/.ruby-gemset +1 -1
  5. data/.ruby-version +1 -1
  6. data/.travis.yml +5 -1
  7. data/.watchr +6 -14
  8. data/Appraisals +7 -0
  9. data/Gemfile +1 -4
  10. data/Gemfile.lock +121 -76
  11. data/MIT-LICENSE +20 -0
  12. data/README.md +3 -1
  13. data/Rakefile +3 -15
  14. data/act_with_flags.gemspec +7 -2
  15. data/gemfiles/rails_5.2.gemfile +12 -0
  16. data/gemfiles/rails_6.0.gemfile +12 -0
  17. data/lib/act_with_flags/admin.rb +8 -6
  18. data/lib/act_with_flags/define.rb +28 -7
  19. data/lib/act_with_flags/print.rb +1 -1
  20. data/lib/act_with_flags/utils.rb +2 -3
  21. data/lib/act_with_flags/version.rb +13 -4
  22. data/test/any_all_none_test.rb +4 -2
  23. data/test/clear_test.rb +1 -1
  24. data/test/inheritance_any_test.rb +56 -0
  25. data/test/inheritance_test.rb +73 -0
  26. data/test/internal/app/assets/config/manifest.js +1 -0
  27. data/test/internal/app/controllers/application_controller.rb +3 -0
  28. data/test/internal/app/controllers/orders_controller.rb +16 -0
  29. data/test/internal/app/models/application_record.rb +3 -0
  30. data/test/internal/app/models/order.rb +9 -0
  31. data/test/internal/app/views/layouts/application.html.erb +12 -0
  32. data/test/internal/config/database.yml +3 -0
  33. data/test/internal/config/routes.rb +4 -0
  34. data/test/internal/config/secrets.yml +8 -0
  35. data/test/internal/db/schema.rb +13 -0
  36. data/test/internal_benchmark_test.rb +5 -8
  37. data/test/internal_check_add_test.rb +4 -0
  38. data/test/internal_null_test.rb +3 -3
  39. data/test/internal_one_test.rb +2 -0
  40. data/test/legacy_test.rb +1 -1
  41. data/test/one_test.rb +1 -1
  42. data/test/origin_test.rb +2 -0
  43. data/test/remove_from_test.rb +1 -1
  44. data/test/reset_test.rb +1 -1
  45. data/test/string_test.rb +26 -0
  46. data/test/test_helper.rb +8 -25
  47. metadata +92 -6
  48. data/LICENSE +0 -21
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: db/test.sqlite3
@@ -0,0 +1,4 @@
1
+ Rails.application.routes.draw do
2
+ resources :orders
3
+ root :to => 'orders#index'
4
+ end
@@ -0,0 +1,8 @@
1
+ development:
2
+ secret_key_base: e0759094af00bb172148ef71ce3bfd3cb8ad688628bee51dd596b3c2e84aaf37b94136e5fe9d35e8685e4fcc1b145a3568d0675fdf88fa77751e405d454a80d5
3
+
4
+ test:
5
+ secret_key_base: ad8df0f94e834515e076f0259050f9dc722286a1d305cf4e650242c63cfe6f1a451c4c135e833c90b854720ebd38d741cdb50b9541ab6c505d45559cb5af62b0
6
+
7
+ production:
8
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
@@ -0,0 +1,13 @@
1
+ ActiveRecord::Schema.define(version: 201910) do
2
+
3
+ create_table "orders", force: true do |t|
4
+ t.string "name"
5
+ t.string "qty"
6
+ t.integer "flags"
7
+ t.text "bigflags"
8
+ t.integer "category"
9
+ t.datetime "created_at", null: false
10
+ t.datetime "updated_at", null: false
11
+ end
12
+
13
+ end
@@ -8,7 +8,7 @@ require 'benchmark/ips'
8
8
  # ENV['MORE'] = 'true'
9
9
 
10
10
  describe 'Internal timings' do
11
- let(:order) { Order.new }
11
+ let(:order) { Order.create }
12
12
 
13
13
  def setup
14
14
  reset_order
@@ -18,9 +18,6 @@ describe 'Internal timings' do
18
18
  it 'times ips' do
19
19
  return unless ENV['MORE']
20
20
 
21
- Order.add_to_flags :blocked, reset: :hard
22
- order = Order.new
23
-
24
21
  Benchmark.ips do |x|
25
22
  x.report('assign true : ') { order.blocked = true }
26
23
  x.report('assign false: ') { order.blocked = false }
@@ -42,12 +39,12 @@ class BenchFoo < Minitest::Benchmark
42
39
  n = 1_000_000
43
40
  n = 100_000
44
41
  n = 10_000
45
- Order.add_to_flags :blocked, reset: :hard
46
- order = Order.new
42
+ Order.add_to_flags :blocked2
43
+ order = Order.create
47
44
  assert_performance_constant do |input|
48
45
  n.times do
49
- order.blocked = true
50
- order.blocked = !order.blocked
46
+ order.blocked2 = true
47
+ order.blocked2 = !order.blocked2
51
48
  end
52
49
  end
53
50
  end
@@ -29,4 +29,8 @@ describe 'Internal check add flag' do
29
29
  puts res if ENV['MORE']
30
30
  end
31
31
 
32
+ it 'coverage position raise' do
33
+ assert_raises { admin.position(:aaaa) }
34
+ end
35
+
32
36
  end
@@ -16,9 +16,9 @@ describe 'Internal Null' do
16
16
  it 'tests to_boolean' do
17
17
  assert admin.to_boolean(true)
18
18
  refute admin.to_boolean(false)
19
- assert_raises { flags.to_boolean(nil) }
20
- assert_raises { flags.to_boolean(2) }
21
- assert_raises { flags.to_boolean('unknown') }
19
+ assert_raises { admin.to_boolean(nil) }
20
+ assert_raises { admin.to_boolean(2) }
21
+ assert_raises { admin.to_boolean('unknown') }
22
22
  end
23
23
 
24
24
  it 'tests a simple administration: names' do
@@ -1,3 +1,5 @@
1
+ # rubocop: disable all
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  describe 'Internal One Flag' do
@@ -2,7 +2,7 @@
2
2
  require 'test_helper'
3
3
 
4
4
  describe 'Legacy Flag' do
5
- let(:order) { Order.new }
5
+ let(:order) { Order.create }
6
6
 
7
7
  def setup
8
8
  reset_order
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
 
4
4
  describe 'One Flag' do
5
5
  let(:flag) { :blocked }
6
- let(:order) { Order.new }
6
+ let(:order) { Order.create }
7
7
 
8
8
  def setup
9
9
  reset_order
@@ -1,3 +1,5 @@
1
+ # rubocop: disable all
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  describe 'Testing origin' do
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
3
  describe 'Delete from Flags' do
4
- let(:order) { Order.new }
4
+ let(:order) { Order.create }
5
5
 
6
6
  def setup
7
7
  reset_order
@@ -10,7 +10,7 @@ describe 'Testing reset' do
10
10
 
11
11
  it 'reset hard' do
12
12
  refute_equal [], Order.add_to_flags.names
13
- Order.act_with_flags.reset if Order.act_with_flags
13
+ Order.act_with_flags&.reset
14
14
  assert_equal [], Order.add_to_flags.names
15
15
  end
16
16
 
@@ -0,0 +1,26 @@
1
+ # rubocop:disable all
2
+ require 'test_helper'
3
+
4
+ describe 'String Flag' do
5
+ let(:order) { Order.new }
6
+
7
+ def setup
8
+ reset_order
9
+ order.update bigflags: '0'
10
+ Order.add_to_flags a: 1000, origin: :bigflags
11
+ end
12
+
13
+ it 'set and reset flag' do
14
+ assert order.bigflags.is_a?(String)
15
+ order.a = true
16
+ assert order.bigflags.is_a?(String)
17
+ assert_equal true, order.a
18
+ assert_equal true, order.a?
19
+
20
+ order.a = 'false'
21
+ assert order.bigflags.is_a?(String)
22
+ assert_equal false, order.a
23
+ assert_equal false, order.a?
24
+ end
25
+
26
+ end
@@ -1,35 +1,18 @@
1
- # rubocop:disable all
2
-
3
- if ENV['MORE']
1
+ if ENV['COVERAGE']
4
2
  require 'simplecov'
5
3
  SimpleCov.start do
6
- add_filter 'test'
4
+ add_filter '/test/'
7
5
  end
8
6
  end
9
7
 
10
- require 'rubygems'
8
+ require "combustion"
9
+ Combustion.path = "test/internal"
10
+ Combustion.initialize! :all
11
+
12
+ require 'rails/test_help'
11
13
  require 'minitest/autorun'
12
14
  require 'minitest/benchmark'
13
- require 'active_record'
14
- require_relative '../lib/act_with_flags.rb'
15
-
16
- ENV['RAILS_ENV'] ||= 'test'
17
-
18
- ActiveRecord::Base.establish_connection(
19
- adapter: 'sqlite3',
20
- database: 'db/flags.sqlite3'
21
- )
22
-
23
- ActiveRecord::Schema.define do
24
- create_table 'orders', force: true do |t|
25
- t.integer :flags
26
- t.string :bigflags
27
- t.integer :category
28
- end
29
- end
30
-
31
- class Order < ActiveRecord::Base
32
- end
15
+ #require 'capybara/rails'
33
16
 
34
17
  def reset_order
35
18
  Order.act_with_flags.reset if Order.act_with_flags
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.0.4
4
+ version: 0.2.3
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-03-03 00:00:00.000000000 Z
11
+ date: 2020-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,70 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12'
33
+ version: '13'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '12'
40
+ version: '13'
41
+ - !ruby/object:Gem::Dependency
42
+ name: appraisal
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: combustion
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sqlite3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
41
97
  description: Handles flags in a Rails model instance
42
98
  email:
43
99
  - dittmar.krall@matique.de
@@ -45,17 +101,21 @@ executables: []
45
101
  extensions: []
46
102
  extra_rdoc_files: []
47
103
  files:
104
+ - ".gitignore"
48
105
  - ".rubocop.yml"
49
106
  - ".ruby-gemset"
50
107
  - ".ruby-version"
51
108
  - ".travis.yml"
52
109
  - ".watchr"
110
+ - Appraisals
53
111
  - Gemfile
54
112
  - Gemfile.lock
55
- - LICENSE
113
+ - MIT-LICENSE
56
114
  - README.md
57
115
  - Rakefile
58
116
  - act_with_flags.gemspec
117
+ - gemfiles/rails_5.2.gemfile
118
+ - gemfiles/rails_6.0.gemfile
59
119
  - lib/act_with_flags.rb
60
120
  - lib/act_with_flags/admin.rb
61
121
  - lib/act_with_flags/define.rb
@@ -64,6 +124,18 @@ files:
64
124
  - lib/act_with_flags/version.rb
65
125
  - test/any_all_none_test.rb
66
126
  - test/clear_test.rb
127
+ - test/inheritance_any_test.rb
128
+ - test/inheritance_test.rb
129
+ - test/internal/app/assets/config/manifest.js
130
+ - test/internal/app/controllers/application_controller.rb
131
+ - test/internal/app/controllers/orders_controller.rb
132
+ - test/internal/app/models/application_record.rb
133
+ - test/internal/app/models/order.rb
134
+ - test/internal/app/views/layouts/application.html.erb
135
+ - test/internal/config/database.yml
136
+ - test/internal/config/routes.rb
137
+ - test/internal/config/secrets.yml
138
+ - test/internal/db/schema.rb
67
139
  - test/internal_benchmark_test.rb
68
140
  - test/internal_check_add_test.rb
69
141
  - test/internal_null_test.rb
@@ -75,6 +147,7 @@ files:
75
147
  - test/origin_test.rb
76
148
  - test/remove_from_test.rb
77
149
  - test/reset_test.rb
150
+ - test/string_test.rb
78
151
  - test/test_helper.rb
79
152
  homepage: http://matique.de
80
153
  licenses:
@@ -95,13 +168,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
168
  - !ruby/object:Gem::Version
96
169
  version: '0'
97
170
  requirements: []
98
- rubygems_version: 3.0.1
171
+ rubygems_version: 3.0.8
99
172
  signing_key:
100
173
  specification_version: 4
101
174
  summary: act_with_flags gem
102
175
  test_files:
103
176
  - test/any_all_none_test.rb
104
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
105
190
  - test/internal_benchmark_test.rb
106
191
  - test/internal_check_add_test.rb
107
192
  - test/internal_null_test.rb
@@ -113,4 +198,5 @@ test_files:
113
198
  - test/origin_test.rb
114
199
  - test/remove_from_test.rb
115
200
  - test/reset_test.rb
201
+ - test/string_test.rb
116
202
  - test/test_helper.rb
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.