sinclair 2.0.1 → 2.1.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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/config/check_specs.yml +2 -0
  4. data/config/yardstick.yml +5 -1
  5. data/lib/sinclair/chain_settable.rb +83 -0
  6. data/lib/sinclair/core_ext/object.rb +39 -0
  7. data/lib/sinclair/env_settable.rb +35 -17
  8. data/lib/sinclair/settable/builder.rb +140 -0
  9. data/lib/sinclair/settable/caster.rb +61 -0
  10. data/lib/sinclair/settable/class_methods.rb +80 -0
  11. data/lib/sinclair/settable.rb +115 -0
  12. data/lib/sinclair/version.rb +1 -1
  13. data/lib/sinclair.rb +2 -0
  14. data/spec/integration/yard/sinclair/env_settable_spec.rb +6 -25
  15. data/spec/integration/yard/sinclair/settable/caster_spec.rb +41 -0
  16. data/spec/integration/yard/sinclair/settable/class_methods_spec.rb +11 -0
  17. data/spec/integration/yard/sinclair/settable_spec.rb +26 -0
  18. data/spec/lib/sinclair/chain_settable_spec.rb +76 -0
  19. data/spec/lib/sinclair/env_settable_spec.rb +4 -2
  20. data/spec/lib/sinclair/settable/builder_spec.rb +47 -0
  21. data/spec/lib/sinclair/settable_spec.rb +46 -0
  22. data/spec/support/files/config.yml +1 -0
  23. data/spec/support/models/app_client.rb +1 -0
  24. data/spec/support/models/hash_app_client.rb +14 -0
  25. data/spec/support/models/hash_settable.rb +10 -0
  26. data/spec/support/models/json_env_settings.rb +18 -0
  27. data/spec/support/models/math_env_settings.rb +17 -0
  28. data/spec/support/models/my_app_client.rb +1 -0
  29. data/spec/support/models/non_default_app_client.rb +8 -0
  30. data/spec/support/models/yaml_file_settings.rb +26 -0
  31. data/spec/support/shared_examples/settable.rb +86 -0
  32. metadata +21 -5
  33. data/lib/sinclair/env_settable/builder.rb +0 -61
  34. data/spec/lib/sinclair/env_settable/builder_spec.rb +0 -35
  35. data/spec/support/shared_examples/env_settable.rb +0 -43
@@ -4,42 +4,23 @@ require 'spec_helper'
4
4
 
5
5
  describe Sinclair::EnvSettable do
6
6
  describe '#yard' do
7
- subject(:settable) { Class.new(MyAppClient) }
7
+ subject(:settable) { MyAppClient }
8
8
 
9
9
  before do
10
10
  ENV['MY_APP_USERNAME'] = 'my_login'
11
+ ENV['MY_APP_PORT'] = '8080'
11
12
  end
12
13
 
13
14
  after do
14
15
  ENV.delete('MY_APP_USERNAME')
16
+ ENV.delete('MY_APP_PORT')
15
17
  end
16
18
 
17
- it 'retrieves username from env' do
19
+ it 'retrieves data from env' do
18
20
  expect(settable.username).to eq('my_login')
19
- end
20
-
21
- it 'retrieves password from env' do
22
21
  expect(settable.password).to be_nil
23
- end
24
-
25
- context 'when defining defaults' do
26
- it 'returns default value' do
27
- expect(settable.host).to eq('my-host.com')
28
- end
29
-
30
- context 'when setting the env variable' do
31
- before do
32
- ENV['MY_APP_HOST'] = 'other-host.com'
33
- end
34
-
35
- after do
36
- ENV.delete('MY_APP_HOST')
37
- end
38
-
39
- it 'retrieves host from env' do
40
- expect(settable.host).to eq('other-host.com')
41
- end
42
- end
22
+ expect(settable.host).to eq('my-host.com')
23
+ expect(settable.port).to eq(8080)
43
24
  end
44
25
  end
45
26
  end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Sinclair::Settable::Caster do
