hydramata-core 0.1.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 +7 -0
- data/.gitignore +15 -0
- data/.hound.yml +818 -0
- data/.rspec +2 -0
- data/.travis.yml +20 -0
- data/CONTRIBUTING.md +220 -0
- data/Gemfile +34 -0
- data/Guardfile +36 -0
- data/LICENSE +15 -0
- data/README.md +13 -0
- data/Rakefile +40 -0
- data/bin/rails +12 -0
- data/fs +3 -0
- data/gemfiles/rails4.1.gemfile +12 -0
- data/gemfiles/rails4.gemfile +13 -0
- data/hydramata-core.gemspec +35 -0
- data/lib/hydramata-core.rb +1 -0
- data/lib/hydramata/configuration.rb +17 -0
- data/lib/hydramata/core.rb +42 -0
- data/lib/hydramata/core/named_callbacks.rb +24 -0
- data/lib/hydramata/core/railtie.rb +14 -0
- data/lib/hydramata/core/runner.rb +58 -0
- data/lib/hydramata/core/translator.rb +72 -0
- data/lib/hydramata/core/version.rb +5 -0
- data/lib/hydramata/exceptions.rb +4 -0
- data/lib/hydramata/services.rb +21 -0
- data/lib/hydramata_core.rb +2 -0
- data/lib/tasks/hydramata_mecha_tasks.rake +4 -0
- data/run_each_spec_in_isolation +11 -0
- data/script/analyzer.rb +124 -0
- data/script/fast_specs +22 -0
- data/spec/README.md +10 -0
- data/spec/features/translation_services_spec.rb +35 -0
- data/spec/fixtures/core.translations.yml +8 -0
- data/spec/lib/hydramata-translations_spec.rb +7 -0
- data/spec/lib/hydramata/configuration_spec.rb +38 -0
- data/spec/lib/hydramata/core/named_callbacks_spec.rb +30 -0
- data/spec/lib/hydramata/core/runner_spec.rb +45 -0
- data/spec/lib/hydramata/core/translator_spec.rb +94 -0
- data/spec/lib/hydramata/services_spec.rb +27 -0
- data/spec/spec_fast_helper.rb +33 -0
- metadata +164 -0
data/spec/README.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
Congratulations, you are reading the README of the specs.
|
2
|
+
|
3
|
+
Why is this here? Because specs are an important subject.
|
4
|
+
|
5
|
+
One of my development foci for Hydramata::Core has been a focus on keeping the test suite's runtime healthy. Yes, each spec that I write adds time to the test suite, but I want that to be a linear growth.
|
6
|
+
|
7
|
+
In this directory you will find several files with filename pattern `spec_*_helper.rb`.
|
8
|
+
As I've worked through specs, my goal has been to use the fastest spec helper
|
9
|
+
possible.
|
10
|
+
This typically means striving to use the `spec_fast_helper.rb`, but acknowledging that may not be feasible.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_fast_helper'
|
2
|
+
require 'i18n'
|
3
|
+
require 'hydramata/core/translator'
|
4
|
+
|
5
|
+
module Hydramata
|
6
|
+
module Core
|
7
|
+
describe 'Translation services' do
|
8
|
+
|
9
|
+
it 'allows overriding the :base_scope and nested lookup of scopes' do
|
10
|
+
result = Translator.translate('my_message_key', base_scope: ['other'], scopes: ['nested'], name: 'Jeremy')
|
11
|
+
expect(result).to eq('Thanks but no thanks Jeremy!')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'has a default :base_scope' do
|
15
|
+
result = Translator.translate('my_message_key', name: 'Jeremy')
|
16
|
+
expect(result).to eq('Thanks Jeremy!')
|
17
|
+
end
|
18
|
+
|
19
|
+
around do |example|
|
20
|
+
begin
|
21
|
+
# @TODO - The structure of the hash is not ideal. The order of keys is
|
22
|
+
# somewhat counter-intuitive.
|
23
|
+
old_backend = I18n.backend
|
24
|
+
I18n.backend = old_backend.clone
|
25
|
+
core = Psych.load_file(File.expand_path('../../fixtures/core.translations.yml', __FILE__))
|
26
|
+
I18n.backend.store_translations(:en, core.fetch('en'))
|
27
|
+
example.run
|
28
|
+
ensure
|
29
|
+
I18n.backend = old_backend
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_fast_helper'
|
2
|
+
require 'active_support/lazy_load_hooks'
|
3
|
+
|
4
|
+
module Hydramata
|
5
|
+
class Configuration
|
6
|
+
end
|
7
|
+
|
8
|
+
module MockConfiguration
|
9
|
+
end
|
10
|
+
|
11
|
+
describe 'Configuration' do
|
12
|
+
it 'allows loading of additional modules' do
|
13
|
+
expect do
|
14
|
+
ActiveSupport.on_load(:hydramata_configuration) do
|
15
|
+
include MockConfiguration
|
16
|
+
end
|
17
|
+
require 'hydramata/configuration'
|
18
|
+
end.to change { Configuration.included_modules.include?(MockConfiguration) }.from(false).to(true)
|
19
|
+
end
|
20
|
+
|
21
|
+
context '#translator' do
|
22
|
+
subject { Configuration.new }
|
23
|
+
it 'defaults to something that will translate' do
|
24
|
+
expect(subject.translator).to respond_to(:translate)
|
25
|
+
end
|
26
|
+
it 'can be overridden by something that will translate' do
|
27
|
+
new_translator = double(translate: true)
|
28
|
+
expect { subject.translator = new_translator }.
|
29
|
+
to change { subject.translator }.
|
30
|
+
to(new_translator)
|
31
|
+
end
|
32
|
+
it 'requires a translator to have the proper methods' do
|
33
|
+
new_translator = double
|
34
|
+
expect { subject.translator = new_translator }.to raise_error
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_fast_helper'
|
2
|
+
require 'hydramata/core/named_callbacks'
|
3
|
+
|
4
|
+
module Hydramata
|
5
|
+
module Core
|
6
|
+
describe NamedCallbacks do
|
7
|
+
Given(:named_callback) { described_class.new }
|
8
|
+
Given(:context) { [ ] }
|
9
|
+
Given { named_callback.my_named_callback { |*a| context.replace(a) } }
|
10
|
+
|
11
|
+
describe "with a named callback" do
|
12
|
+
Given(:callback_name) { :my_named_callback }
|
13
|
+
When { named_callback.call(callback_name, 'a',:hello) }
|
14
|
+
Then { context == ['a', :hello] }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "with a named callback called by a string" do
|
18
|
+
Given(:callback_name) { 'my_named_callback' }
|
19
|
+
When { named_callback.call(callback_name, 'a',:hello) }
|
20
|
+
Then { context == ['a', :hello] }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "with a undeclared callback" do
|
24
|
+
When(:result) { named_callback.call(:undeclared_callback, 1, 2, 3) }
|
25
|
+
Then { result }
|
26
|
+
Then { context == [] }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_fast_helper'
|
2
|
+
require 'hydramata/core/runner'
|
3
|
+
|
4
|
+
module Hydramata
|
5
|
+
module Core
|
6
|
+
|
7
|
+
describe Runner do
|
8
|
+
Given(:context) { double(invoked: true, services: services) }
|
9
|
+
Given(:services) { double('Services') }
|
10
|
+
Given(:runner) {
|
11
|
+
described_class.new(context) do |on|
|
12
|
+
on.success { |a, b| context.invoked("SUCCESS", a, b) }
|
13
|
+
on.failure { |a, b| context.invoked("FAILURE", a, b) }
|
14
|
+
on.other { |a, b| context.invoked("OTHER", a, b) }
|
15
|
+
end
|
16
|
+
}
|
17
|
+
|
18
|
+
Invariant { runner.context == context }
|
19
|
+
|
20
|
+
context '#services' do
|
21
|
+
it 'delegates to the context' do
|
22
|
+
expect(runner.services).to eq(services)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
context "#run" do
|
26
|
+
it 'is an abstract method' do
|
27
|
+
expect { runner.run }.to raise_error(NotImplementedError)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "calling other" do
|
32
|
+
When(:result) { runner.callback(:other, :first, :second) }
|
33
|
+
Then { expect(context).to have_received(:invoked).with("OTHER", :first, :second) }
|
34
|
+
Then { result == [:first, :second] }
|
35
|
+
end
|
36
|
+
|
37
|
+
context "calling unknown" do
|
38
|
+
When(:result) { runner.callback(:unknown, :first, :second) }
|
39
|
+
Then { expect(context).to_not have_received(:invoked) }
|
40
|
+
Then { result == [:first, :second] }
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'spec_fast_helper'
|
2
|
+
require 'hydramata/core/translator'
|
3
|
+
|
4
|
+
module Hydramata
|
5
|
+
module Core
|
6
|
+
describe Translator do
|
7
|
+
subject do
|
8
|
+
described_class.new(
|
9
|
+
base_scope: base_scope,
|
10
|
+
translation_service: translation_service,
|
11
|
+
translation_service_error: translation_service_error
|
12
|
+
)
|
13
|
+
end
|
14
|
+
let(:base_scope) { ['hydramata', 'core'] }
|
15
|
+
let(:scopes) { [['grandparent', 'parent'], ['grandparent']] }
|
16
|
+
let(:translation_service) { double('TranslationService', translate: true) }
|
17
|
+
let(:translation_service_error) { ArgumentError }
|
18
|
+
|
19
|
+
context '#translate' do
|
20
|
+
it 'passes options to the default rendering' do
|
21
|
+
expect(translation_service).to receive(:translate).
|
22
|
+
with('child', scope: base_scope, default: 'default').
|
23
|
+
ordered.
|
24
|
+
and_return('With Default')
|
25
|
+
|
26
|
+
expect(subject.translate('child', default: 'default')).to eq('With Default')
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'swallows defaults except on the final rendering' do
|
30
|
+
scopes = [['parent']]
|
31
|
+
expect(translation_service).to receive(:translate).
|
32
|
+
with('child', scope: (base_scope + scopes[0]), raise: true, other_key: 'other').
|
33
|
+
ordered.
|
34
|
+
and_raise(translation_service_error)
|
35
|
+
expect(translation_service).to receive(:translate).
|
36
|
+
with('child', scope: base_scope, other_key: 'other', default: 'Shine On').
|
37
|
+
ordered.
|
38
|
+
and_return('My Work Type')
|
39
|
+
expect(subject.translate('child', scopes: scopes, other_key: 'other', default: 'Shine On'))
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'attempts to translate through each scope then finally via the base scope' do
|
43
|
+
expect(translation_service).to receive(:translate).
|
44
|
+
with('child', scope: (base_scope + scopes[0]), raise: true, other_key: 'other').
|
45
|
+
ordered.
|
46
|
+
and_raise(translation_service_error)
|
47
|
+
expect(translation_service).to receive(:translate).
|
48
|
+
with('child', scope: (base_scope + scopes[1]), raise: true, other_key: 'other').
|
49
|
+
ordered.
|
50
|
+
and_raise(translation_service_error)
|
51
|
+
expect(translation_service).to receive(:translate).
|
52
|
+
with('child', scope: base_scope, other_key: 'other').
|
53
|
+
ordered.
|
54
|
+
and_return('My Work Type')
|
55
|
+
|
56
|
+
expect(subject.translate('child', scopes: scopes, other_key: 'other')).to eq('My Work Type')
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'translates through each scope until it finds a match then returns without processing more generic case' do
|
60
|
+
expect(translation_service).to receive(:translate).
|
61
|
+
with('child', scope: (base_scope + scopes[0]), raise: true).
|
62
|
+
ordered.
|
63
|
+
and_raise(translation_service_error)
|
64
|
+
expect(translation_service).to receive(:translate).
|
65
|
+
with('child', scope: (base_scope + scopes[1]), raise: true).
|
66
|
+
ordered.
|
67
|
+
and_return('Found Grandparent')
|
68
|
+
expect(translation_service).to_not receive(:translate).
|
69
|
+
with('child', scope: base_scope)
|
70
|
+
|
71
|
+
expect(subject.translate('child', scopes: scopes)).to eq('Found Grandparent')
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'translates through each scope until it finds a match then returns without processing more generic case' do
|
75
|
+
expect(translation_service).to receive(:translate).
|
76
|
+
with('child', scope: (base_scope + scopes[0]), raise: true).
|
77
|
+
ordered.
|
78
|
+
and_raise(translation_service_error)
|
79
|
+
expect(translation_service).to receive(:translate).
|
80
|
+
with('child', scope: (base_scope + scopes[1]), raise: true).
|
81
|
+
ordered.
|
82
|
+
and_raise(translation_service_error)
|
83
|
+
expect(translation_service).to_not receive(:translate).
|
84
|
+
with('child', scope: base_scope).
|
85
|
+
ordered.
|
86
|
+
and_raise(translation_service_error)
|
87
|
+
|
88
|
+
expect { subject.translate('child', scopes: scopes) }.to raise_error
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_fast_helper'
|
2
|
+
require 'active_support/lazy_load_hooks'
|
3
|
+
module Hydramata
|
4
|
+
class Services
|
5
|
+
end
|
6
|
+
|
7
|
+
module MockServices
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'Services' do
|
11
|
+
it 'allows loading of additional modules' do
|
12
|
+
expect do
|
13
|
+
ActiveSupport.on_load(:hydramata_services) do
|
14
|
+
include MockServices
|
15
|
+
end
|
16
|
+
require 'hydramata/services'
|
17
|
+
end.to change { Services.included_modules.include?(MockServices) }.from(false).to(true)
|
18
|
+
end
|
19
|
+
|
20
|
+
context '#translator' do
|
21
|
+
Given(:context) { double('Context') }
|
22
|
+
Given(:service) { Services.new(context) }
|
23
|
+
Then { service.context == context }
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# This helper provides at least a ~x3 speed increase over the 'spec_slow_helper'.
|
2
|
+
#
|
3
|
+
# The idea being that some tests have very few dependencies.
|
4
|
+
#
|
5
|
+
# Example:
|
6
|
+
# $ time rspec -r spec/spec_fast_helper.rb spec/lib/hydramata-work_spec.rb
|
7
|
+
#
|
8
|
+
# real 0m1.188s
|
9
|
+
# user 0m0.979s
|
10
|
+
# sys 0m0.204s
|
11
|
+
#
|
12
|
+
# Compared to `rspec -r spec/spec_slow_helper.rb ./path/to/spec.rb`
|
13
|
+
#
|
14
|
+
# Example:
|
15
|
+
# $ time rspec -r spec/spec_slow_helper.rb spec/lib/hydramata-work_spec.rb
|
16
|
+
#
|
17
|
+
# real 0m3.491s
|
18
|
+
# user 0m2.800s
|
19
|
+
# sys 0m0.667s
|
20
|
+
|
21
|
+
require 'rspec-given'
|
22
|
+
unless defined?(Rails) # If we are in a Rails context this is overkill.
|
23
|
+
Dir[File.expand_path('../../app/*', __FILE__)].each do |dir|
|
24
|
+
$LOAD_PATH << dir
|
25
|
+
end
|
26
|
+
$LOAD_PATH << File.expand_path('../../lib', __FILE__)
|
27
|
+
|
28
|
+
unless defined?(require_dependency)
|
29
|
+
def require_dependency(*files)
|
30
|
+
require *files
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,164 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hydramata-core
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeremy Friesen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec-given
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sqlite3
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubydora
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.7'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.7'
|
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.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.3'
|
83
|
+
description: ''
|
84
|
+
email:
|
85
|
+
- jeremy.n.friesen@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- ".hound.yml"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
|
+
- CONTRIBUTING.md
|
95
|
+
- Gemfile
|
96
|
+
- Guardfile
|
97
|
+
- LICENSE
|
98
|
+
- README.md
|
99
|
+
- Rakefile
|
100
|
+
- bin/rails
|
101
|
+
- fs
|
102
|
+
- gemfiles/rails4.1.gemfile
|
103
|
+
- gemfiles/rails4.gemfile
|
104
|
+
- hydramata-core.gemspec
|
105
|
+
- lib/hydramata-core.rb
|
106
|
+
- lib/hydramata/configuration.rb
|
107
|
+
- lib/hydramata/core.rb
|
108
|
+
- lib/hydramata/core/named_callbacks.rb
|
109
|
+
- lib/hydramata/core/railtie.rb
|
110
|
+
- lib/hydramata/core/runner.rb
|
111
|
+
- lib/hydramata/core/translator.rb
|
112
|
+
- lib/hydramata/core/version.rb
|
113
|
+
- lib/hydramata/exceptions.rb
|
114
|
+
- lib/hydramata/services.rb
|
115
|
+
- lib/hydramata_core.rb
|
116
|
+
- lib/tasks/hydramata_mecha_tasks.rake
|
117
|
+
- run_each_spec_in_isolation
|
118
|
+
- script/analyzer.rb
|
119
|
+
- script/fast_specs
|
120
|
+
- spec/README.md
|
121
|
+
- spec/features/translation_services_spec.rb
|
122
|
+
- spec/fixtures/core.translations.yml
|
123
|
+
- spec/lib/hydramata-translations_spec.rb
|
124
|
+
- spec/lib/hydramata/configuration_spec.rb
|
125
|
+
- spec/lib/hydramata/core/named_callbacks_spec.rb
|
126
|
+
- spec/lib/hydramata/core/runner_spec.rb
|
127
|
+
- spec/lib/hydramata/core/translator_spec.rb
|
128
|
+
- spec/lib/hydramata/services_spec.rb
|
129
|
+
- spec/spec_fast_helper.rb
|
130
|
+
homepage: https://github.com/ndlib/hydramata-core
|
131
|
+
licenses:
|
132
|
+
- APACHE2
|
133
|
+
metadata: {}
|
134
|
+
post_install_message:
|
135
|
+
rdoc_options: []
|
136
|
+
require_paths:
|
137
|
+
- lib
|
138
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '2.0'
|
143
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
requirements: []
|
149
|
+
rubyforge_project:
|
150
|
+
rubygems_version: 2.2.2
|
151
|
+
signing_key:
|
152
|
+
specification_version: 4
|
153
|
+
summary: ''
|
154
|
+
test_files:
|
155
|
+
- spec/README.md
|
156
|
+
- spec/features/translation_services_spec.rb
|
157
|
+
- spec/fixtures/core.translations.yml
|
158
|
+
- spec/lib/hydramata-translations_spec.rb
|
159
|
+
- spec/lib/hydramata/configuration_spec.rb
|
160
|
+
- spec/lib/hydramata/core/named_callbacks_spec.rb
|
161
|
+
- spec/lib/hydramata/core/runner_spec.rb
|
162
|
+
- spec/lib/hydramata/core/translator_spec.rb
|
163
|
+
- spec/lib/hydramata/services_spec.rb
|
164
|
+
- spec/spec_fast_helper.rb
|