progne_tapera-rspec 0.3 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 703d60e29272d8003351084b8aa39f54f10ff960
4
- data.tar.gz: 6e355a3424b7abc289df22646c162eef4b1eb4d5
3
+ metadata.gz: a200607828901259038a96c4d0ac0501cd7571a8
4
+ data.tar.gz: 9570505b495eaf94601bd19b28192cb9fd6ec7f2
5
5
  SHA512:
6
- metadata.gz: eb1953f468fd864ea4b2294f596129d1375ac880fe046df5578c51500473460a00ee34aae2a0f6d31a0aae9f629eace1d91a1230d4e2c2ff3ff42cbb2d152e37
7
- data.tar.gz: 41dbfe91403e8ab836925d779e3500485547f239b27cee5d426ac9e1c3584a7fc9248ab7ab0b7506137c10636dc0a6892c52846af767d8caabc6f889b1bc18b2
6
+ metadata.gz: ea7822cd576ad7264309ecb6dbf608604c47338aa18dffb25fc2f8e857ccd6cdff51a991cbfbfc6272048531a9233052aafe21bd743fae5b7ad8f6b92f3b00bd
7
+ data.tar.gz: 699fa92fac0d554426408c4861536947c71f18926172cdd59d11b07bf6507c04d8d30e5cbb9e218205c49133bf69701ef7a8f6fbdd60cd81f314f63b16863736
data/CHANGELOG.md CHANGED
@@ -8,3 +8,10 @@
8
8
 
9
9
  ## v0.3
10
10
  1. Improve the Progne Tapera RSpec module to require the Enum Code shared examples & the Code Attribute shared examples automatically
