lb-persistence 0.1.0 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34f142eee2a8be5aae73687655f819eb5b54f77fc286bd7bf03fd60ccd598c0a
4
- data.tar.gz: 9d145a34e867be9d70d64668eba6ee3823b6b9319e86ba1985cd829f5d007b8e
3
+ metadata.gz: 0aaa4e82cdf55105539b2b0b922221f1c13edba4f415550f606c92f992154616
4
+ data.tar.gz: d67a1ad39dfc23b52720978f5283ae1cb4fe0d808ab14e8a709fcdb067320556
5
5
  SHA512:
6
- metadata.gz: 4409e4fbe16f39c07460807d7e36e6eb6f76e813a7f61703612bd9906902708464e78680e99984f8cdb0d88d932aa88316a5792c63d904cacf3c9862efadbda7
7
- data.tar.gz: 43fea15f325e80d76ca632531fca42d0eb51ee37bf951f8394fb55100ace30347ed69b85cdcbdb7821860ac2ab4f2d69e19bb10925521d2c4758fe77a5d06814
6
+ metadata.gz: 01ca45c267be5d5a4d072d65a67d0fb26635f3c0c37587ccfb3d9951a8965ebb3851616ce660484c253715971c7b0da4554f2f3caf8bca51208067631b379496
7
+ data.tar.gz: 1b2f8d96eca4a1cf9340180dadb3935904f1eb900a8131cdeb700e15eb9bd8936a17f9a3a3a76b9c5d16e9dcf1c5386773d0060589305232caa347e2e5fd8aec
@@ -0,0 +1,22 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: [ master ]
5
+ pull_request:
6
+ branches: [ master ]
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ ruby_version: ['2.7', '3.0', '3.1', 'head']
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ - name: Set up Ruby ${{ matrix.ruby-version }}
16
+ uses: ruby/setup-ruby@359bebbc29cbe6c87da6bc9ea3bc930432750108
17
+ with:
18
+ ruby-version: ${{ matrix.ruby_version }}
19
+ - name: Install dependencies
20
+ run: bundle install
21
+ - name: Run tests
22
+ run: bundle exec rake ci
data/.gitignore CHANGED
@@ -33,6 +33,7 @@ measurements
33
33
  ## BUNDLER
34
34
  .bundle
35
35
  Gemfile.lock
36
+ vendor
36
37
 
37
38
  ## ctags
38
39
  tags
data/.rubocop.yml ADDED
@@ -0,0 +1,18 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.7
3
+ NewCops: enable
4
+ DisplayCopNames: true
5
+ Exclude:
6
+ - 'vendor/**/*'
7
+ Naming/FileName:
8
+ Exclude:
9
+ - Rakefile
10
+ Metrics/BlockLength:
11
+ Exclude:
12
+ - 'spec/**/*.rb'
13
+ - '*.gemspec'
14
+ Lint/ConstantDefinitionInBlock:
15
+ Exclude:
16
+ - 'spec/**/*.rb'
17
+ Style/OperatorMethodCall:
18
+ Enabled: false
data/Guardfile CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  guard :bundler do
5
4
  watch('Gemfile')
@@ -7,8 +6,7 @@ guard :bundler do
7
6
  watch(/\A(.+)\.gemspec\z/)
8
7
  end
9
8
 
10
- guard :rspec, cmd: 'bundle exec rspec ' +
11
- File.read('.rspec').split.join(' '),
9
+ guard :rspec, cmd: "bundle exec rspec #{File.read('.rspec').split.join(' ')}",
12
10
  failed_mode: :keep do
13
11
  # Run all specs if configuration is modified
14
12
  watch('.rspec') { 'spec' }
@@ -28,7 +26,7 @@ guard :rspec, cmd: 'bundle exec rspec ' +
28
26
  Dir["spec/unit/#{m[1]}/#{m[2]}*"]
29
27
  end
30
28
 
31
- watch("lib/#{File.basename(File.expand_path('../', __FILE__))}.rb") do
29
+ watch("lib/#{File.basename(File.expand_path(__dir__))}.rb") do
32
30
  'spec'
33
31
  end
34
32
 
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  [gem]: https://rubygems.org/gems/lb-persistence
2
- [ci]: https://circleci.com/gh/lb-rb/lb-persistence/tree/master
2
+ [ci]: https://github.com/lb-rb/lb-persistence/actions
3
3
 
4
4
  # lb-persistence
5
5
 
