act_with_bag 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3db0e2b3144028775d4671056b9aff91b6f48d4843a056fdc0e42bc115a18a86
4
- data.tar.gz: 83a536b2e3a296c5d1bb50de2e4dee584327c8d6b0ba9e2d608d0018259e811d
3
+ metadata.gz: 00bd0c94aee3fbc99eb7ca3ca554717315e632a2b7cdabd45a49f21513e5582b
4
+ data.tar.gz: 3aa580b905fdbee20225e9f1522dc7fce2c9d5947be8ff368e971133cff5af83
5
5
  SHA512:
6
- metadata.gz: 8178f176d4cefe6bfdf990ef3d1d40310b866d5a18e36757a291c8ae490c312d5a41fe5be1380f7e66af1ff780015d1c6ea0fd57562bc413f75ce5ad048b85e5
7
- data.tar.gz: 6b56cdf9bce4b173112d50cc8e167bb022994c0877edfbc665bdeab8b3ba7618f0813a929d4e29480bef8f581283d1c4a55b556a3f7b7c05bafe2515cae2ad40
6
+ metadata.gz: 4bc54082e770bed85ecb237639a32a11f5827486575d3138b862b511046817846ad4469db26abf6da1cfdd1a1f2e2075288c4dffeb74369605436015c379692c
7
+ data.tar.gz: 86b256efde9d4ea3e8c89358f5c13ac79b3dbd7844673cb0579a723c785bfe374846c834ca77580ae9a3a833436976c51d9615fb4b2986adf80369696b3ae99f
@@ -1,26 +1,30 @@
1
- # under construction
2
-
1
+ # see also https://github.com/whitequark/parser/blob/master/.github/workflows/test.yml
3
2
  name: Rake
4
3
 
5
- on: push
4
+ #on: [push, pull_request]
5
+ on: [push]
6
6
 
7
7
  jobs:
8
8
  test:
9
- name: Rake
10
- # runs-on: ubuntu-18.04
11
- runs-on: ubuntu-latest
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ # os: [ubuntu-latest, macos-latest]
13
+ os: [ubuntu-latest]
14
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
15
+ # ruby: [2.5, 2.6, 2.7, '3.0', head, jruby, jruby-head, truffleruby, truffleruby-head]
16
+ ruby: ["2.7.2", 3.1.0, 3.1.2]
17
+ test_command: ["bundle exec rake test"]
18
+ runs-on: ${{ matrix.os }}
12
19
 
13
20
  steps:
14
- - uses: actions/checkout@v1
15
-
16
- - name: Setup Ruby
17
- # uses: actions/setup-ruby@v1
18
- uses: ruby/setup-ruby@v1
21
+ - uses: actions/checkout@v2
22
+ - uses: ruby/setup-ruby@v1
19
23
  with:
20
- ruby-version: 2.7
21
-
22
- - name: Install dependencies
23
- run: gem install bundler && bundle install --jobs 4 --retry 3
24
-
25
- - name: Run Rake
26
- run: rake
24
+ ruby-version: ${{ matrix.ruby }}
25
+ - name: Bundle install
26
+ run: |
27
+ bundle config path /home/runner/bundle
28
+ bundle install
29
+ bundle update
30
+ - run: ${{ matrix.test_command }}
data/.ruby-gemset CHANGED
@@ -1 +1 @@
1
- rails-6.1
1
+ rails-7.0
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.7.2
1
+ ruby-3.1.2
data/.watchr CHANGED
@@ -1,5 +1,6 @@
1
- HH = '#' * 22 unless defined?(HH)
2
- H = '#' * 5 unless defined?(H)
1
+ TESTING = %w[test]
2
+ HH = "#" * 22 unless defined?(HH)
3
+ H = "#" * 5 unless defined?(H)
3
4
 
4
5
  def usage
5
6
  puts <<-EOS
@@ -14,35 +15,47 @@ def run(cmd)
14
15
  system "/usr/bin/time --format '#{HH} Elapsed time %E' #{cmd}"
15
16
  end
16
17
 