11
+
12
+ ## v0.3.1
13
+ 1. Progne Tapera Enum Config shared examples
14
+ 2. Progne Tapera Enum Code shared examples
15
+ 3. Deprecate the Enum Code shared examples
16
+ 4. Deprecate the Code Attribute shared examples
17
+ 5. Improve the Progne Tapera RSpec module to require the Progne Tapera Enum Config shared examples & the Progne Tapera Enum Code shared examples automatically
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- progne_tapera-rspec (0.2)
4
+ progne_tapera-rspec (0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -36,7 +36,7 @@ RSpec.describe Gender, type: :type do
36
36
  after :each do
37
37
  end
38
38
 
39
- it_behaves_like 'enum code', 3, [
39
+ it_behaves_like 'ProgneTapera::EnumConfig', 3, [
40
40
  { code: '1', name: 'male', localized_name: '男' },
41
41
  { code: '2', name: 'female', localized_name: '女' },
42
42
  { code: '9', name: 'not_specified', localized_name: '未指定' } ]
@@ -62,7 +62,7 @@ describe Person do
62
62
 
63
63
  context '#gender' do
64
64
  @person = Person.new
65
- it_behaves_like 'code attribute', @person, :gender, Gender
65
+ it_behaves_like 'ProgneTapera::EnumCode', @person, :gender, Gender
66
66
  end
67
67
 
68
68
  end
data/ROADMAP.md CHANGED
@@ -8,3 +8,10 @@
8
8
 
9
9
  ## v0.3
10
10
  1. Improve the Progne Tapera RSpec module to require the Enum Code shared examples & the Code Attribute shared examples automatically
11
+
12
+ ## v0.3.1
13
+ 1. Progne Tapera Enum Config shared examples
14
+ 2. Progne Tapera Enum Code shared examples
15
+ 3. Deprecate the Enum Code shared examples
16
+ 4. Deprecate the Code Attribute shared examples
17
+ 5. Improve the Progne Tapera RSpec module to require the Progne Tapera Enum Config shared examples & the Progne Tapera Enum Code shared examples automatically
@@ -1,6 +1,7 @@
1
1
  require "progne_tapera/rspec/version"
2
2
 
3
3
  require 'progne_tapera/rspec/enum_code_shared_examples'
4
+ require 'progne_tapera/rspec/enum_config_shared_examples'
4
5
  require 'progne_tapera/rspec/code_attribute_shared_examples'
5
6
 
6
7
  module ProgneTapera
@@ -1,5 +1,9 @@
1
+ # The following shared examples are deprecated.
2
+
1
3
  shared_examples 'code attribute' do |model, attribute_name, enum|
2
4
 
5
+ warn 'The "code attribute" shared examples is deprecated and will be removed since v1.0, please use "ProgneTapera::EnumCode" instead.'
6
+
3
7
  describe "##{attribute_name}" do
4
8
  it 'exists' do expect(model).to respond_to(attribute_name) end
5
9
  end
@@ -1,5 +1,59 @@
1
+ shared_examples 'ProgneTapera::EnumCode' do |model, attribute_name, enum|
2
+
3
+ describe "##{attribute_name}" do
4
+ it 'exists' do expect(model).to respond_to(attribute_name) end
5
+ end
6
+
7
+ describe "##{attribute_name}=" do
8
+
9
+ it 'exists' do expect(model).to respond_to("#{attribute_name}=") end
10
+
11
+ enum.each do |enum_item|
12
+ it "should be able to assign #{enum_item.inspect} and load by ##{attribute_name}" do
13
+ model.send "#{attribute_name}=", enum_item
14
+ expect(model.send attribute_name).to eq(enum_item)
15
+ end
16
+ it "should be able to assign #{enum_item.inspect} and load by ##{attribute_name}_code" do
17
+ model.send "#{attribute_name}=", enum_item
18
+ expect(model.send "#{attribute_name}_code").to eq(enum_item.code)
19
+ end
20
+ end
21
+
22
+ end
23
+
24
+ describe "##{attribute_name}_code" do
25
+
26
+ it 'exists' do expect(model).to respond_to("#{attribute_name}_code") end
27
+
28
+ end
29
+
30
+ describe "##{attribute_name}_code=" do
31
+
32
+ it 'exists' do expect(model).to respond_to("#{attribute_name}_code=") end
33
+
34
+ enum.each do |enum_item|
35
+ it "should be able to assign #{enum_item.code.inspect} and load by ##{attribute_name}" do
36
+ model.send "#{attribute_name}_code=", enum_item.code
37
+ expect(model.send attribute_name).to eq(enum_item)
38
+ end
39
+ it "should be able to assign #{enum_item.code.inspect} and load by ##{attribute_name}_code" do
40
+ model.send "#{attribute_name}_code=", enum_item.code
41
+ expect(model.send "#{attribute_name}_code").to eq(enum_item.code)
42
+ end
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+
50
+
51
+ # The shared examples are deprecated.
52
+
1
53
  shared_examples 'enum code' do |code_count, enum_list|
2
54
 
55
+ warn 'The "enum code" shared examples is deprecated and will be removed since v1.0, please use "ProgneTapera::EnumConfig" instead.'
56
+
3
57
  describe '.enum_name' do
4
58
  it 'exists' do expect(described_class).to respond_to(:enum_name) end
5
59
  end
@@ -0,0 +1,86 @@
1
+ shared_examples 'ProgneTapera::EnumConfig' do |code_count, enum_list|
2
+
3
+ describe '.enum_name' do
4
+ it 'exists' do expect(described_class).to respond_to(:enum_name) end
5
+ end
6
+
7
+ describe '.item_defined?' do
8
+ it 'exists' do expect(described_class).to respond_to(:item_defined?) end
9
+ end
10
+
11
+ describe '.add_item' do
12
+ it 'exists' do expect(described_class).to respond_to(:add_item) end
13
+ end
14
+
15
+ describe '.safe_add_item' do
16
+ it 'exists' do expect(described_class).to respond_to(:safe_add_item) end
17
+ end
18
+
19
+ describe '.enum_constants' do
20
+ it 'exists' do expect(described_class).to respond_to(:enum_constants) end
21
+ end
22
+
23
+ describe '.all' do
24
+ it 'exists' do expect(described_class).to respond_to(:all) end
25
+ it 'returns all values' do expect(described_class.all).to be_present end
26
+ it "returns #{code_count} items" do expect(described_class.all.length).to eq(code_count) end
27
+ end
28
+
29
+ describe '.selected' do
30
+ it 'exists' do expect(described_class).to respond_to(:selected) end
31
+ end
32
+
33
+ describe '.each' do
34
+ it 'exists' do expect(described_class).to respond_to(:each) end
35
+ end
36
+
37
+ describe '.form_options' do
38
+ it 'exists' do expect(described_class).to respond_to(:form_options) end
39
+ end
40
+
41
+ describe '.enum' do
42
+ it 'exists' do expect(described_class).to respond_to(:enum) end
43
+ end
44
+
45
+ describe '.overload_enum_i18n' do
46
+ it 'exists' do expect(described_class).to respond_to(:overload_enum_i18n) end
47
+ end
48
+
49
+ enum_list.each do |enum_item|
50
+
51
+ const_name = enum_item[:name].upcase
52
+
53
+ describe "::#{const_name}" do
54
+ before :each do @enum_item = described_class.const_get const_name end
55
+ it 'exists' do expect(@enum_item).to be_present end
56
+ enum_item.each do |key, value|
57
+ it "#{key.to_s.gsub('_', ' ')} is #{value}" do expect(@enum_item.send key.to_sym).to eq(value) end
58
+ end
59
+ end
60
+
61
+ describe '.lookup' do
62
+ it "should be able to find the #{enum_item[:name]} enum item per #{enum_item[:code]}" do
63
+ found_enum_item = described_class.lookup enum_item[:code]
64
+ expect(found_enum_item).to be_present
65
+ expect(found_enum_item.code).to eq(enum_item[:code])
66
+ expect(found_enum_item.name).to eq(enum_item[:name])
67
+ expect(found_enum_item.localized_name).to eq(enum_item[:localized_name])
68
+ end
69
+ end
70
+
71
+ end
72
+
73
+ #enum_list.each do |enum_item|
74
+ # it ".lookup('#{enum_item[:code]}')" do expect(described_class.lookup enum_item[:code]).to eq(described_class.const_get enum_item[:name].upcase) end
75
+ #end
76
+
77
+ #view_collection_mappings = {} if view_collection_mappings.nil?
78
+ #view_collection_mappings[:view_collection] = code_count
79
+ #view_collection_mappings.each do |view_collection, expected_count|
80
+ # describe ".#{view_collection}" do
81
+ # it 'exists' do expect(described_class).to respond_to(view_collection) end
82
+ # it "returns #{expected_count} items" do expect(described_class.send(view_collection).length).to eq(expected_count) end
83
+ # end
84
+ #end
85
+
86
+ end
@@ -1,5 +1,5 @@
1
1
  module ProgneTapera
2
2
  module RSpec
3
- VERSION = '0.3'
3
+ VERSION = '0.3.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: progne_tapera-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-29 00:00:00.000000000 Z
11
+ date: 2017-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,6 +76,7 @@ files:
76
76
  - lib/progne_tapera/rspec.rb
77
77
  - lib/progne_tapera/rspec/code_attribute_shared_examples.rb
78
78
  - lib/progne_tapera/rspec/enum_code_shared_examples.rb
79
+ - lib/progne_tapera/rspec/enum_config_shared_examples.rb
79
80
  - lib/progne_tapera/rspec/version.rb
80
81
  - progne_tapera-rspec.gemspec
81
82
  homepage: https://github.com/topbitdu/progne_tapera-rspec