6
+ describe '#yard' do
7
+ describe 'altering base caster' do
8
+ subject(:settable) { MathEnvSettings }
9
+
10
+ before do
11
+ ENV['MATH_VALUE'] = '80'
12
+ end
13
+
14
+ after do
15
+ ENV.delete('MATH_VALUE')
16
+ end
17
+
18
+ it 'retrieves data from env' do
19
+ expect(settable.value).to eq(6400.0)
20
+ end
21
+ end
22
+
23
+ describe 'creating a new caster' do
24
+ subject(:settable) { JsonEnvSettings }
25
+
26
+ let(:hash) { { key: 'value' } }
27
+
28
+ before do
29
+ ENV['JSON_CONFIG'] = hash.to_json
30
+ end
31
+
32
+ after do
33
+ ENV.delete('JSON_CONFIG')
34
+ end
35
+
36
+ it 'retrieves data from env' do
37
+ expect(settable.config).to eq(hash.stringify_keys)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Sinclair::Settable::ClassMethods do
6
+ describe 'yard #read_with' do
7
+ it 'reads the settings from the file' do
8
+ expect(YamlFileSettings.timeout).to eq(10)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Sinclair::Settable do
6
+ describe '#yard' do
7
+ subject(:settable) { HashAppClient }
8
+
9
+ before do
10
+ HashAppClient::HASH[:username] = 'my_login'
11
+ HashAppClient::HASH[:port] = '8080'
12
+ end
13
+
14
+ after do
15
+ HashAppClient::HASH.delete(:username)
16
+ HashAppClient::HASH.delete(:port)
17
+ end
18
+
19
+ it 'retrieves data from env' do
20
+ expect(settable.username).to eq('my_login')
21
+ expect(settable.password).to be_nil
22
+ expect(settable.host).to eq('my-host.com')
23
+ expect(settable.port).to eq(8080)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Sinclair::ChainSettable do
6
+ subject(:settable) do
7
+ options = options_hash
8
+
9
+ Class.new do
10
+ extend Sinclair::ChainSettable
11
+
12
+ source :app_client, Class.new(NonDefaultAppClient)
13
+ source :my_app_client, Class.new(MyAppClient)
14
+
15
+ setting_with_options :username, :password, :host, :port, **options
16
+ end
17
+ end
18
+
19
+ let(:options_hash) { {} }
20
+ let(:username) { 'my_login' }
21
+ let(:password) { Random.rand(10_000).to_s }
22
+
23
+ context 'when the first setting finds the data' do
24
+ let(:username_key) { 'USERNAME' }
25
+ let(:password_key) { 'PASSWORD' }
26
+ let(:host_key) { 'HOST' }
27
+ let(:port_key) { 'PORT' }
28
+
29
+ it_behaves_like 'settings reading'
30
+ end
31
+
32
+ context 'when the second setting finds the data' do
33
+ let(:username_key) { 'MY_APP_USERNAME' }
34
+ let(:password_key) { 'MY_APP_PASSWORD' }
35
+ let(:host_key) { 'MY_APP_HOST' }
36
+ let(:port_key) { 'MY_APP_PORT' }
37
+
38
+ it_behaves_like 'settings reading'
39
+ end
40
+
41
+ context 'when both have a value' do
42
+ let(:first_username) { 'first_username' }
43
+ let(:second_username) { 'second_username' }
44
+
45
+ before do
46
+ ENV['USERNAME'] = first_username
47
+ ENV['MY_APP_USERNAME'] = second_username
48
+ end
49
+
50
+ after do
51
+ ENV.delete('USERNAME')
52
+ ENV.delete('MY_APP_USERNAME')
53
+ end
54
+
55
+ it 'returns the first value' do
56
+ expect(settable.username).to eq(first_username)
57
+ end
58
+
59
+ context 'when passing a different source as options' do
60
+ let(:options_hash) { { sources: %i[my_app_client app_client] } }
61
+
62
+ it 'returns the second value' do
63
+ expect(settable.username).to eq(second_username)
64
+ end
65
+ end
66
+ end
67
+
68
+ context 'when none has value' do
69
+ let(:default) { 'some_default_username' }
70
+ let(:options_hash) { { default: default } }
71
+
72
+ it 'returns the first value' do
73
+ expect(settable.username).to eq(default)
74
+ end
75
+ end
76
+ end
@@ -11,8 +11,9 @@ describe Sinclair::EnvSettable do
11
11
  let(:username_key) { 'USERNAME' }