17
- def run_it(type, file)
18
- case type
19
- when 'test'; run %(ruby -I test #{file})
20
- # when 'spec'; run %(rspec -X #{file})
21
- else; puts "#{H} unknown type: #{type}, file: #{file}"
18
+ def run_it(type, files)
19
+ files.split(" ").flatten.each do |file|
20
+ case type
21
+ when "test" then run %(bundle exec ruby -I test #{file})
22
+ # when 'spec'; run %(rspec -X #{file})
23
+ else; puts "#{H} unknown type: #{type}, file: #{file}"
24
+ end
22
25
  end
23
26
  end
24
27
 
25
28
  def run_all_tests
26
29
  puts "\n#{HH} Running all tests #{HH}\n"
27
- %w[test spec].each { |dir| run "rake #{dir}" if File.exist?(dir) }
30
+ TESTING.each { |dir| run "bundle exec rake #{dir}" if File.exist?(dir) }
28
31
  end
29
32
 
30
33
  def run_matching_files(base)
31
- base = base.split('_').first
32
- %w[test spec].each { |type|
34
+ base = base.split("_").first
35
+ TESTING.each { |type|
33
36
  files = Dir["#{type}/**/*.rb"].select { |file| file =~ /#{base}_.*\.rb/ }
34
- run_it type, files.join(' ') unless files.empty?
37
+ run_it type, files.join(" ") unless files.empty?
35
38
  }
36
39
  end
37
40
 
38
- %w[test spec].each { |type|
41
+ TESTING.each { |type|
39
42
  watch("#{type}/#{type}_helper\.rb") { run_all_tests }
40
- watch('lib/.*\.rb') { run_all_tests }
41
- watch("#{type}/.*/*_#{type}\.rb") { |match| run_it type, match[0] }
43
+ watch("lib/.*\.rb") { run_all_tests }
44
+ watch("#{type}/.*/*_#{type}\.rb") { |match| run_it type, match[0] }
45
+ watch("#{type}/data/(.*)\.rb") { |match|
46
+ m1 = match[1]
47
+ run_matching_files("#{type}/#{m1}/#{m1}_#{type}.rb")
48
+ }
49
+ }
50
+
51
+ %w[rb erb haml slim].each { |type|
52
+ watch(".*/(.*)\.#{type}") { |match|
53
+ run_matching_files(match[1])
54
+ }
42
55
  }
43
56
 
44
57
  # Ctrl-\ or ctrl-4
45
- Signal.trap('QUIT') { run_all_tests }
58
+ Signal.trap("QUIT") { run_all_tests }
46
59
  # Ctrl-C
47
- Signal.trap('INT') { abort("Interrupted\n") }
60
+ Signal.trap("INT") { abort("Interrupted\n") }
48
61
  usage
data/Appraisals CHANGED
@@ -1,24 +1,24 @@
1
- appraise 'rails-6.1' do
2
- gem 'rails', '~> 6.1'
3
- gem 'dryer-config', '~> 6.0'
1
+ appraise "rails-6.1" do
2
+ gem "rails", "~> 6.1"
3
+ gem "dryer-config", "~> 6.0"
4
4
  end
5
5
 
6
- appraise 'rails-6.0' do
7
- gem 'rails', '~> 6.0'
8
- gem 'dryer-config', '~> 6.0'
6
+ appraise "rails-6.0" do
7
+ gem "rails", "~> 6.0"
8
+ gem "dryer-config", "~> 6.0"
9
9
  end
10
10
 
11
- #appraise 'rails-5.2' do
11
+ # appraise 'rails-5.2' do
12
12
  # gem 'rails', '~> 5.2.0'
13
13
  # gem 'dryer-config', '~> 5.2.0'
14
- #end
14
+ # end
15
15
 
16
- #appraise 'rails-5.0' do
16
+ # appraise 'rails-5.0' do
17
17
  # gem 'rails', '~> 5.0.0'
18
18
  # gem 'dryer-config', '~> 5.0.0'
19
- #end
19
+ # end
20
20
 
21
- #appraise 'rails-4.1' do
21
+ # appraise 'rails-4.1' do
22
22
  # gem 'rails', '= 4.1.1'
23
23
  ## gem 'dryer-config', '~> 5.1.0'
24
- #end
24
+ # end
data/Gemfile CHANGED
@@ -1,11 +1,12 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
  gemspec
3
3
 
4
- gem 'rails'
4
+ gem "rails"
5
5
 
6
6
  group :test do
7
- gem 'observr'
8
- gem 'rubocop', require: false
9
- gem 'simplecov', require: false
10
- gem 'capybara'
7
+ gem "observr"
8
+ gem "standard", require: false
9
+ gem "simplecov", require: false
10
+ # gem "capybara"
11
+ gem "ricecream"
11
12
  end
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2010-2021 Dittmar Krall - www.matique.com
1
+ Copyright 2010-2022 Dittmar Krall - www.matiq.com
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -50,6 +50,23 @@ Using an "add_to_bag" in the subclass obsoletes the "serialize".
50
50
  Other records are untouched,
51
51
  i.e. the value of the field will be kept in the database.
52
52
 
53
+ 3. Keep an eye on YAML, the library to serialize the "bag",
54
+ which for some versions is not tamper-proof
55
+ and may required additional configuration in Rails.
56
+
57
+ See also:
58
+ ~~~
59
+ https://stackoverflow.com/questions/72970170/upgrading-to-rails-6-1-6-1-causes-psychdisallowedclass-tried-to-load-unspecif
60
+ ~~~
61
+
62
+ The configuration
63
+ "Rails.application.config.active_record.use_yaml_unsafe_load = true"
64
+ is not recommended as it is a patch prone to attacks.
65
+
66
+ The configuration
67
+ "Rails.application.config.active_record.yaml_column_permitted_classes = [Symbol]"
68
+ may be incomplete requiring additional classes like "Time" and "Date".
69
+ (credits to Martin Sch�ttler).
53
70
 
54
71
  Example
55
72
  =======
@@ -91,4 +108,4 @@ Test
91
108
 
92
109
  rake
93
110
 
94
- Copyright (c) 2009-2020 [Dittmar Krall], released under the MIT license
111
+ Copyright (c) 2009-2022 [Dittmar Krall], released under the MIT license
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require 'rake/testtask'
1
+ require "rake/testtask"
2
2
 
3
- desc 'Run the tests.'
3
+ desc "Run the tests."
4
4
  Rake::TestTask.new do |t|
5
- t.libs << 'lib'
6
- t.libs << 'test'
7
- t.pattern = 'test/**/*_test.rb'
5
+ t.libs << "lib"
6
+ t.libs << "test"
7
+ t.pattern = "test/**/*_test.rb"
8
8
  t.verbose = false
9
9
  end
10
10
 
data/act_with_bag.gemspec CHANGED
@@ -1,27 +1,28 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'act_with_bag/version'
3
+ require "act_with_bag/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = 'act_with_bag'
7
- s.version = ActWithBag::VERSION
8
- s.summary = %q{act_with_bag (baggies) gem}
9
- s.description = %q{Add a bag to a Rails model}
10
- s.authors = ['Dittmar Krall']
11
- s.email = ['dittmar.krall@matique.de']
12
- s.homepage = 'http://matique.de'
6
+ s.name = "act_with_bag"
7
+ s.version = ActWithBag::VERSION
8
+ s.summary = "act_with_bag (baggies) gem"
9
+ s.description = "Add a bag to a Rails model"
10
+ s.authors = ["Dittmar Krall"]
11
+ s.email = ["dittmar.krall@matiq.com"]
12
+ s.homepage = "http://matiq.com"
13
+ s.license = "MIT"
14
+ s.platform = Gem::Platform::RUBY
13
15
 
14
- s.license = 'MIT'
15
- s.platform = Gem::Platform::RUBY
16
+ s.metadata["source_code_uri"] = "https://github.com/matique/act_with_bag"
16
17
 
17
- s.files = `git ls-files -z`.split("\x0")
18
- s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
- s.require_paths = ['lib']
18
+ s.files = `git ls-files -z`.split("\x0")
19
+ s.require_paths = ["lib"]
20
20
 
21
- s.add_development_dependency 'bundler'
22
- s.add_development_dependency 'rake'
23
- s.add_development_dependency 'appraisal', '~> 2'
21
+ s.add_development_dependency "bundler"
22
+ s.add_development_dependency "rake"
23
+ s.add_development_dependency "appraisal"
24
+ s.add_development_dependency "combustion"
24
25
 
25
- s.add_development_dependency 'minitest'
26
- s.add_development_dependency 'sqlite3'
26
+ s.add_development_dependency "minitest"
27
+ s.add_development_dependency "sqlite3"
27
28
  end
@@ -7,9 +7,9 @@ gem "dryer-config", "~> 6.0"
7
7
 
8
8
  group :test do
9
9
  gem "observr"
10
- gem "rubocop", require: false
10
+ gem "standard", require: false
11
11
  gem "simplecov", require: false
12
- gem "capybara"
12
+ gem "ricecream"
13
13
  end
14
14
 
15
15
  gemspec path: "../"
@@ -7,9 +7,9 @@ gem "dryer-config", "~> 6.0"
7
7
 
8
8
  group :test do
9
9
  gem "observr"
10
- gem "rubocop", require: false
10
+ gem "standard", require: false
11
11
  gem "simplecov", require: false
12
- gem "capybara"
12
+ gem "ricecream"
13
13
  end
14
14
 
15
15
  gemspec path: "../"
@@ -1,12 +1,11 @@
1
- # rubocop: disable all
2
-
3
1
  module ActWithBag
4
- VERSION = '1.0.4' # 2021-06-17
5
- # VERSION = '1.0.3' # 2021-05-18
6
- # VERSION = '1.0.2' # 2020-07-16
7
- # VERSION = '1.0.1' # 2020-04-27
8
- # VERSION = '1.0.0' # 2019-09-27
9
- # VERSION = '0.5.7' # 2019-03-05
10
- # VERSION = '0.5.6' # 2019-02-15
11
- # VERSION = '0.5.5'
2
+ VERSION = "1.1.0" # 2022-08-07
3
+ # VERSION = "1.0.4" # 2021-06-17
4
+ # VERSION = "1.0.3" # 2021-05-18
5
+ # VERSION = "1.0.2" # 2020-07-16
6
+ # VERSION = "1.0.1" # 2020-04-27
7
+ # VERSION = "1.0.0" # 2019-09-27
8
+ # VERSION = "0.5.7" # 2019-03-05
9
+ # VERSION = "0.5.6" # 2019-02-15
10
+ # VERSION = "0.5.5"
12
11
  end
data/lib/act_with_bag.rb CHANGED
@@ -9,7 +9,7 @@ class << ActiveRecord::Base
9
9
  def bag=(x)
10
10
  #bag changes disabled as it must be handled by Bag himself
11
11
  end
12
- }
12
+ }, __FILE__, __LINE__ - 4
13
13
 
14
14
  @baggies_date ||= {}
15
15
  baglets.each { |b|
@@ -38,7 +38,7 @@ class << ActiveRecord::Base
38
38
  end
39
39
  }
40
40
  end
41
- }
41
+ }, __FILE__, __LINE__ - 12
42
42
  end
43
43
 
44
44
  def merge(_bag, params)
@@ -60,23 +60,28 @@ class << ActiveRecord::Base
60
60
  next unless found
61
61
 
62
62
  ## weird Timestamp, Hash and YAML problem
63
- res = [0] if res == []
64
- res[0] = 0 unless res[0] >= 0
63
+ res = [0] if res == []
64
+ res[0] = 0 unless res[0] >= 0
65
65
 
66
- value = Date.new(*res) rescue nil
66
+ value = begin
67
+ Date.new(*res)
68
+ rescue
69
+ nil
70
+ end
67
71
  params[model][baggie] = value
68
72
  }
