incremental_factory_names 0.0.1 → 0.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
  SHA256:
3
- metadata.gz: c21d53485dfa0ef44383327fecb473837e0e1d183c515e8465b625ef4a94ac5b
4
- data.tar.gz: 90c38673209d41c0a09201ea8b6189baf8ddb31139960f0ea90767612427533f
3
+ metadata.gz: 6fac1a3752cf8d3611bccd5e9f5de944ef0e95e7b36639218b4eb4ec774f776f
4
+ data.tar.gz: 2f4c8c1073c1df531d557632a1d0d41c8fb74ad43d6c6919e85a7bbe7a01a4c5
5
5
  SHA512:
6
- metadata.gz: 5494c29ae2a7ba41e239373131bd47191ce85ef751b2425181e56f484fe29bdc0e7e0ee274289aa2ea318907863760e821a653249d1a9ee60f63d7e9c3caeed5
7
- data.tar.gz: 0042f0c31a3b0419e762a24f000723ec4104324fbde61e2a493342e581deb1331a91278c5ade700be64126e021ca3cf116690700595d5eb17624253dc83dc636
6
+ metadata.gz: 25d8391da43915665b1f97a659a815f0bd8db8a9239411034405344eb1a031b003b0a1942aa2e120fe00db85d1dacaa2a3c3848238790ff27086ed81bf144645
7
+ data.tar.gz: cea22287c816d3dcf20f22a2b7e836bfcbf4767e425d6ba2ade37dbe32c4f28dc681cc775b32bb6451fbf285dc5bf6ce8b530b4a84c7faab379744ebb9e7c75b
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # This gem helps generate incremental factory names for preventing randomly failure specs
1
+ # incremental_factory_names helps generate incremental factory names for preventing randomly failure specs
2
2
 
3
3
  ## Installation
4
4
 
@@ -36,16 +36,16 @@ and in any factory you need to have incremental names:
36
36
  ```ruby
37
37
  factory :user do
38
38
  ...
39
- sequence(:name) { |n| incremental_factory_name(number: n) } # returns 'User 001', 'User 002', etc
39
+ incremental_factory_name :name # returns 'User 001', 'User 002', etc
40
40
  ...
41
41
  ```
42
42
 
43
43
  with additional params:
44
44
  ```ruby
45
45
  ...
46
- sequence(:name) { |n| incremental_factory_name(number: n, name: 'Name') } # returns 'Name 001', 'Name 002', etc
46
+ incremental_factory_name :name, name: 'Name' # returns 'Name 001', 'Name 002', etc
47
47
  ...
48
- sequence(:name) { |n| incremental_factory_name(number: n, length: 5) } # returns 'User 00001', 'User 00002', etc
48
+ incremental_factory_name :name, length: 5 # returns 'User 00001', 'User 00002', etc
49
49
  ...
50
50
  ```
51
51
 
@@ -1,7 +1,11 @@
1
1
  module IncrementalFactoryNames
2
2
  DEFAULT_LENGTH = 3
3
3
 
4
- def incremental_factory_name(number:, name: factory_name, length: DEFAULT_LENGTH)
4
+ def incremental_factory_name(field_name, name: nil, length: DEFAULT_LENGTH)
5
+ sequence(field_name) { |number| field_value(number, name || factory_name, length) }
6
+ end
7
+
8
+ def field_value(number, name, length)
5
9
  "#{name} #{sprintf("%0#{length}d", number)}"
6
10
  end
7
11
 
@@ -1,3 +1,3 @@
1
1
  module IncrementalFactoryNames
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -1,29 +1,35 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'IncrementalFactoryNames' do
4
- let(:factory_user) { FactoryUser.new }
4
+ context 'simple' do
5
+ let(:user1) { build(:user) }
6
+ let(:user2) { build(:user) }
5
7
 
6
- it 'returns factory name with number' do
7
- result = factory_user.incremental_factory_name(number: 99)
8
-
9
- expect(result).to eq('Factory User 099')
8
+ it { expect(user1.nickname).to eq('User 001') }
9
+ it { expect(user2.nickname).to eq('User 002') }
10
10
  end
11
11
 
12
- it 'returns custom name with number' do
13
- result = factory_user.incremental_factory_name(number: 99, name: 'Another Factory User')
12
+ context 'with name' do
13
+ let(:user1) { build(:user, :with_name) }
14
+ let(:user2) { build(:user, :with_name) }
14
15
 
15
- expect(result).to eq('Another Factory User 099')
16
+ it { expect(user1.nickname).to eq('Nickname 001') }
17
+ it { expect(user2.nickname).to eq('Nickname 002') }
16
18
  end
17
19
 
18
- it 'returns factory name with number with sprint' do
19
- result = factory_user.incremental_factory_name(number: 99, length: 5)
20
+ context 'with length' do
21
+ let(:user1) { build(:user, :with_length) }
22
+ let(:user2) { build(:user, :with_length) }
20
23
 
21
- expect(result).to eq('Factory User 00099')
24
+ it { expect(user1.nickname).to eq('User 0001') }
25
+ it { expect(user2.nickname).to eq('User 0002') }
22
26
  end
23
27
 
24
- it 'returns custom name with number with sprint' do
25
- result = factory_user.incremental_factory_name(number: 99, name: 'Another Factory User', length: 5)
28
+ context 'with name and length' do
29
+ let(:user1) { build(:user, :with_name_and_length) }
30
+ let(:user2) { build(:user, :with_name_and_length) }
26
31
 
27
- expect(result).to eq('Another Factory User 00099')
32
+ it { expect(user1.nickname).to eq('Another Nickname 01') }
33
+ it { expect(user2.nickname).to eq('Another Nickname 02') }
28
34
  end
29
35
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,27 @@
1
1
  require 'incremental_factory_names'
2
+ require 'factory_bot'
2
3
 
3
- class FactoryUser
4
- include IncrementalFactoryNames
4
+ include FactoryBot::Syntax::Methods
5
+ include IncrementalFactoryNames
5
6
 
6
- def initialize
7
- @instance = self
7
+ class User
8
+ attr_accessor :nickname
9
+ end
10
+
11
+ FactoryBot.define do
12
+ factory :user do
13
+ incremental_factory_name :nickname
14
+ end
15
+
16
+ trait :with_name do
17
+ incremental_factory_name :nickname, name: 'Nickname'
18
+ end
19
+
20
+ trait :with_length do
21
+ incremental_factory_name :nickname, length: 4
22
+ end
23
+
24
+ trait :with_name_and_length do
25
+ incremental_factory_name :nickname, name: 'Another Nickname', length: 2
8
26
  end
9
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: incremental_factory_names
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ihor Voloshyn
@@ -14,45 +14,46 @@ dependencies:
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 3.8.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 3.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: factory_bot
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 5.0.2
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 5.0.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 12.3.3
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
55
- description: ''
54
+ version: 12.3.3
55
+ description: incremental_factory_names generates incremental factory names for preventing
56
+ randomly failure specs
56
57
  email: snick2510@gmail.com
57
58
  executables: []
58
59
  extensions: []