zyra 0.0.2 → 1.0.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/README.md +67 -1
- data/config/yardstick.yml +7 -15
- data/lib/zyra/{builder.rb → creator.rb} +18 -49
- data/lib/zyra/exceptions.rb +3 -2
- data/lib/zyra/finder.rb +103 -0
- data/lib/zyra/finder_creator.rb +162 -0
- data/lib/zyra/registry.rb +179 -13
- data/lib/zyra/version.rb +1 -1
- data/lib/zyra.rb +130 -56
- data/spec/integration/readme/zyra_spec.rb +54 -0
- data/spec/integration/yard/zyra/registry_spec.rb +135 -0
- data/spec/integration/yard/zyra_spec.rb +128 -0
- data/spec/lib/zyra/creator_spec.rb +75 -0
- data/spec/lib/zyra/finder_creator_spec.rb +263 -0
- data/spec/lib/zyra/finder_spec.rb +117 -0
- data/spec/lib/zyra/registry_spec.rb +6 -92
- data/spec/lib/zyra_spec.rb +8 -144
- data/spec/spec_helper.rb +13 -0
- data/spec/support/factories/user.rb +9 -0
- data/spec/support/factory_bot.rb +7 -0
- data/spec/support/models/post.rb +5 -0
- data/spec/support/models/user.rb +1 -0
- data/spec/support/schema.rb +8 -0
- data/spec/support/shared_examples/registry/find_or_create.rb +130 -0
- data/spec/support/shared_examples/registry/on.rb +42 -0
- data/spec/support/shared_examples/registry/register.rb +54 -0
- data/zyra.gemspec +3 -1
- metadata +53 -12
- data/spec/lib/zyra/builder_spec.rb +0 -129
data/spec/lib/zyra_spec.rb
CHANGED
@@ -3,155 +3,19 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Zyra do
|
6
|
-
|
7
|
-
|
8
|
-
describe '.build' do
|
9
|
-
let(:model_class) { User }
|
10
|
-
let(:key) { :user }
|
11
|
-
|
12
|
-
context 'when a builder has not been registered' do
|
13
|
-
it do
|
14
|
-
expect { described_class.build(key) }
|
15
|
-
.to raise_error(Zyra::Exceptions::BuilderNotRegistered)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context 'when a builder has been registered' do
|
20
|
-
before do
|
21
|
-
described_class.register(model_class)
|
22
|
-
end
|
23
|
-
|
24
|
-
it do
|
25
|
-
expect(described_class.build(key)).to be_a(model_class)
|
26
|
-
end
|
27
|
-
|
28
|
-
it do
|
29
|
-
expect(described_class.build(key))
|
30
|
-
.not_to be_persisted
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'when attributes are given' do
|
34
|
-
let(:name) { SecureRandom.hex(10) }
|
6
|
+
let(:registry) { described_class }
|
35
7
|
|
36
|
-
|
37
|
-
expect(described_class.build(key, name: name).name)
|
38
|
-
.to eq(name)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'when a block is given' do
|
43
|
-
let(:name) { SecureRandom.hex(10) }
|
44
|
-
|
45
|
-
it 'initializes the model with the given attribute' do
|
46
|
-
value = name
|
47
|
-
expect(described_class.build(key) { |model| model.name = value }.name)
|
48
|
-
.to eq(name)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context 'when building has an after build handler' do
|
53
|
-
let(:name) { SecureRandom.hex(10) }
|
54
|
-
|
55
|
-
before do
|
56
|
-
value = name
|
57
|
-
described_class.after(:user, :build) do |model|
|
58
|
-
model.name = value
|
59
|
-
end
|
60
|
-
end
|
8
|
+
before { described_class.reset }
|
61
9
|
|
62
|
-
|
63
|
-
|
64
|
-
.to eq(name)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
10
|
+
describe '.register' do
|
11
|
+
it_behaves_like 'a method that registers a finder creator'
|
68
12
|
end
|
69
13
|
|
70
|
-
describe '.
|
71
|
-
|
72
|
-
let(:key) { :user }
|
73
|
-
|
74
|
-
context 'when a builder has not been registered' do
|
75
|
-
it do
|
76
|
-
expect { described_class.create(key) }
|
77
|
-
.to raise_error(Zyra::Exceptions::BuilderNotRegistered)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context 'when a builder has been registered' do
|
82
|
-
before do
|
83
|
-
described_class.register(model_class)
|
84
|
-
end
|
85
|
-
|
86
|
-
it do
|
87
|
-
expect(described_class.create(key)).to be_a(model_class)
|
88
|
-
end
|
89
|
-
|
90
|
-
it do
|
91
|
-
expect(described_class.create(key))
|
92
|
-
.to be_persisted
|
93
|
-
end
|
94
|
-
|
95
|
-
context 'when attributes are given' do
|
96
|
-
let(:name) { SecureRandom.hex(10) }
|
97
|
-
|
98
|
-
it 'initializes the model with the given attribute' do
|
99
|
-
expect(described_class.create(key, name: name).name)
|
100
|
-
.to eq(name)
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
context 'when a block is given' do
|
105
|
-
let(:name) { SecureRandom.hex(10) }
|
106
|
-
|
107
|
-
it 'initializes the model with the given attribute' do
|
108
|
-
value = name
|
109
|
-
model = described_class.create(key) { |mdl| mdl.name = value }
|
110
|
-
expect(model.name)
|
111
|
-
.to eq(name)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
context 'when building has an after build handler' do
|
116
|
-
let(:name) { SecureRandom.hex(10) }
|
117
|
-
|
118
|
-
before do
|
119
|
-
value = name
|
120
|
-
described_class.after(:user, :build) do |model|
|
121
|
-
model.name = value
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'runs the event handler' do
|
126
|
-
expect(described_class.create(key) .name)
|
127
|
-
.to eq(name)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
14
|
+
describe '.on' do
|
15
|
+
it_behaves_like 'a method that registers an event handler'
|
131
16
|
end
|
132
17
|
|
133
|
-
describe '.
|
134
|
-
|
135
|
-
let(:key) { :user }
|
136
|
-
let(:name) { SecureRandom.hex(10) }
|
137
|
-
|
138
|
-
context 'when a builder has been registered' do
|
139
|
-
before do
|
140
|
-
described_class.register(model_class)
|
141
|
-
end
|
142
|
-
|
143
|
-
it 'register a handler to be ran after an event' do
|
144
|
-
value = name
|
145
|
-
|
146
|
-
expect { described_class.after(key, :build) { |m| m.name = value } }
|
147
|
-
.to change { described_class.build(key).name }
|
148
|
-
.from(nil).to(name)
|
149
|
-
end
|
150
|
-
|
151
|
-
it do
|
152
|
-
expect(described_class.after(key, :build) {})
|
153
|
-
.to be_a(Zyra::Builder)
|
154
|
-
end
|
155
|
-
end
|
18
|
+
describe '.find_or_create' do
|
19
|
+
it_behaves_like 'a method that returns or create a model'
|
156
20
|
end
|
157
21
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,6 +10,8 @@ SimpleCov.start 'gem'
|
|
10
10
|
|
11
11
|
require 'zyra'
|
12
12
|
require 'pry-nav'
|
13
|
+
require 'factory_bot'
|
14
|
+
require 'database_cleaner'
|
13
15
|
|
14
16
|
require 'active_record'
|
15
17
|
ActiveRecord::Base.establish_connection(
|
@@ -26,6 +28,17 @@ RSpec.configure do |config|
|
|
26
28
|
config.filter_run_excluding :integration unless ENV['ALL']
|
27
29
|
|
28
30
|
config.order = 'random'
|
31
|
+
|
32
|
+
config.before(:suite) do
|
33
|
+
DatabaseCleaner.strategy = :transaction
|
34
|
+
DatabaseCleaner.clean_with(:truncation)
|
35
|
+
end
|
36
|
+
|
37
|
+
config.around do |example|
|
38
|
+
DatabaseCleaner.cleaning do
|
39
|
+
example.run
|
40
|
+
end
|
41
|
+
end
|
29
42
|
end
|
30
43
|
|
31
44
|
RSpec::Matchers.define_negated_matcher :not_change, :change
|
data/spec/support/models/user.rb
CHANGED
data/spec/support/schema.rb
CHANGED
@@ -6,5 +6,13 @@ ActiveRecord::Schema.define do
|
|
6
6
|
create_table :users, force: true do |t|
|
7
7
|
t.string :name
|
8
8
|
t.string :email
|
9
|
+
t.string :password
|
10
|
+
t.string :reference
|
11
|
+
end
|
12
|
+
|
13
|
+
create_table :posts, force: true do |t|
|
14
|
+
t.integer :user_id
|
15
|
+
t.string :name
|
16
|
+
t.text :content
|
9
17
|
end
|
10
18
|
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
shared_examples 'a method that returns or create a model' do
|
4
|
+
let(:key) { :user }
|
5
|
+
let(:email) { SecureRandom.hex(10) }
|
6
|
+
let(:model_class) { User }
|
7
|
+
|
8
|
+
let(:attributes) do
|
9
|
+
{
|
10
|
+
name: 'Some Name',
|
11
|
+
email: email,
|
12
|
+
password: 'SomePassword'
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when the model has not been registered' do
|
17
|
+
it do
|
18
|
+
expect { registry.find_or_create(key, attributes) }
|
19
|
+
.to raise_error(Zyra::Exceptions::NotRegistered)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when the model has been registered' do
|
24
|
+
before do
|
25
|
+
registry.register(model_class, find_by: :email)
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when there is no entry in the database' do
|
29
|
+
it do
|
30
|
+
expect(registry.find_or_create(key, attributes))
|
31
|
+
.to be_a(model_class)
|
32
|
+
end
|
33
|
+
|
34
|
+
it do
|
35
|
+
expect { registry.find_or_create(key, attributes) }
|
36
|
+
.to change(model_class, :count)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when the entry is there with the same attributes' do
|
41
|
+
let!(:user) { create(:user, **attributes) }
|
42
|
+
|
43
|
+
it 'returns the user' do
|
44
|
+
expect(registry.find_or_create(key, attributes)).to eq(user)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when the entry is there with other attributes' do
|
49
|
+
let!(:user) { create(:user, email: email) }
|
50
|
+
|
51
|
+
it 'returns the user' do
|
52
|
+
expect(registry.find_or_create(key, attributes)).to eq(user)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when there is another entry' do
|
57
|
+
before { create(:user) }
|
58
|
+
|
59
|
+
it 'returns a new model' do
|
60
|
+
expect(registry.find_or_create(key, attributes))
|
61
|
+
.to be_a(model_class)
|
62
|
+
end
|
63
|
+
|
64
|
+
it do
|
65
|
+
expect { registry.find_or_create(key, attributes) }
|
66
|
+
.to change(model_class, :count)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when the keys is set as string' do
|
71
|
+
let(:keys) { 'email' }
|
72
|
+
let!(:user) { create(:user, **attributes) }
|
73
|
+
|
74
|
+
it 'finds the user the same way' do
|
75
|
+
expect(registry.find_or_create(key, attributes)).to eq(user)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'when the attributes have string keys' do
|
80
|
+
let(:attributes) { { 'email' => email } }
|
81
|
+
let!(:user) { create(:user, **attributes) }
|
82
|
+
|
83
|
+
it 'finds the user the same way' do
|
84
|
+
expect(registry.find_or_create(key, attributes)).to eq(user)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'when there is an event handler and it is triggered' do
|
89
|
+
let(:name) { 'new_name' }
|
90
|
+
|
91
|
+
let!(:user) { create(:user, **attributes) }
|
92
|
+
|
93
|
+
before do
|
94
|
+
new_name = name
|
95
|
+
|
96
|
+
registry.on(:user, :found) do |model|
|
97
|
+
model.update(name: new_name)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'runs the event after the model was found' do
|
102
|
+
expect { registry.find_or_create(key, attributes) }
|
103
|
+
.to change { user.reload.name }
|
104
|
+
.to(name)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context 'when there is an event handler and it is not triggered' do
|
109
|
+
let(:name) { 'new_name' }
|
110
|
+
|
111
|
+
before do
|
112
|
+
new_name = name
|
113
|
+
|
114
|
+
registry.on(:user, :found) do |model|
|
115
|
+
model.update(name: new_name)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
it do
|
120
|
+
expect(registry.find_or_create(key, attributes))
|
121
|
+
.to be_a(model_class)
|
122
|
+
end
|
123
|
+
|
124
|
+
it do
|
125
|
+
expect { registry.find_or_create(key, attributes) }
|
126
|
+
.to change(model_class, :count)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
shared_examples 'a method that registers an event handler' do
|
4
|
+
let(:model_class) { User }
|
5
|
+
let(:key) { :user }
|
6
|
+
let(:name) { SecureRandom.hex(10) }
|
7
|
+
|
8
|
+
let(:attributes) do
|
9
|
+
{
|
10
|
+
name: 'Some Name',
|
11
|
+
email: 'someemail@srv.com',
|
12
|
+
password: 'SomePassword'
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when a creator has not been registered' do
|
17
|
+
it do
|
18
|
+
expect { registry.on(key, :found) {} }
|
19
|
+
.to raise_error(Zyra::Exceptions::NotRegistered)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when a creator has been registered' do
|
24
|
+
before do
|
25
|
+
create(:user, **attributes)
|
26
|
+
registry.register(model_class, find_by: :email)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'register a handler to be ran after an event' do
|
30
|
+
value = name
|
31
|
+
|
32
|
+
expect { registry.on(key, :found) { |m| m.name = value } }
|
33
|
+
.to change { registry.find_or_create(key, attributes).name }
|
34
|
+
.from('Some Name').to(name)
|
35
|
+
end
|
36
|
+
|
37
|
+
it do
|
38
|
+
expect(registry.on(key, :build) {})
|
39
|
+
.to be_a(Zyra::FinderCreator)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
shared_examples 'a method that registers a finder creator' do
|
4
|
+
let(:recovery_key) { [key.to_s, key.to_sym].sample }
|
5
|
+
let(:attributes) { { email: 'email@srv.com' } }
|
6
|
+
|
7
|
+
context 'when providing symbol alias' do
|
8
|
+
let(:key) { :user_alias }
|
9
|
+
|
10
|
+
it 'creates a creator for the given class' do
|
11
|
+
expect(registry.register(User, key, find_by: :email))
|
12
|
+
.to eq(Zyra::FinderCreator.new(User, [:email]))
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'register creator under the key' do
|
16
|
+
registry.register(User, key, find_by: :email)
|
17
|
+
|
18
|
+
expect(registry.find_or_create(recovery_key, attributes))
|
19
|
+
.to be_a(User)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when providing string alias' do
|
24
|
+
let(:key) { 'user' }
|
25
|
+
|
26
|
+
it 'creates a creator for the given class' do
|
27
|
+
expect(registry.register(User, key, find_by: :email))
|
28
|
+
.to eq(Zyra::FinderCreator.new(User, [:email]))
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'register creator under the key' do
|
32
|
+
registry.register(User, key, find_by: :email)
|
33
|
+
|
34
|
+
expect(registry.find_or_create(recovery_key, attributes))
|
35
|
+
.to be_a(User)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when not providing an alias' do
|
40
|
+
let(:key) { :user }
|
41
|
+
|
42
|
+
it 'creates a creator for the given class' do
|
43
|
+
expect(registry.register(User, find_by: :email))
|
44
|
+
.to eq(Zyra::FinderCreator.new(User, [:email]))
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'register creator under the correct key' do
|
48
|
+
registry.register(User, key, find_by: :email)
|
49
|
+
|
50
|
+
expect(registry.find_or_create(recovery_key, attributes))
|
51
|
+
.to be_a(User)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/zyra.gemspec
CHANGED
@@ -19,11 +19,13 @@ Gem::Specification.new do |gem|
|
|
19
19
|
gem.test_files = gem.files.grep(%r{^(test|gem|features)/})
|
20
20
|
gem.require_paths = ['lib']
|
21
21
|
|
22
|
+
gem.add_runtime_dependency 'activesupport', '~> 5.2.0'
|
22
23
|
gem.add_runtime_dependency 'jace', '>= 0.1.1'
|
23
|
-
gem.add_runtime_dependency 'sinclair', '>= 1.8.0'
|
24
24
|
|
25
25
|
gem.add_development_dependency 'activerecord', '5.2.8.1'
|
26
26
|
gem.add_development_dependency 'bundler', '2.3.20'
|
27
|
+
gem.add_development_dependency 'database_cleaner', '1.8.3'
|
28
|
+
gem.add_development_dependency 'factory_bot', '6.2.1'
|
27
29
|
gem.add_development_dependency 'pry', '0.14.1'
|
28
30
|
gem.add_development_dependency 'pry-nav', '1.0.0'
|
29
31
|
gem.add_development_dependency 'rake', '13.0.1'
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zyra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DarthJee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.2.0
|
20
20
|
type: :runtime
|
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:
|
26
|
+
version: 5.2.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: jace
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 0.1.1
|
34
34
|
type: :runtime
|
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: 1.
|
40
|
+
version: 0.1.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: activerecord
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,34 @@ dependencies:
|
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 2.3.20
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: database_cleaner
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.8.3
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.8.3
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: factory_bot
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 6.2.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 6.2.1
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: pry
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -314,20 +342,33 @@ files:
|
|
314
342
|
- config/yardstick.yml
|
315
343
|
- docker-compose.yml
|
316
344
|
- lib/zyra.rb
|
317
|
-
- lib/zyra/
|
345
|
+
- lib/zyra/creator.rb
|
318
346
|
- lib/zyra/exceptions.rb
|
347
|
+
- lib/zyra/finder.rb
|
348
|
+
- lib/zyra/finder_creator.rb
|
319
349
|
- lib/zyra/registry.rb
|
320
350
|
- lib/zyra/version.rb
|
321
351
|
- spec/integration/readme/.keep
|
352
|
+
- spec/integration/readme/zyra_spec.rb
|
322
353
|
- spec/integration/yard/.keep
|
323
|
-
- spec/
|
354
|
+
- spec/integration/yard/zyra/registry_spec.rb
|
355
|
+
- spec/integration/yard/zyra_spec.rb
|
356
|
+
- spec/lib/zyra/creator_spec.rb
|
357
|
+
- spec/lib/zyra/finder_creator_spec.rb
|
358
|
+
- spec/lib/zyra/finder_spec.rb
|
324
359
|
- spec/lib/zyra/registry_spec.rb
|
325
360
|
- spec/lib/zyra_spec.rb
|
326
361
|
- spec/spec_helper.rb
|
362
|
+
- spec/support/factories/user.rb
|
363
|
+
- spec/support/factory_bot.rb
|
327
364
|
- spec/support/models/.keep
|
365
|
+
- spec/support/models/post.rb
|
328
366
|
- spec/support/models/user.rb
|
329
367
|
- spec/support/schema.rb
|
330
368
|
- spec/support/shared_examples/.keep
|
369
|
+
- spec/support/shared_examples/registry/find_or_create.rb
|
370
|
+
- spec/support/shared_examples/registry/on.rb
|
371
|
+
- spec/support/shared_examples/registry/register.rb
|
331
372
|
- zyra.gemspec
|
332
373
|
- zyra.jpg
|
333
374
|
homepage: https://github.com/darthjee/zyra
|