69
73
  params
70
74
  end
71
75
 
72
- protected
76
+ protected
77
+
73
78
  def accessor_present?(accessor)
74
79
  accessor_sym = accessor.to_sym
75
80
  res = false
76
81
 
77
- res = true if method_defined?(accessor_sym)
78
- res = true if respond_to?(:attribute_names) &&
79
- attribute_names.include?(accessor)
82
+ res = true if method_defined?(accessor_sym)
83
+ res = true if respond_to?(:attribute_names) &&
84
+ attribute_names.include?(accessor)
80
85
  if res
81
86
  # logger.info "** Already defined #{self.to_s}.#{accessor}"
82
87
  # p "** act_to_bag: untouched accessor '#{self.to_s}.#{accessor}'"
@@ -86,7 +91,7 @@ class << ActiveRecord::Base
86
91
 
87
92
  def add_accessor(baggie, type)
88
93
  accessor = baggie.to_s
89
- return if accessor_present?(accessor)
94
+ return if accessor_present?(accessor)
90
95
 
91
96
  # MARS patch, new:
92
97
  #
@@ -103,11 +108,11 @@ class << ActiveRecord::Base
103
108
  # END
104
109
 
105
110
  type_sym = type.to_sym
106
- typing = {integer: '.to_i', float: '.to_f',
107
- string: '.to_s'}[type_sym] || ''
111
+ typing = {integer: ".to_i", float: ".to_f",
112
+ string: ".to_s"}[type_sym] || ""
108
113
  # p "add_accessor #{self.to_s} #{baggie.inspect} #{type_sym.inspect}"
