progne_tapera-rspec 0.1 → 0.2

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: 224d285d2ab817901610a26aff3d2e41c7baf2fe
4
- data.tar.gz: de27bbc77d5233bea681f367d7c4da779ead3acf
3
+ metadata.gz: df528bff47c45a3c68d221180ce546ded17f16b5
4
+ data.tar.gz: bbecaa73f186f6958793ae0cc5c756fb19688406
5
5
  SHA512:
6
- metadata.gz: c49d4a76d9ccb81c17925ae0c2b81fed091372084e6042ac299f80f4e57e9445f1e6e7a1eb64a79c168228ccfae3f94ceaea4f2bc2cf2ca4d93289246ef06b4d
7
- data.tar.gz: 77920c7e917484abec7de715b24cf2bd856ea888804ed5bfe77e1ab824ff9df1a40e6326e172a1308036ef6e6aa8ca39f8229ea8b74c9ccdeda261f4b08c2061
6
+ metadata.gz: b9c17ea0664fd4c3b98f015d21628ef8395c64a15312ea1c5c0d0ffe6bd277d153f9d6b12c35cb4df5e466975a58110027d2a2778da16f01cc616b8396bc4127
7
+ data.tar.gz: 53d73a19d36e997b839e00b1c7e27da5b64f7c6002738a1692d894e52838821cf4858972bb8ba0d75d8a2b7716c0f9271c0955795fec7c94f0dc712cb1c8b699
data/CHANGELOG.md CHANGED
@@ -2,3 +2,6 @@
2
2
 
3
3
  ## v0.1
4
4
  1. Enum Code shared examples
5
+
6
+ ## v0.2
7
+ 1. Code Attribute shared examples
data/Gemfile.lock ADDED
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ progne_tapera-rspec (0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.2.5)
10
+ rake (10.5.0)
11
+ rspec (3.5.0)
12
+ rspec-core (~> 3.5.0)
13
+ rspec-expectations (~> 3.5.0)
14
+ rspec-mocks (~> 3.5.0)
15
+ rspec-core (3.5.4)
16
+ rspec-support (~> 3.5.0)
17
+ rspec-expectations (3.5.0)
18
+ diff-lcs (>= 1.2.0, < 2.0)
19
+ rspec-support (~> 3.5.0)
20
+ rspec-mocks (3.5.0)
21
+ diff-lcs (>= 1.2.0, < 2.0)
22
+ rspec-support (~> 3.5.0)
23
+ rspec-support (3.5.0)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ bundler (~> 1.12)
30
+ progne_tapera-rspec!
31
+ rake (~> 10.0)
32
+ rspec (~> 3.0)
33
+
34
+ BUNDLED WITH
35
+ 1.12.5
data/README.md CHANGED
@@ -26,6 +26,7 @@ Add the following line into the ``spec/rails_helper.rb`` file:
26
26
 
27
27
  ```ruby
28
28
  require 'progne_tapera/rspec/enum_code_shared_examples'
29
+ require 'progne_tapera/rspec/code_attribute_shared_examples'
29
30
  ```
30
31
 
31
32
  Create the RSpec examples for your enum code (assume the enum code is Gender):
@@ -48,6 +49,29 @@ RSpec.describe Gender, type: :type do
48
49
  end
49
50
  ```
50
51
 
52
+ Create the RSpec examples for your model which has the #gender_code attribute (assume the model is Person):
53
+ ```ruby
54
+ # person.rb
55
+ class Person < ApplicationRecord
56
+ include Unidom::Common::ModelExtension
57
+ include ProgneTapera::EnumCode
58
+
59
+ code :gender # 这里将 #gender_code 字段和 Gender 枚举型集成起来。
60
+ end
61
+
62
+ # person_spec.rb
63
+ require 'rails_helper'
64
+
65
+ describe Person do
66
+
67
+ context '#gender' do
68
+ @person = Person.new
69
+ it_behaves_like 'code attribute', @person, :gender, Gender
70
+ end
71
+
72
+ end
73
+ ```
74
+
51
75
 
52
76
 
53
77
  ## Development
data/ROADMAP.md CHANGED
@@ -2,3 +2,6 @@
2
2
 
3
3
  ## v0.1
4
4
  1. Enum Code shared examples
5
+
6
+ ## v0.2
7
+ 1. Code Attribute shared examples
data/bin/console CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
3
+ require 'bundler/setup'
4
4
  require "progne_tapera/rspec"
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
@@ -0,0 +1,47 @@
1
+ shared_examples 'code attribute' 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
@@ -1,5 +1,5 @@
1
1
  module ProgneTapera
2
2
  module RSpec
3
- VERSION = "0.1"
3
+ VERSION = "0.2"
4
4
  end
5
5
  end
@@ -7,12 +7,12 @@ Gem::Specification.new do |spec|
7
7
  spec.name = 'progne_tapera-rspec'
8
8
  spec.version = ProgneTapera::RSpec::VERSION
9
9
  spec.authors = [ 'Topbit Du' ]
10
- spec.email = ["topbit.du@gmail.com"]
10
+ spec.email = [ 'topbit.du@gmail.com' ]
11
11
 
12
12
  spec.summary = %q{Progne Tapera RSpec 是为 Progne Tapera 设计的基于 RSpec 的共享测试用例。}
13
13
  spec.description = %q{Progne Tapera RSpec is a RSpec-based Shared Example for the Progne Tapera-based enum implementation. Progne Tapera RSpec 是为 Progne Tapera 设计的基于 RSpec 的共享测试用例。}
14
- spec.homepage = "https://github.com/topbitdu/progne_tapera-rspec"
15
- spec.license = "MIT"
14
+ spec.homepage = 'https://github.com/topbitdu/progne_tapera-rspec'
15
+ spec.license = 'MIT'
16
16
 
17
17
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
18
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -25,9 +25,9 @@ Gem::Specification.new do |spec|
25
25
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
26
  spec.bindir = "exe"
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
28
+ spec.require_paths = [ 'lib' ]
29
29
 
30
- spec.add_development_dependency "bundler", "~> 1.12"
30
+ spec.add_development_dependency 'bundler', '~> 1.12'
31
31
  spec.add_development_dependency "rake", "~> 10.0"
32
32
  spec.add_development_dependency "rspec", "~> 3.0"
33
33
 
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.1'
4
+ version: '0.2'
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-08 00:00:00.000000000 Z
11
+ date: 2016-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,7 @@ files:
66
66
  - CHANGELOG.md
67
67
  - CODE_OF_CONDUCT.md
68
68
  - Gemfile
69
+ - Gemfile.lock
69
70
  - LICENSE.txt
70
71
  - README.md
71
72
  - ROADMAP.md
@@ -73,6 +74,7 @@ files:
73
74
  - bin/console
74
75
  - bin/setup
75
76
  - lib/progne_tapera/rspec.rb
77
+ - lib/progne_tapera/rspec/code_attribute_shared_examples.rb
76
78
  - lib/progne_tapera/rspec/enum_code_shared_examples.rb
77
79
  - lib/progne_tapera/rspec/version.rb
78
80
  - progne_tapera-rspec.gemspec