progne_tapera-rspec 0.3 → 0.3.1

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
  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