109
114
 
110
- @baggies_date[baggie] = type if type_sym == :date
115
+ @baggies_date[baggie] = type if type_sym == :date
111
116
 
112
117
  if type_sym == :boolean
113
118
  class_eval %(
@@ -116,9 +121,8 @@ class << ActiveRecord::Base
116
121
  return res if res.class == FalseClass
117
122
  return res if res.class == TrueClass
118
123
  return res.to_i != 0
119
- res
120
124
  end
121
- )
125
+ ), __FILE__, __LINE__ - 7
122
126
 
123
127
  class_eval %(
124
128
  def #{accessor}=(value)
@@ -131,13 +135,13 @@ class << ActiveRecord::Base
131
135
  nil
132
136
  end
133
137
  end
134
- )
138
+ ), __FILE__, __LINE__ - 11
135
139
 
136
140
  class_eval %(
137
141
  def #{accessor}?
138
142
  #{accessor}
139
143
  end
140
- )
144
+ ), __FILE__, __LINE__ - 4
141
145
 
142
146
  else
143
147
 
@@ -145,7 +149,7 @@ class << ActiveRecord::Base
145
149
  def #{accessor}
146
150
  self.bag && self.bag[:#{baggie}]
147
151
  end
148
- )
152
+ ), __FILE__, __LINE__ - 4
149
153
 