12
12
  let(:password_key) { 'PASSWORD' }
13
13
  let(:host_key) { 'HOST' }
14
+ let(:port_key) { 'PORT' }
14
15
 
15
- it_behaves_like 'settings reading from env'
16
+ it_behaves_like 'settings reading'
16
17
 
17
18
  context 'when defining a prefix' do
18
19
  subject(:settable) { Class.new(MyAppClient) }
@@ -20,7 +21,8 @@ describe Sinclair::EnvSettable do
20
21
  let(:username_key) { 'MY_APP_USERNAME' }
21
22
  let(:password_key) { 'MY_APP_PASSWORD' }
22
23
  let(:host_key) { 'MY_APP_HOST' }
24
+ let(:port_key) { 'MY_APP_PORT' }
23
25
 
24
- it_behaves_like 'settings reading from env'
26
+ it_behaves_like 'settings reading'
25
27
  end
26
28
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Sinclair::Settable::Builder do
6
+ subject(:settable) do
7
+ setting_prefix = prefix
8
+
9
+ Class.new do
10
+ extend Sinclair::EnvSettable
11
+
12
+ settings_prefix setting_prefix
13
+ end
14
+ end
15
+
16
+ let(:username) { 'my_login' }
17
+ let(:password) { Random.rand(10_000).to_s }
18
+ let(:settings) { %i[username password] }
19
+ let(:options) { { prefix: prefix } }
20
+
21
+ let(:builder) do
22
+ described_class.new(settable, *settings, **options)
23
+ end
24
+
25
+ before { builder.build }
26
+
27
+ context 'when not using prefix' do
28
+ let(:prefix) { nil }
29
+
30
+ let(:username_key) { 'USERNAME' }
31
+ let(:password_key) { 'PASSWORD' }
32
+ let(:host_key) { 'HOST' }
33
+ let(:port_key) { 'PORT' }
34
+
35
+ it_behaves_like 'settings reading'
36
+ end
37
+
38
+ context 'when defining a prefix' do
39
+ let(:prefix) { 'MY_APP' }
40
+ let(:username_key) { 'MY_APP_USERNAME' }
41
+ let(:password_key) { 'MY_APP_PASSWORD' }
42
+ let(:host_key) { 'MY_APP_HOST' }
43
+ let(:port_key) { 'MY_APP_PORT' }
44
+
45
+ it_behaves_like 'settings reading'
46
+ end
47
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Sinclair::Settable do
6
+ context 'when reading from env' do
7
+ subject(:settable) { Class.new(AppClient) }
8
+
9
+ let(:username) { 'my_login' }
10
+ let(:password) { Random.rand(10_000).to_s }
11
+
12
+ let(:username_key) { 'USERNAME' }
13
+ let(:password_key) { 'PASSWORD' }
14
+ let(:host_key) { 'HOST' }
15
+ let(:port_key) { 'PORT' }
16
+
17
+ it_behaves_like 'settings reading'
18
+
19
+ context 'when defining a prefix' do
20
+ subject(:settable) { Class.new(MyAppClient) }
21
+
22
+ let(:username_key) { 'MY_APP_USERNAME' }
23
+ let(:password_key) { 'MY_APP_PASSWORD' }
24
+ let(:host_key) { 'MY_APP_HOST' }
25
+ let(:port_key) { 'MY_APP_PORT' }
26
+
27
+ it_behaves_like 'settings reading'
28
+ end
29
+ end
30
+
31
+ context 'when reading from a hash constant' do
32
+ subject(:settable) { Class.new(HashAppClient) }
33
+
34
+ let(:username) { 'my_login' }
35
+ let(:password) { Random.rand(10_000).to_s }
36
+
37
+ let(:username_key) { :username }
38
+ let(:password_key) { :password }
39
+ let(:host_key) { :host }
40
+ let(:port_key) { :port }
41
+
42
+ it_behaves_like 'settings reading' do
43
+ let(:env_hash) { HashAppClient::HASH }
44
+ end
45
+ end
46
+ end
@@ -0,0 +1 @@
1
+ timeout: 10
@@ -4,4 +4,5 @@ class AppClient
4
4
  extend Sinclair::EnvSettable