6
6
  [![Gem Version](https://badge.fury.io/rb/lb-persistence.svg)][gem]
7
- [![Build Status](https://img.shields.io/circleci/project/lb-rb/lb-persistence.svg)][ci]
7
+ [![Build Status](https://github.com/lb-rb/lb-persistence/workflows/CI/badge.svg)][ci]
8
8
 
9
9
  ## Credits
10
10
 
data/Rakefile CHANGED
@@ -1,6 +1,3 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
- require 'devtools'
5
-
6
- Devtools.init_rake_tasks
3
+ require 'bundler/setup'
data/config/flay.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 13
3
- total_score: 77
3
+ total_score: 72
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
- require File.expand_path('../lib/lb/persistence/version', __FILE__)
3
+ require File.expand_path('lib/lb/persistence/version', __dir__)
5
4
 
6
5
  Gem::Specification.new do |gem|
7
6
  gem.name = 'lb-persistence'
@@ -19,20 +18,17 @@ Gem::Specification.new do |gem|
19
18
  .split($INPUT_RECORD_SEPARATOR)
20
19
  gem.executables = `git ls-files -- bin/*`
21
20
  .split("\n").map { |f| File.basename(f) }
22
- gem.test_files = `git ls-files -- spec`
23
- .split($INPUT_RECORD_SEPARATOR)
24
21
  gem.extra_rdoc_files = %w[README.md]
25
- gem.required_ruby_version = '>= 2.4'
22
+ gem.required_ruby_version = '>= 2.7'
26
23
 
27
- gem.add_dependency 'dry-struct', '~> 0.4', '< 0.5'
28
- gem.add_dependency 'rom', '~> 4.2'
29
- gem.add_dependency 'rom-sql', '~> 2.4'
24
+ gem.add_dependency 'dry-struct', '~> 1.6'
25
+ gem.add_dependency 'rom', '~> 5.3'
26
+ gem.add_dependency 'rom-sql', '~> 3.6'
30
27
 
31
- gem.add_development_dependency 'devtools', '~> 0.1.20'
32
- gem.add_development_dependency 'guard', '~> 2.14'
33
- gem.add_development_dependency 'guard-bundler', '~> 2.1'
34
- gem.add_development_dependency 'guard-rspec', '~> 4.7', '>= 4.7.3'
35
- gem.add_development_dependency 'guard-rubocop', '~> 1.3'
36
- gem.add_development_dependency 'rubocop', '~> 0.52.1'
37
- gem.add_development_dependency 'sqlite3', '~> 1.3'
28
+ gem.add_development_dependency 'rake', '~> 13.0.6'
29
+ gem.add_development_dependency 'rspec', '~> 3.12.0'
30
+ gem.add_development_dependency 'rspec-core', '~> 3.12.1'
31
+ gem.add_development_dependency 'rubocop', '~> 1.5'
32
+ gem.add_development_dependency 'sqlite3', '~> 1.6'
33
+ gem.metadata['rubygems_mfa_required'] = 'true'
38
34
  end
@@ -37,11 +37,9 @@ module LB
37
37
 
38
38
  {
39
39
  group: :remove_key_prefix_inject_for,
40
- wrap: :remove_key_prefix_inject_hash_for
40
+ wrap: :remove_key_prefix_inject_hash_for
41
41
  }.each do |operation, inject|
42
- # rubocop:disable Metrics/LineLength
43
42
  define_method :"#{operation}_prefix" do |array, key, keys, prefix, model = nil|
44
- # rubocop:enable Metrics/LineLength
45
43
  compose do |ops|
46
44
  ops << t(operation, key, keys)
47
45
  ops << t(:map_array,
@@ -88,8 +86,8 @@ module LB
88
86
  t(:remove_key_prefix_inject, prefix, model)).call(hash)
89
87
  end
90
88
 
91
- def reject_array(array, fn)
92
- Array(array).reject { |value| fn[value] }
89
+ def reject_array(array, function)
90
+ Array(array).reject { |value| function[value] }
93
91
  end
94
92
 
95
93
  def empty_hash?(hash)
@@ -21,11 +21,11 @@ module LB
21
21
  end
22
22
 
23
23
  def qualify_on(on)
24
- on.map do |source, target|
24
+ on.to_h do |source, target|
25
25
  source = source.qualified if source.respond_to?(:qualified)
26
26
  target = target.qualified if target.respond_to?(:qualified)
27
27
  [source, target]
28
- end.to_h
28
+ end
29
29
  end
30
30
 
31
31
  def prefixed(relation,
@@ -4,7 +4,7 @@ module LB
4
4
  class Persistence
5
5
  # Custom Types
6
6
  module Types
7
- include Dry::Types.module
7
+ include Dry.Types(default: :nominal)
8
8
  end
9
9
  end
10
10
  end
@@ -3,6 +3,6 @@
3
3
  module LB
4
4
  class Persistence
5
5
  # Version
6
- VERSION = '0.1.0'
6
+ VERSION = '0.3.0'
7
7
  end
8
8
  end
@@ -9,7 +9,6 @@ require 'lb/persistence/settings'
9
9
 
10
10
  # Helpers
11
11
  require 'lb/persistence/relation/joins'
12
- require 'lb/persistence/model/attributes'
13
12
  require 'lb/persistence/functions'
14
13
 
15
14
  # LB namespace
@@ -124,7 +123,7 @@ module LB
124
123
  # @api private
125
124
  #
126
125
  def configure(config)
127
- config.auto_registration(settings.source_dir, options)
126
+ config.auto_registration(settings.source_dir, **options)
128
127
 
129
128
  config
130
129
  end
data/rakelib/ci.rake CHANGED
@@ -1,24 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Remove existing same-named tasks
4
- %w[ci ci:metrics].each do |task|
5
- klass = Rake::Task
6
- klass[task].clear if klass.task_defined?(task)
3
+ namespace :metrics do
4
+ desc 'Check code style with RuboCop'
5
+ task :rubocop do
6
+ require 'rubocop'
7
+ begin
8
+ # args = %W[--config #{config.config_file}]
9
+ args = []
10
+ raise 'Rubocop failed' unless RuboCop::CLI.new.run(args).zero?
11
+ rescue Encoding::CompatibilityError => e
12
+ abort e.message
13
+ end
14
+ end
7
15
  end
8
16
 
9
- desc 'Run all specs, metrics and mutant'
17
+ desc 'Run CI tasks'
10
18
  task ci: %w[ci:metrics]
11
19
 
12
20
  namespace :ci do
13
21
  tasks = %w[
14
- metrics:coverage
15
- metrics:yardstick:verify
16
22
  metrics:rubocop
17
- metrics:flog
18
- metrics:flay
19
23
  spec:integration
20
24
  ]
21
25
 
22
- desc 'Run metrics (except mutant)'
26
+ desc 'Run metrics'
23
27
  task metrics: tasks
24
28
  end
data/rakelib/spec.rake ADDED
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require 'rspec/core/rake_task'
5
+
6
+ # Remove existing same-named tasks
7
+ %w[spec spec:unit spec:integration].each do |task|
8
+ klass = Rake::Task
9
+ klass[task].clear if klass.task_defined?(task)
10
+ end
11
+
12
+ desc 'Run all specs'
13
+ RSpec::Core::RakeTask.new(:spec) do |task|
14
+ task.pattern = 'spec/{unit,integration}/**/*_spec.rb'
15
+ end
16
+
17
+ namespace :spec do
18
+ desc 'Run unit specs'
19
+ RSpec::Core::RakeTask.new(:unit) do |task|
20
+ task.pattern = 'spec/unit/**/*_spec.rb'
21
+ end
22
+
23
+ desc 'Run integration specs'
24
+ RSpec::Core::RakeTask.new(:integration) do |task|
25
+ task.pattern = 'spec/integration/**/*_spec.rb'
26
+ end
27
+ end
28
+ rescue LoadError
29
+ %w[spec spec:unit spec:integration].each do |name|
30
+ task name do
31
+ warn "In order to run #{name}, do: gem install rspec"
32
+ end
33
+ end
34
+ end
35
+
36
+ task test: :spec
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  if ENV['COVERAGE'] == 'true'
5
4
  require 'simplecov'
@@ -10,7 +9,7 @@ if ENV['COVERAGE'] == 'true'
10
9
  add_filter 'config'
11
10
  add_filter 'spec'
12
11
 
13
- minimum_coverage 89
12
+ minimum_coverage 88
14
13
  end
15
14
  end
16
15
 
@@ -18,10 +17,8 @@ $LOAD_PATH << 'lib'
18
17
 
19
18
  require 'lb-persistence'
20
19
 
21
- require 'devtools/spec_helper'
22
-
23
20
  # require spec support files and shared behavior
24
- Dir[File.expand_path('../{support,shared}/**/*.rb', __FILE__)].each do |file|
21
+ Dir[File.expand_path('{support,shared}/**/*.rb', __dir__)].sort.each do |file|
25
22
  require file
26
23
  end
27
24
 
@@ -7,7 +7,7 @@ describe LB::Persistence::Functions, '.group_prefix' do
7
7
 
8
8
  let(:object) do
9
9
  described_class.t(:group_prefix, key, keys, prefix, nested_class)
10
- .>> described_class.t(:model, model_class)
10
+ .>> described_class.t(:model, model_class)
11
11
  end
12
12
 
13
13
  let(:key) { :items }
@@ -18,7 +18,7 @@ describe LB::Persistence::Functions, '.group_prefix' do
18
18
  nested = nested_class
19
19
  Class.new(Dry::Struct) do
20
20
  module Types
21
- include Dry::Types.module
21
+ include Dry.Types(default: :nominal)
22
22
  end
23
23
 
24
24
  attribute :a, Types::Strict::String
@@ -29,7 +29,7 @@ describe LB::Persistence::Functions, '.group_prefix' do
29
29
  let(:nested_class) do
30
30
  Class.new(Dry::Struct) do
31
31
  module Types
32
- include Dry::Types.module
32
+ include Dry.Types(default: :nominal)
33
33
  end
34
34
 
35
35
  attribute :a, Types::Strict::String
@@ -7,7 +7,7 @@ describe LB::Persistence::Functions, '.wrap_prefix' do
7
7
 
8
8
  let(:object) do
9
9
  described_class.t(:wrap_prefix, key, keys, prefix, nested_class)
10
- .>> described_class.t(:model, model_class)
10
+ .>> described_class.t(:model, model_class)
11
11
  end
12
12
 
13
13
  let(:key) { :item }
@@ -18,7 +18,7 @@ describe LB::Persistence::Functions, '.wrap_prefix' do
18
18
  nested = nested_class
19
19
  Class.new(Dry::Struct) do
20
20
  module Types
21
- include Dry::Types.module
21
+ include Dry.Types(default: :nominal)
22
22
  end
23
23
 
24
24
  attribute :a, Types::Strict::String
@@ -29,7 +29,7 @@ describe LB::Persistence::Functions, '.wrap_prefix' do
29
29
  let(:nested_class) do
30
30
  Class.new(Dry::Struct) do
31
31
  module Types
32
- include Dry::Types.module
32
+ include Dry.Types(default: :nominal)
33
33
  end
34
34
 
35
35
  attribute :a, Types::Strict::String
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lb-persistence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Firas Zaidan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-17 00:00:00.000000000 Z
11
+ date: 2023-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct
@@ -16,152 +16,112 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.4'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '0.5'
19
+ version: '1.6'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0.4'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '0.5'
26
+ version: '1.6'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: rom
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: '4.2'
33
+ version: '5.3'
40
34
  type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - "~>"
45
39
  - !ruby/object:Gem::Version
46
- version: '4.2'
40
+ version: '5.3'
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: rom-sql
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
45
  - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '2.4'
47
+ version: '3.6'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
52
  - - "~>"
59
53
  - !ruby/object:Gem::Version
60
- version: '2.4'
61
- - !ruby/object:Gem::Dependency
62
- name: devtools
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: 0.1.20
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: 0.1.20
75
- - !ruby/object:Gem::Dependency
76
- name: guard
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '2.14'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '2.14'
54
+ version: '3.6'
89
55
  - !ruby/object:Gem::Dependency
90
- name: guard-bundler
56
+ name: rake
91
57
  requirement: !ruby/object:Gem::Requirement
92
58
  requirements:
93
59
  - - "~>"
94
60
  - !ruby/object:Gem::Version
95
- version: '2.1'
61
+ version: 13.0.6
96
62
  type: :development
97
63
  prerelease: false
98
64
  version_requirements: !ruby/object:Gem::Requirement
99
65
  requirements:
100
66
  - - "~>"
101
67
  - !ruby/object:Gem::Version
102
- version: '2.1'
68
+ version: 13.0.6
103
69
  - !ruby/object:Gem::Dependency
104
- name: guard-rspec
70
+ name: rspec
105
71
  requirement: !ruby/object:Gem::Requirement
106
72
  requirements:
107
73
  - - "~>"
108
74
  - !ruby/object:Gem::Version
109
- version: '4.7'
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- version: 4.7.3
75
+ version: 3.12.0
113
76
  type: :development
114
77
  prerelease: false
115
78
  version_requirements: !ruby/object:Gem::Requirement
116
79
  requirements:
117
80
  - - "~>"
118
81
  - !ruby/object:Gem::Version
119
- version: '4.7'
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: 4.7.3
82
+ version: 3.12.0
123
83
  - !ruby/object:Gem::Dependency
124
- name: guard-rubocop
84
+ name: rspec-core
125
85
  requirement: !ruby/object:Gem::Requirement
126
86
  requirements:
127
87
  - - "~>"
128
88
  - !ruby/object:Gem::Version
129
- version: '1.3'
89
+ version: 3.12.1
130
90
  type: :development
131
91
  prerelease: false
132
92
  version_requirements: !ruby/object:Gem::Requirement
133
93
  requirements:
134
94
  - - "~>"
135
95
  - !ruby/object:Gem::Version
136
- version: '1.3'
96
+ version: 3.12.1
137
97
  - !ruby/object:Gem::Dependency
138
98
  name: rubocop
139
99
  requirement: !ruby/object:Gem::Requirement
140
100
  requirements:
141
101
  - - "~>"
142
102
  - !ruby/object:Gem::Version
143
- version: 0.52.1
103
+ version: '1.5'
144
104
  type: :development
145
105
  prerelease: false
146
106
  version_requirements: !ruby/object:Gem::Requirement
147
107
  requirements:
148
108
  - - "~>"
149
109
  - !ruby/object:Gem::Version
150
- version: 0.52.1
110
+ version: '1.5'
151
111
  - !ruby/object:Gem::Dependency
152
112
  name: sqlite3
153
113
  requirement: !ruby/object:Gem::Requirement
154
114
  requirements:
155
115
  - - "~>"
156
116
  - !ruby/object:Gem::Version
157
- version: '1.3'
117
+ version: '1.6'
158
118
  type: :development
159
119
  prerelease: false
160
120
  version_requirements: !ruby/object:Gem::Requirement
161
121
  requirements:
162
122
  - - "~>"
163
123
  - !ruby/object:Gem::Version
164
- version: '1.3'
124
+ version: '1.6'
165
125
  description: LB Persistence API
166
126
  email:
167
127
  - firas@zaidan.de
@@ -170,6 +130,7 @@ extensions: []
170
130
  extra_rdoc_files:
171
131
  - README.md
172
132
  files:
133
+ - ".github/workflows/ci.yml"
173
134
  - ".gitignore"
174
135
  - ".rspec"
175
136
  - ".rubocop.yml"
@@ -178,24 +139,22 @@ files:
178
139
  - LICENSE
179
140
  - README.md
180
141
  - Rakefile
181
- - circle.yml
182
142
  - config/devtools.yml
183
143
  - config/flay.yml
184
144
  - config/flog.yml
185
145
  - config/mutant.yml
186
146
  - config/reek.yml
187
- - config/rubocop.yml
188
147
  - config/yardstick.yml
189
148
  - lb-persistence.gemspec
190
149
  - lib/lb-persistence.rb
191
150
  - lib/lb/persistence.rb
192
151
  - lib/lb/persistence/functions.rb
193
- - lib/lb/persistence/model/attributes.rb
194
152
  - lib/lb/persistence/relation/joins.rb
195
153
  - lib/lb/persistence/settings.rb
196
154
  - lib/lb/persistence/types.rb
197
155
  - lib/lb/persistence/version.rb
198
156
  - rakelib/ci.rake
157
+ - rakelib/spec.rake
199
158
  - spec/shared/settings.rb
200
159
  - spec/spec_helper.rb
201
160
  - spec/support/helper.rb
@@ -204,14 +163,14 @@ files:
204
163
  - spec/unit/lb/persistence/container_spec.rb
205
164
  - spec/unit/lb/persistence/functions/class_methods/group_prefix_spec.rb
206
165
  - spec/unit/lb/persistence/functions/class_methods/wrap_prefix_spec.rb
207
- - spec/unit/lb/persistence/model/redefine_attribute_spec.rb
208
166
  - spec/unit/lb/persistence/repository_spec.rb
209
167
  - spec/unit/lb/persistence/uri_spec.rb
210
168
  homepage: https://github.com/lb-rb/lb-persistence
211
169
  licenses:
212
170
  - MIT
213
- metadata: {}
214
- post_install_message:
171
+ metadata:
172
+ rubygems_mfa_required: 'true'
173
+ post_install_message:
215
174
  rdoc_options: []
216
175
  require_paths:
217
176
  - lib
@@ -220,27 +179,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
179
  requirements:
221
180
  - - ">="
222
181
  - !ruby/object:Gem::Version
223
- version: '2.4'
182
+ version: '2.7'
224
183
  required_rubygems_version: !ruby/object:Gem::Requirement
225
184
  requirements:
226
185
  - - ">="
227
186
  - !ruby/object:Gem::Version
228
187
  version: '0'
229
188
  requirements: []
230
- rubyforge_project:
231
- rubygems_version: 2.7.6
232
- signing_key:
189
+ rubygems_version: 3.4.10
190
+ signing_key:
233
191
  specification_version: 4
234
192
  summary: LB Persistence API
235
- test_files:
236
- - spec/shared/settings.rb
237
- - spec/spec_helper.rb
238
- - spec/support/helper.rb
239
- - spec/unit/lb/persistence/class_methods/new_spec.rb
240
- - spec/unit/lb/persistence/connect_spec.rb
241
- - spec/unit/lb/persistence/container_spec.rb
242
- - spec/unit/lb/persistence/functions/class_methods/group_prefix_spec.rb
243
- - spec/unit/lb/persistence/functions/class_methods/wrap_prefix_spec.rb
244
- - spec/unit/lb/persistence/model/redefine_attribute_spec.rb
245
- - spec/unit/lb/persistence/repository_spec.rb
246
- - spec/unit/lb/persistence/uri_spec.rb
193
+ test_files: []
data/.rubocop.yml DELETED
@@ -1 +0,0 @@
1
- ./config/rubocop.yml
data/circle.yml DELETED
@@ -1,23 +0,0 @@
1
- defaults: &defaults
2
- working_directory: ~/lb-project
3
- steps:
4
- - checkout
5
- - run: bundle install
6
- - run: bundle exec rake ci
7
-
8
- version: 2
9
- jobs:
10
- ruby_2_4:
11
- <<: *defaults
12
- docker:
13
- - image: circleci/ruby:2.4.4
14
- ruby_2_5:
15
- <<: *defaults
16
- docker:
17
- - image: circleci/ruby:2.5.1
18
- workflows:
19
- version: 2
20
- test:
21
- jobs:
22
- - ruby_2_4
23
- - ruby_2_5
data/config/rubocop.yml DELETED
@@ -1,11 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.4
3
- DisplayCopNames: true
4
- Exclude: []
5
- Naming/FileName:
6
- Exclude:
7
- - Rakefile
8
- Metrics/BlockLength:
9
- Exclude:
10
- - 'spec/**/*'
11
- - '*.gemspec'
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module LB
4
- class Persistence
5
- module Model
6
- # Helper for dry-struct attributes
7
- module Attributes
8
- def delete_attribute(name)
9
- @schema.delete(name)
10
- equalizer.instance_variable_get('@keys').delete(name)
11
- superclass.instance_variable_get('@schema').delete(name)
12
- @constructor = Dry::Types['coercible.hash']
13
- .public_send(constructor_type, @schema)
14
-
15
- self
16
- end
17
-
18
- def redefine_attribute(name, type)
19
- delete_attribute(name)
20
- attribute(name, type)
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe LB::Persistence::Model::Attributes, '#redefine_attribute' do
6
- include_context 'settings'
7
-
8
- subject { object }
9
-
10
- let(:model_base_class) do
11
- Class.new(Dry::Struct) do
12
- module Types
13
- include Dry::Types.module
14
- end
15
-
16
- attribute :a, Types::Strict::Symbol
17
- attribute :b, Types::Strict::String
18
- attribute :c, Types::Strict::Hash
19
- end
20
- end
21
-
22
- let(:model_child_class) do
23
- Class.new(model_base_class) do
24
- extend LB::Persistence::Model::Attributes
25
-
26
- redefine_attribute :b, Types::Strict::Bool
27
- end
28
- end
29
-
30
- let(:object) { model_child_class.new(values) }
31
-
32
- let(:base_values) do
33
- {
34
- a: :symbol,
35
- c: { key: 'value' }
36
- }
37
- end
38
-
39
- let(:values) { base_values.merge(b: true) }
40
-
41
- it 'should create model with redefined attribute' do
42
- expect(subject.b).to be(true)
43
- end
44
-
45
- context 'with invalid value' do
46
- let(:values) { base_values.merge(b: 'true') }
47
- let(:expected_msg) { /has invalid type for #{Regexp.escape(':b')}/ }
48
-
49
- it 'should not create model with old attribute' do
50
- expect { subject }.to raise_error(Dry::Struct::Error, expected_msg)
51
- end
52
- end
53
- end