150
154
  class_eval %(
151
155
  def #{accessor}=(value)
@@ -157,7 +161,7 @@ class << ActiveRecord::Base
157
161
  nil
158
162
  end
159
163
  end
160
- )
164
+ ), __FILE__, __LINE__ - 10
161
165
  end
162
166
  end
163
167
  end
@@ -1,22 +1,18 @@
1
- require 'test_helper'
2
-
1
+ require "test_helper"
3
2
 
4
3
  class Order < ActiveRecord::Base
5
4
  add_to_bag :category
6
5
  end
7
6
 
8
-
9
7
  class AccessorTest < ActiveSupport::TestCase
10
-
11
8
  def setup
12
9
  @order = Order.new
13
10
  end
14
11
 
15
12
  test "should reject overwriting of column category" do
16
- value = 'abc'
13
+ value = "abc"
17
14
  assert @order.respond_to?(:category)
18
15
  @order.category = value
19
16
  assert_equal false, @order.bag.has_key?(:category)
20
17
  end
21
-
22
18
  end
@@ -1,13 +1,10 @@
1
- require 'test_helper'
2
-
1
+ require "test_helper"
3
2
 
4
3
  class Order < ActiveRecord::Base
5
4
  add_to_bag bool: :boolean
6
5
  end
7
6
 
8
-
9
7
  class BagBooleanTest < ActiveSupport::TestCase
10
-
11
8
  def setup
12
9
  @order = Order.new
13
10
  end
@@ -22,7 +19,7 @@ class BagBooleanTest < ActiveSupport::TestCase
22
19
  assert_equal false, @order.bag.has_key?(:bool)
23
20
  @order.bool = 0
24
21
  assert_equal false, @order.bag.has_key?(:bool)
25
- @order.bool = '0'
22
+ @order.bool = "0"
26
23
  assert_equal false, @order.bag.has_key?(:bool)
27
24
  end
28
25
 
@@ -37,5 +34,4 @@ class BagBooleanTest < ActiveSupport::TestCase
37
34
  @order.bool = false
38
35
  assert_equal false, @order.bag.has_key?(:bool)
39
36
  end
40
-
41
37
  end
data/test/bag_test.rb CHANGED
@@ -1,7 +1,6 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
3
  class BagTest < ActiveSupport::TestCase
4
-
5
4
  def setup
6
5
  @order = Order.new
7
6
  end
@@ -15,38 +14,37 @@ class BagTest < ActiveSupport::TestCase
15
14
  assert @order.respond_to?(:flag)
16
15
  assert @order.respond_to?(:at)
17
16
 
18
- assert @order.respond_to?('field=')
19
- assert @order.respond_to?('flag=')
20
- assert @order.respond_to?('flag?')
21
- assert @order.respond_to?('at=')
17
+ assert @order.respond_to?(:field=)
18
+ assert @order.respond_to?(:flag=)
19
+ assert @order.respond_to?(:flag?)
20
+ assert @order.respond_to?(:at=)
22
21
  end
23
22
 
24
23
  test "string access to field" do
25
- value = 'abc'
24
+ value = "abc"
26
25
  @order.field = value
27
26
  assert_equal value, @order.field
28
- assert_not_equal 'def', @order.field
27
+ assert_not_equal "def", @order.field
29
28
  end
30
29
 
31
30
  test "date access to at" do
32
31
  value = DateTime.now
33
32
  @order.at = value
34
33
  assert_equal value, @order.at
35
- assert_not_equal 'def', @order.at
34
+ assert_not_equal "def", @order.at
36
35
  end
37
36
 
38
37
  test "bag is hidden" do
39
- value = 'abc'
38
+ value = "abc"
40
39
  @order.field = value
41
- @order.bag = 'bad thing'
40
+ @order.bag = "bad thing"
42
41
  assert_equal value, @order.field
43
42
  end
44
43
 
45
44
  test "merge for :at :date" do
46
45
  model = :order
47
- params = {model => {'at(1i)' => '1', 'at(2i)' => '2','at(3i)' => '3'}}
46
+ params = {model => {"at(1i)" => "1", "at(2i)" => "2", "at(3i)" => "3"}}
48
47
  res = Order.merge({}, params)
49
48
  assert_equal Date.new(1, 2, 3), res[model][:at]
50
49
  end
51
-
52
50
  end
data/test/boolean_test.rb CHANGED
@@ -1,7 +1,6 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
3
  class BooleanTest < ActiveSupport::TestCase
4
-
5
4
  def setup