5
5
 
6
6
  with_settings :username, :password, host: 'my-host.com'
7
+ setting_with_options :port, type: :integer
7
8
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './spec/support/models/hash_settable'
4
+
5
+ class HashAppClient
6
+ extend HashSettable
7
+
8
+ # rubocop:disable Style/MutableConstant
9
+ HASH = {}
10
+ # rubocop:enable Style/MutableConstant
11
+
12
+ with_settings :username, :password, host: 'my-host.com'
13
+ setting_with_options :port, type: :integer
14
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HashSettable
4
+ extend Sinclair::Settable::ClassMethods
5
+ include Sinclair::Settable
6
+
7
+ read_with do |key|
8
+ self::HASH[key]
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JsonEnvSettable
4
+ include Sinclair::EnvSettable
5
+ extend Sinclair::Settable::ClassMethods
6
+
7
+ class Caster < Sinclair::Settable::Caster
8
+ cast_with(:json) { |value| JSON.parse(value) }
9
+ end
10
+ end
11
+
12
+ class JsonEnvSettings
13
+ extend JsonEnvSettable
14
+
15
+ settings_prefix 'JSON'
16
+
17
+ setting_with_options :config, type: :json
18
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Sinclair
4
+ module Settable
5
+ class Caster
6
+ cast_with(:squared) { |value| value.to_f**2 }
7
+ end
8
+ end
9
+ end
10
+
11
+ class MathEnvSettings
12
+ extend Sinclair::EnvSettable
13
+
14
+ settings_prefix 'MATH'
15
+
16
+ setting_with_options :value, type: :squared
17
+ end
@@ -6,4 +6,5 @@ class MyAppClient
6
6
  settings_prefix 'MY_APP'
7
7
 
8
8
  with_settings :username, :password, host: 'my-host.com'