6
5
  @order = Order.new
7
6
  end
@@ -39,10 +38,10 @@ class BooleanTest < ActiveSupport::TestCase
39
38
  end
40
39
 
41
40
  test "string 1/0 returns a boolean" do
42
- @order.flag = '1'
41
+ @order.flag = "1"
43
42
  assert_equal true, @order.flag
44
43
 
45
- @order.flag = '0'
44
+ @order.flag = "0"
46
45
  assert_equal false, @order.flag
47
46
 
48
47
  @order.flag = nil
@@ -50,13 +49,12 @@ class BooleanTest < ActiveSupport::TestCase
50
49
  end
51
50
 
52
51
  test "'false' returns a boolean" do
53
- @order.flag = 'false'
52
+ @order.flag = "false"
54
53
  assert_equal false, @order.flag
55
54
  end
56
55
 
57
56
  test "'true' returns a boolean" do
58
- @order.flag = 'true'
57
+ @order.flag = "true"
59
58
  assert_equal true, @order.flag
60
59
  end
61
-
62
60
  end
data/test/clean_test.rb CHANGED
@@ -1,20 +1,17 @@
1
- require 'test_helper'
2
-
1
+ require "test_helper"
3
2
 
4
3
  class Order < ActiveRecord::Base
5
4
  add_to_bag :name
6
5
  add_to_bag :name2
7
6
  end
8
7
 
9
-
10
8
  class CleanTest < ActiveSupport::TestCase
11
-
12
9
  def setup
13
10
  @order = Order.new
14
11
  end
15
12
 
16
13
  test "assigning nil removes field from bag" do
17
- value = 'abc'
14
+ value = "abc"
18
15
  assert_equal false, @order.bag.has_key?(:name)
19
16
  @order.name = value
20
17
  assert_equal true, @order.bag.has_key?(:name)
@@ -27,5 +24,4 @@ class CleanTest < ActiveSupport::TestCase
27
24
  @order.name2 = nil
28
25
  assert_equal false, @order.bag.has_key?(:name2)
29
26
  end
30
-
31
27
  end
data/test/delete_test.rb CHANGED
@@ -1,26 +1,22 @@
1
- require 'test_helper'
2
-
1
+ require "test_helper"
3
2
 
4
3
  class Order < ActiveRecord::Base
5
4
  add_to_bag :aa, :bb, :cc
6
5
  delete_from_bag :bb
7
6
  end
8
7
 
9
-
10
8
  class DeleteTest < ActiveSupport::TestCase
11
-
12
9
  def setup
13
10
  @order = Order.new
14
11
  end
15
12
 
16
13
  test "delete a field" do
17
- @order.aa = 'aa'
18
- @order.bb = 'bb'
19
- @order.cc = 'cc'
14
+ @order.aa = "aa"
15
+ @order.bb = "bb"
16
+ @order.cc = "cc"
20
17
  @order.save
21
- assert_equal 'aa', @order.aa
18
+ assert_equal "aa", @order.aa
22
19
  assert_nil @order.bb
23
- assert_equal 'cc', @order.cc
20
+ assert_equal "cc", @order.cc
24
21
  end
25
-
26
22
  end
@@ -0,0 +1,3 @@
1
+ class ApplicationRecord < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -0,0 +1,7 @@
1
+ class Order < ActiveRecord::Base
2
+ before_save do |row|
3
+ row.errors.add :base, "panic" if row.category == "error"
4
+ end
5
+
6
+ add_to_bag :field, flag: :boolean, at: :date
7
+ end
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: db/test.sqlite3
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ ActiveRecord::Schema.define(version: 202208) do
4
+ create_table "orders", force: true do |t|
5
+ t.string :category
6
+ t.text :bag
7
+
8
+ t.datetime "created_at", null: false
9
+ t.datetime "updated_at", null: false
10
+ end
11
+
12
+ create_table "users", force: true do |t|
13
+ t.string :type
14
+ t.text :bag
15
+
16
+ t.datetime "created_at", null: false
17
+ t.datetime "updated_at", null: false
18
+ end
19
+ end
data/test/sti_test.rb CHANGED
@@ -1,5 +1,4 @@
1
- require 'test_helper'
2
-
1
+ require "test_helper"
3
2
 
4
3
  class User < ActiveRecord::Base
5
4
  add_to_bag :name
@@ -9,9 +8,7 @@ class Administrator < User
9
8
  add_to_bag :key
10
9
  end
11
10
 
12
-
13
11
  class StiTest < ActiveSupport::TestCase
14
-
15
12
  def setup
16
13
  @user = User.new
17
14
  @admin = Administrator.new
@@ -24,7 +21,7 @@ class StiTest < ActiveSupport::TestCase
24
21
 
25
22
  test "STI field type" do
26
23
  assert_nil @user.type
27
- assert_equal 'Administrator', @admin.type
24
+ assert_equal "Administrator", @admin.type
28
25
  end
29
26
 
30
27
  test "have bag" do
@@ -37,30 +34,29 @@ class StiTest < ActiveSupport::TestCase
37
34
  assert @admin.respond_to?(:name)
38
35
  assert @admin.respond_to?(:key)
39
36
 
40
- assert @user.respond_to?('name=')
41
- assert @admin.respond_to?('name=')
42
- assert @admin.respond_to?('key=')
37
+ assert @user.respond_to?(:name=)
38
+ assert @admin.respond_to?(:name=)
39
+ assert @admin.respond_to?(:key=)
43
40
 
44
41
  assert_equal false, @user.respond_to?(:key)
45
- assert_equal false, @user.respond_to?('key=')
42
+ assert_equal false, @user.respond_to?(:key=)
46
43
  end
47
44
 
48
45
  test "access to name & key" do
49
- name = 'name'
50
- key = 'key'
46
+ name = "name"
47
+ key = "key"
51
48
  @admin.name = name
52
49
  @admin.key = key
53
50
  assert_equal name, @admin.name
54
51
  assert_equal key, @admin.key
55
- assert_not_equal 'def', @admin.name
56
- assert_not_equal 'def', @admin.key
52
+ assert_not_equal "def", @admin.name
53
+ assert_not_equal "def", @admin.key
57
54
  end
58
55
 
59
56
  test "merge" do
60
57
  model = :administrator
61
- params = {model => {'at(1i)' => '1', 'at(2i)' => '2','at(3i)' => '3'}}
58
+ params = {model => {"at(1i)" => "1", "at(2i)" => "2", "at(3i)" => "3"}}
62
59
  res = Administrator.merge({}, params)
63
60
  assert_nil res[model][:at]
64
61
  end
65
-
66
62
  end
data/test/string_test.rb CHANGED
@@ -1,12 +1,10 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
3
  class Order < ActiveRecord::Base
4
4
  add_to_bag string: :string
5
5
  end
6
6
 
7
-
8
7
  class StringTest < ActiveSupport::TestCase
9
-
10
8
  def setup
11
9
  @order = Order.new
12
10
  end
@@ -14,10 +12,9 @@ class StringTest < ActiveSupport::TestCase
14
12
  test "assigning boolean to string" do
15
13
  value = false
16
14
  @order.string = value
17
- assert_equal 'false', @order.string
15
+ assert_equal "false", @order.string
18
16
  value = true
19
17
  @order.string = value
20
- assert_equal 'true', @order.string
18
+ assert_equal "true", @order.string
21
19
  end
22
-
23
20
  end
data/test/test_helper.rb CHANGED
@@ -1,39 +1,17 @@
1
- if ENV['COVERAGE']
2
- require 'simplecov'
1
+ if ENV["COVERAGE"]
2
+ require "simplecov"
3
3
  SimpleCov.start do
4
- add_filter '/test/'
4
+ add_filter "/test/"
5
5
  end
6
6
  end
7
7
 
8
- #require 'rails/test_help'
9
- require 'minitest/autorun'
10
- require 'minitest/benchmark'
11
- #require 'capybara/rails'
12
-
13
- require 'active_record'
14
-
15
- ActiveRecord::Base.establish_connection({
16
- adapter: 'sqlite3',
17
- database: 'bag.sqlite3'
18
- })
19
-
20
- ActiveRecord::Schema.define do
21
- create_table 'orders', :force => true do |t|
22
- t.string :category
23
- t.column 'bag', :text
24
- end
25
- end
26
-
27
- ActiveRecord::Schema.define do
28
- create_table 'users', :force => true do |t|
29
- t.string :type
30
- t.text :bag
31
- end
8
+ require "combustion"
9
+ Combustion.path = "test/internal"
10
+ Combustion.initialize! :active_record do
11
+ config.active_record.yaml_column_permitted_classes = [Symbol, Time, Date]
32
12
  end
33
13
 
34
- require File.dirname(__FILE__) + '/../lib/act_with_bag.rb'
35
-
36
-
37
- class Order < ActiveRecord::Base
38
- add_to_bag :field, flag: :boolean, at: :date
39
- end
14
+ require "rails/test_help"
15
+ require "minitest/autorun"
16
+ require "minitest/benchmark"
17
+ # require 'capybara/rails'
data/test/type_test.rb CHANGED
@@ -1,19 +1,30 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
3
  class Order < ActiveRecord::Base
4
4
  add_to_bag({i: :integer}, {f: :float})
5
5
  end