9
+ setting_with_options :port, type: :integer
9
10
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class NonDefaultAppClient
4
+ extend Sinclair::EnvSettable
5
+
6
+ with_settings :username, :password, :host
7
+ setting_with_options :port, type: :integer
8
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module YamlFileSettable
4
+ include Sinclair::Settable
5
+ extend Sinclair::Settable::ClassMethods
6
+
7
+ read_with do |key|
8
+ loaded_yaml[key.to_s]
9
+ end
10
+
11
+ def loaded_yaml
12
+ YAML.load_file(setting_file)
13
+ end
14
+
15
+ def setting_file(file_path = @setting_file)
16
+ @setting_file = file_path
17
+ end
18
+ end
19
+
20
+ class YamlFileSettings
21
+ extend YamlFileSettable
22
+
23
+ setting_file './spec/support/files/config.yml'
24
+
25
+ setting_with_options :timeout, default: 30
26
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ shared_examples 'settings reading' do
4
+ let(:env_hash) { ENV }
5
+
6
+ context 'when the key is not set' do
7
+ it 'retrieves username from env' do
8
+ expect(settable.username).to be_nil
9
+ end
10
+
11
+ it 'retrieves password from env' do
12
+ expect(settable.password).to be_nil
13
+ end
14
+ end
15
+
16
+ context 'when the key is set' do
17
+ before do
18
+ env_hash[username_key] = username
19
+ env_hash[password_key] = password
20
+ end
21
+
22
+ after do
23
+ env_hash.delete(username_key)
24
+ env_hash.delete(password_key)
25
+ end
26
+
27
+ it 'retrieves username from env' do
28
+ expect(settable.username).to eq(username)
29
+ end
30
+
31
+ it 'retrieves password from env' do
32
+ expect(settable.password).to eq(password)
33
+ end
34
+ end
35
+
36
+ context 'when defining defaults' do
37
+ let(:settings) { %i[host] }
38
+ let(:options) { { prefix: prefix, default: 'my-host.com' } }
39
+
40
+ it 'returns default value' do
41
+ expect(settable.host).to eq('my-host.com')
42
+ end
43
+
44
+ context 'when setting the env variable' do
45
+ let(:other_host) { 'other-host.com' }
46
+
47
+ before do
48
+ env_hash[host_key] = other_host
49
+ end
50
+
51
+ after do
52
+ env_hash.delete(host_key)
53
+ end
54
+
55
+ it 'retrieves host from env' do
56
+ expect(settable.host).to eq(other_host)
57
+ end
58
+ end
59
+ end
60
+
61
+ context 'when defining a type' do
62
+ let(:settings) { %i[port] }
63
+ let(:options) { { prefix: prefix, type: :integer } }
64
+ let(:port) { Random.rand(10..100) }
65
+
66
+ context 'when the key is not set' do
67
+ it 'retrieves port and cast to string' do
68
+ expect(settable.port).to be_nil
69
+ end
70
+ end
71
+
72
+ context 'when the key is set' do
73
+ before do
74
+ env_hash[port_key] = port.to_s
75
+ end
76
+
77
+ after do
78
+ env_hash.delete(port_key)
79
+ end
80
+
81
+ it 'retrieves port and cast to string' do
82
+ expect(settable.port).to eq(port)
83
+ end
84
+ end
85
+ end
86
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinclair
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DarthJee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-23 00:00:00.000000000 Z
11
+ date: 2023-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -275,6 +275,7 @@ files:
275
275
  - lib/sinclair.rb
276
276
  - lib/sinclair/caster.rb
277
277
  - lib/sinclair/caster/class_methods.rb
278
+ - lib/sinclair/chain_settable.rb
278
279
  - lib/sinclair/class_methods.rb
279
280
  - lib/sinclair/comparable.rb
280
281
  - lib/sinclair/comparable/class_methods.rb
@@ -286,7 +287,6 @@ files:
286
287
  - lib/sinclair/configurable.rb
287
288
  - lib/sinclair/core_ext/object.rb
288
289
  - lib/sinclair/env_settable.rb
289
- - lib/sinclair/env_settable/builder.rb
290
290
  - lib/sinclair/equals_checker.rb
291
291
  - lib/sinclair/equals_checker/reader.rb
292
292
  - lib/sinclair/exception.rb
@@ -326,6 +326,10 @@ files:
326
326
  - lib/sinclair/options/builder.rb
327
327
  - lib/sinclair/options/class_methods.rb
328
328
  - lib/sinclair/options_parser.rb
329
+ - lib/sinclair/settable.rb
330
+ - lib/sinclair/settable/builder.rb
331
+ - lib/sinclair/settable/caster.rb
332
+ - lib/sinclair/settable/class_methods.rb
329
333
  - lib/sinclair/version.rb
330
334
  - sinclair.gemspec
331
335
  - sinclair.jpg
@@ -367,9 +371,13 @@ files:
367
371
  - spec/integration/yard/sinclair/model_spec.rb
368
372
  - spec/integration/yard/sinclair/options_parser_spec.rb
369
373
  - spec/integration/yard/sinclair/options_spec.rb
374
+ - spec/integration/yard/sinclair/settable/caster_spec.rb
375
+ - spec/integration/yard/sinclair/settable/class_methods_spec.rb
376
+ - spec/integration/yard/sinclair/settable_spec.rb
370
377
  - spec/integration/yard/sinclair_spec.rb
371
378
  - spec/lib/sinclair/caster/class_methods_spec.rb
372
379
  - spec/lib/sinclair/caster_spec.rb