6
6
 
7
-
8
7
  class TypeTest < ActiveSupport::TestCase
9
-
10
8
  def setup
11
9
  @order = Order.new
12
10
  end
13
11
 
14
12
  test "miscellaneous values" do
13
+ [123, 2.3, "abc", nil, {a: 1}, [1, 2]].each { |value|
14
+ @order.field = value
15
+ assert_value value, @order.field
16
+
17
+ @order.save
18
+ id = @order.id
19
+ order = Order.find(id)
20
+ assert_value value, order.field
21
+ }
22
+ end
23
+
24
+ test "Time & Date" do
15
25
  time = Time.now
16
- [123, 2.3, "abc", nil, {a: 1}, [1,2], time].each { |value|
26
+ today = Date.today
27
+ [time, today].each { |value|
17
28
  @order.field = value
18
29
  assert_value value, @order.field
19
30
 
@@ -38,10 +49,10 @@ class TypeTest < ActiveSupport::TestCase
38
49
  assert_kind_of Float, @order.f
39
50
  end
40
51
 
41
- private
52
+ private
53
+
42
54
  def assert_value(expect, actual)
43
- assert_equal expect, actual if expect
44
- assert_nil actual unless expect
55
+ assert_equal expect, actual if expect
56
+ assert_nil actual unless expect
45
57
  end
46
-
47
58
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: act_with_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
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-17 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
@@ -42,16 +42,30 @@ dependencies:
42
42
  name: appraisal
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '2'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '2'
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: combustion
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: minitest
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -82,14 +96,13 @@ dependencies:
82
96
  version: '0'
83
97
  description: Add a bag to a Rails model
84
98
  email:
85
- - dittmar.krall@matique.de
99
+ - dittmar.krall@matiq.com
86
100
  executables: []
87
101
  extensions: []
88
102
  extra_rdoc_files: []
89
103
  files:
90
104
  - ".github/workflows/rake.yml"
91
105
  - ".gitignore"
92
- - ".rubocop.yml"
93
106
  - ".ruby-gemset"
94
107
  - ".ruby-version"
95
108
  - ".watchr"
@@ -109,14 +122,19 @@ files:
109
122
  - test/boolean_test.rb
110
123
  - test/clean_test.rb
111
124
  - test/delete_test.rb
125
+ - test/internal/app/models/application_record.rb
126
+ - test/internal/app/models/order.rb
127
+ - test/internal/config/database.yml
128
+ - test/internal/db/schema.rb
112
129
  - test/sti_test.rb
113
130
  - test/string_test.rb
114
131
  - test/test_helper.rb
115
132
  - test/type_test.rb
116
- homepage: http://matique.de
133
+ homepage: http://matiq.com
117
134
  licenses:
118
135
  - MIT
119
- metadata: {}
136
+ metadata:
137
+ source_code_uri: https://github.com/matique/act_with_bag
120
138
  post_install_message:
121
139
  rdoc_options: []
122
140
  require_paths:
@@ -132,18 +150,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
150
  - !ruby/object:Gem::Version
133
151
  version: '0'
134
152
  requirements: []
135
- rubygems_version: 3.2.6
153
+ rubygems_version: 3.3.7
136
154
  signing_key:
137
155
  specification_version: 4
138
156
  summary: act_with_bag (baggies) gem
139
- test_files:
140
- - test/accessor_test.rb
141
- - test/bag_boolean_test.rb
142
- - test/bag_test.rb
143
- - test/boolean_test.rb
144
- - test/clean_test.rb
145
- - test/delete_test.rb
146
- - test/sti_test.rb
147
- - test/string_test.rb
148
- - test/test_helper.rb
149
- - test/type_test.rb
157
+ test_files: []
data/.rubocop.yml DELETED
@@ -1,30 +0,0 @@
1
- inherit_from:
2
- - ~/configs/.rubocop.yml
3
-
4
- AllCops:
5
- Include:
6
- - 'lib/**/*.rb'
7
- Exclude:
8
- - 'test/**/*'
9
-
10
- Layout/AccessModifierIndentation:
11
- Enabled: false
12
- Layout/EmptyLinesAroundAccessModifier:
13
- Enabled: false
14
- Layout/ExtraSpacing:
15
- Enabled: false
16
-
17
- Metrics/AbcSize:
18
- Enabled: false
19
- Metrics/CyclomaticComplexity:
20
- Enabled: false
21
- Metrics/MethodLength:
22
- Enabled: false
23
- Metrics/PerceivedComplexity:
24
- Enabled: false
25
-
26
- Style/EvalWithLocation:
27
- Enabled: false
28
- Style/RescueModifier:
29
- Exclude:
30
- - 'lib/act_with_bag.rb'