380
+ - spec/lib/sinclair/chain_settable_spec.rb
373
381
  - spec/lib/sinclair/class_methods_spec.rb
374
382
  - spec/lib/sinclair/comparable_spec.rb
375
383
  - spec/lib/sinclair/config/methods_builder_spec.rb
@@ -379,7 +387,6 @@ files:
379
387
  - spec/lib/sinclair/config_spec.rb
380
388
  - spec/lib/sinclair/configurable_spec.rb
381
389
  - spec/lib/sinclair/core_ext/object_spec.rb
382
- - spec/lib/sinclair/env_settable/builder_spec.rb
383
390
  - spec/lib/sinclair/env_settable_spec.rb
384
391
  - spec/lib/sinclair/equals_checker/reader_spec.rb
385
392
  - spec/lib/sinclair/equals_checker_spec.rb
@@ -413,8 +420,11 @@ files:
413
420
  - spec/lib/sinclair/options/class_methods_spec.rb
414
421
  - spec/lib/sinclair/options_parser_spec.rb
415
422
  - spec/lib/sinclair/options_spec.rb
423
+ - spec/lib/sinclair/settable/builder_spec.rb
424
+ - spec/lib/sinclair/settable_spec.rb
416
425
  - spec/lib/sinclair_spec.rb
417
426
  - spec/spec_helper.rb
427
+ - spec/support/files/config.yml
418
428
  - spec/support/fixture_helpers.rb
419
429
  - spec/support/models/app_client.rb
420
430
  - spec/support/models/app_config.rb
@@ -434,17 +444,21 @@ files:
434
444
  - spec/support/models/enum_caster.rb
435
445
  - spec/support/models/enum_converter.rb
436
446
  - spec/support/models/env_settings.rb
447
+ - spec/support/models/hash_app_client.rb
437
448
  - spec/support/models/hash_model.rb
438
449
  - spec/support/models/hash_person.rb
450
+ - spec/support/models/hash_settable.rb
439
451
  - spec/support/models/host_config.rb
440
452
  - spec/support/models/http_json_model.rb
441
453
  - spec/support/models/http_person.rb
442
454
  - spec/support/models/human.rb
443
455
  - spec/support/models/initial_valuer.rb
444
456
  - spec/support/models/job.rb
457
+ - spec/support/models/json_env_settings.rb
445
458
  - spec/support/models/login_config.rb
446
459
  - spec/support/models/login_configurable.rb
447
460
  - spec/support/models/math_caster.rb
461
+ - spec/support/models/math_env_settings.rb
448
462
  - spec/support/models/my_app_client.rb
449
463
  - spec/support/models/my_builder.rb
450
464
  - spec/support/models/my_class.rb
@@ -453,6 +467,7 @@ files:
453
467
  - spec/support/models/my_configurable.rb
454
468
  - spec/support/models/my_model.rb
455
469
  - spec/support/models/my_server_config.rb
470
+ - spec/support/models/non_default_app_client.rb
456
471
  - spec/support/models/open_options.rb
457
472
  - spec/support/models/person.rb
458
473
  - spec/support/models/purchase.rb
@@ -465,13 +480,14 @@ files:
465
480
  - spec/support/models/string_parser.rb
466
481
  - spec/support/models/tv.rb
467
482
  - spec/support/models/validator_builder.rb
483
+ - spec/support/models/yaml_file_settings.rb
468
484
  - spec/support/shared_examples/attribute_accessor.rb
469
485
  - spec/support/shared_examples/class_method_definition.rb
470
486
  - spec/support/shared_examples/config.rb
471
487
  - spec/support/shared_examples/config_factory.rb
472
- - spec/support/shared_examples/env_settable.rb
473
488
  - spec/support/shared_examples/instance_method_definition.rb
474
489
  - spec/support/shared_examples/model.rb
490
+ - spec/support/shared_examples/settable.rb
475
491
  - spec/support/shared_examples/sinclair.rb
476
492
  homepage: https://github.com/darthjee/sinclair
477
493
  licenses: []