cyrax 0.2.3 → 0.2.4
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 +8 -8
- data/lib/cyrax/base.rb +16 -0
- data/lib/cyrax/base_presenter.rb +0 -2
- data/lib/cyrax/extensions/has_callbacks.rb +1 -0
- data/lib/cyrax/extensions/has_decorator.rb +2 -1
- data/lib/cyrax/extensions/has_resource.rb +3 -10
- data/lib/cyrax/extensions/has_response.rb +11 -5
- data/lib/cyrax/extensions/has_service.rb +4 -0
- data/lib/cyrax/version.rb +1 -1
- data/spec/cyrax/extensions/has_callbacks_spec.rb +12 -8
- data/spec/cyrax/extensions/has_decorator_spec.rb +10 -9
- data/spec/cyrax/extensions/has_resource_spec.rb +12 -33
- data/spec/cyrax/extensions/has_response_spec.rb +5 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmE3M2RiMzA0YzZkOWJlNjI1MWZmM2I4ZDVkMjNjMzRiYTI1YjVmMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YzM3YTgzM2Q2OTczMjVjNjgxYmQ3NzFkNTE2NjE5ZDBhNzQ4MDk2YQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YTJhMTMyZTJiM2EzOWVjNGQ0NjEzZjUyNTBlYWIzOGU4NDYzNzRiZDM1NmEz
|
10
|
+
YzMwNTZmMGFlMzE1NTVkZmE4NTc2NDQwNDg3N2M5MGVjZWVhYzQwMTEwNWJl
|
11
|
+
ODJjODU2OWJhNmEyNjVkZjQzZjEzYmE4MDM1ZDc4YzI2MTNmNGI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MjUyMmFmNzJkZDJkYWEwZWMzNGRiZWQwNDI3NmQwYWEyNzkwYjAzMjFlYjc1
|
14
|
+
MWQ4ZDAyOTkxMzEwNTk1NjZjNDdlZGM3MWQ3MzVmNWY5NWUwMDdlNjUzMjU0
|
15
|
+
NmRmNjUzOWM5OGZiYzlhM2Y4NzQyYWVmODdlZGEzZjU2ZDQzODE=
|
data/lib/cyrax/base.rb
CHANGED
@@ -9,4 +9,20 @@ class Cyrax::Base
|
|
9
9
|
@accessor = options[:as]
|
10
10
|
@params = options[:params]
|
11
11
|
end
|
12
|
+
|
13
|
+
def has_extension?(name)
|
14
|
+
self.class.has_extension?(name)
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def register_extension(name)
|
19
|
+
@_extensions ||= []
|
20
|
+
@_extensions << name.to_sym
|
21
|
+
end
|
22
|
+
|
23
|
+
def has_extension?(name)
|
24
|
+
@_extensions ||= []
|
25
|
+
@_extensions.include?(name.to_sym)
|
26
|
+
end
|
27
|
+
end
|
12
28
|
end
|
data/lib/cyrax/base_presenter.rb
CHANGED
@@ -3,12 +3,13 @@ module Cyrax::Extensions
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
+
register_extension :has_decorator
|
6
7
|
class_attribute :decorator_class_name
|
7
8
|
end
|
8
9
|
|
9
10
|
module ClassMethods
|
10
11
|
def decorator(name)
|
11
|
-
self.decorator_class_name = name.to_s
|
12
|
+
self.decorator_class_name = name ? name.to_s : nil
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
@@ -4,6 +4,7 @@ module Cyrax::Extensions
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
+
register_extension :has_resource
|
7
8
|
class_attribute :resource_name
|
8
9
|
class_attribute :resource_class_name
|
9
10
|
end
|
@@ -46,16 +47,8 @@ module Cyrax::Extensions
|
|
46
47
|
resource_scope.find(id)
|
47
48
|
end
|
48
49
|
|
49
|
-
def
|
50
|
-
|
51
|
-
|
52
|
-
if collection.kind_of?(Array)
|
53
|
-
return collection
|
54
|
-
elsif collection.respond_to?(:all)
|
55
|
-
return collection.all
|
56
|
-
else
|
57
|
-
return Array.wrap(collection)
|
58
|
-
end
|
50
|
+
def response_name
|
51
|
+
resource_name
|
59
52
|
end
|
60
53
|
|
61
54
|
module ClassMethods
|
@@ -30,11 +30,17 @@ module Cyrax::Extensions
|
|
30
30
|
@_message = message
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
34
|
-
name
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
def response_name
|
34
|
+
self.class.name.demodulize.underscore
|
35
|
+
end
|
36
|
+
|
37
|
+
def respond_with(result, options = {})
|
38
|
+
name = options[:name] || response_name
|
39
|
+
if has_extension?(:has_decorator)
|
40
|
+
options.merge!(decorable: decorable?, decorator_class: decorator_class)
|
41
|
+
result = Cyrax::BasePresenter.present(result, options)
|
42
|
+
end
|
43
|
+
response = result.is_a?(Cyrax::Response) ? result : Cyrax::Response.new(name, result)
|
38
44
|
response.message = @_message
|
39
45
|
response.errors = @_errors
|
40
46
|
response.assignments = @_assignments
|
data/lib/cyrax/version.rb
CHANGED
@@ -1,41 +1,45 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Cyrax
|
4
|
-
|
4
|
+
class BaseWithCallbacks < Cyrax::Base
|
5
5
|
include Cyrax::Extensions::HasCallbacks
|
6
|
+
end
|
7
|
+
|
8
|
+
describe Cyrax::Extensions::HasCallbacks do
|
9
|
+
subject { BaseWithCallbacks.new }
|
6
10
|
|
7
11
|
describe '#invoke_callback' do
|
8
12
|
context 'when callback handler class is not defined' do
|
9
13
|
let(:name) { mock }
|
10
14
|
let(:resource) { mock }
|
11
|
-
before {
|
12
|
-
it { invoke_callback(name, resource).should be_nil }
|
15
|
+
before { subject.class.stub!(:resource_callbacks_handler_class) }
|
16
|
+
it { subject.invoke_callback(name, resource).should be_nil }
|
13
17
|
end
|
14
18
|
|
15
19
|
context 'when callback handler class is defined' do
|
16
20
|
let(:name) { "foo" }
|
17
21
|
let(:resource) { mock }
|
18
22
|
let(:handle_class) { double.as_null_object }
|
19
|
-
before {
|
23
|
+
before { subject.class.stub!(:resource_callbacks_handler_class).and_return(handle_class) }
|
20
24
|
|
21
25
|
it 'initializes handle class instance' do
|
22
26
|
handle_class.should_receive(:new).with(resource)
|
23
|
-
invoke_callback(name, resource)
|
27
|
+
subject.invoke_callback(name, resource)
|
24
28
|
end
|
25
29
|
|
26
30
|
it 'calls corresponding method on instance' do
|
27
31
|
instance = double.as_null_object
|
28
32
|
handle_class.stub!(:new).and_return(instance)
|
29
33
|
instance.should_receive(:foo)
|
30
|
-
invoke_callback(name, resource)
|
34
|
+
subject.invoke_callback(name, resource)
|
31
35
|
end
|
32
36
|
end
|
33
37
|
end
|
34
38
|
|
35
39
|
describe '#callbacks_handler' do
|
36
40
|
it 'should define callbacks handler class' do
|
37
|
-
|
38
|
-
|
41
|
+
subject.class.callbacks_handler('Foo')
|
42
|
+
subject.class.resource_callbacks_handler_class.should eq('Foo')
|
39
43
|
end
|
40
44
|
end
|
41
45
|
end
|
@@ -12,38 +12,39 @@ class Foo;
|
|
12
12
|
end
|
13
13
|
|
14
14
|
module Cyrax
|
15
|
-
|
15
|
+
class BaseWithDecorator < Cyrax::Base
|
16
16
|
include Cyrax::Extensions::HasDecorator
|
17
|
+
end
|
18
|
+
|
19
|
+
describe Cyrax::Extensions::HasDecorator do
|
20
|
+
subject { BaseWithDecorator.new }
|
17
21
|
|
18
22
|
describe 'class attributes' do
|
19
|
-
|
20
|
-
it { should respond_to(:decorator_class_name) }
|
23
|
+
its(:class) { should respond_to(:decorator_class_name) }
|
21
24
|
end
|
22
25
|
|
23
26
|
describe 'class methods' do
|
24
27
|
describe '#decorator' do
|
25
|
-
before {
|
26
|
-
subject { self }
|
28
|
+
before { subject.class.decorator(:foo) }
|
27
29
|
|
28
30
|
its(:decorator_class_name) { should eq('foo') }
|
29
31
|
end
|
30
32
|
end
|
31
33
|
|
32
34
|
describe 'instance methods' do
|
33
|
-
subject { self }
|
34
|
-
|
35
35
|
describe '#decorator_class' do
|
36
|
-
before {
|
36
|
+
before { subject.class.decorator(:foo) }
|
37
37
|
its(:decorator_class) { should eq(Foo) }
|
38
38
|
end
|
39
39
|
|
40
40
|
describe '#decorable?' do
|
41
41
|
context 'when `decorator_class_name` present' do
|
42
|
-
before {
|
42
|
+
before { subject.class.decorator(:foo) }
|
43
43
|
its(:decorable?) { should be_true }
|
44
44
|
end
|
45
45
|
|
46
46
|
context 'when `decorator_class_name` empty' do
|
47
|
+
before { subject.class.decorator(nil) }
|
47
48
|
its(:decorable?) { should be_false }
|
48
49
|
end
|
49
50
|
end
|
@@ -10,19 +10,21 @@ class Bar; end
|
|
10
10
|
class Foo; end
|
11
11
|
|
12
12
|
module Cyrax
|
13
|
-
|
13
|
+
class BaseWithResource < Cyrax::Base
|
14
14
|
include Cyrax::Extensions::HasResource
|
15
|
+
end
|
16
|
+
|
17
|
+
describe Cyrax::Extensions::HasResource do
|
18
|
+
subject { BaseWithResource.new }
|
15
19
|
|
16
20
|
describe 'class attributes' do
|
17
|
-
|
18
|
-
|
19
|
-
it { should respond_to(:resource_class_name) }
|
21
|
+
its(:class) { should respond_to(:resource_name) }
|
22
|
+
its(:class) { should respond_to(:resource_class_name) }
|
20
23
|
end
|
21
24
|
|
22
25
|
describe 'class methods' do
|
23
26
|
describe '#resource' do
|
24
|
-
before {
|
25
|
-
subject { self }
|
27
|
+
before { subject.class.resource(:foo, class_name:'bar', name:'bazz') }
|
26
28
|
|
27
29
|
its(:resource_name) { should eq('foo') }
|
28
30
|
its(:resource_class_name) { should eq('bar') }
|
@@ -30,26 +32,25 @@ module Cyrax
|
|
30
32
|
end
|
31
33
|
|
32
34
|
describe 'instance methods' do
|
33
|
-
subject { self }
|
34
35
|
|
35
36
|
describe '#resource_name' do
|
36
|
-
before {
|
37
|
+
before { subject.class.resource(:foo) }
|
37
38
|
its(:resource_name) { should eq('foo') }
|
38
39
|
end
|
39
40
|
|
40
41
|
describe '#collection_name' do
|
41
|
-
before {
|
42
|
+
before { subject.class.resource(:foo) }
|
42
43
|
its(:collection_name) { should eq('foos') }
|
43
44
|
end
|
44
45
|
|
45
46
|
describe '#resource_class' do
|
46
47
|
context 'when `class_name` option is supplied' do
|
47
|
-
before {
|
48
|
+
before { subject.class.resource(:foo, class_name:'Bar') }
|
48
49
|
its(:resource_class) { should eq(Bar) }
|
49
50
|
end
|
50
51
|
|
51
52
|
context 'when `class_name` option is omited' do
|
52
|
-
before {
|
53
|
+
before { subject.class.resource(:foo) }
|
53
54
|
its(:resource_class) { should eq(Foo) }
|
54
55
|
end
|
55
56
|
end
|
@@ -74,27 +75,6 @@ module Cyrax
|
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
|
-
describe '#wrapped_collection' do
|
78
|
-
subject { self.send(:wrapped_collection) }
|
79
|
-
|
80
|
-
context 'when #build_collection returns array' do
|
81
|
-
before { self.stub!(:build_collection).and_return([:bar]) }
|
82
|
-
it { should eq([:bar]) }
|
83
|
-
end
|
84
|
-
|
85
|
-
context 'when #build_collection returns any object except array' do
|
86
|
-
before { self.stub!(:build_collection).and_return(:bar) }
|
87
|
-
it { should eq([:bar]) }
|
88
|
-
end
|
89
|
-
|
90
|
-
context 'when #build_collection returns any object which responds to #all method' do
|
91
|
-
let(:obj) { mock(:all => [:bar] ) }
|
92
|
-
before { self.stub!(:build_collection).and_return(obj) }
|
93
|
-
|
94
|
-
it { should eq([:bar]) }
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
78
|
describe '#build_resource' do
|
99
79
|
context 'when id is nil' do
|
100
80
|
let(:resource_scope) { mock }
|
@@ -131,7 +111,6 @@ module Cyrax
|
|
131
111
|
end
|
132
112
|
|
133
113
|
describe 'private methods' do
|
134
|
-
subject { self }
|
135
114
|
describe '#dirty_resource_attributes' do
|
136
115
|
context 'when params are present' do
|
137
116
|
it 'should return from params by resource_name' do
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Cyrax
|
4
|
-
|
4
|
+
class BaseWithResponse < Cyrax::Base
|
5
5
|
include Cyrax::Extensions::HasResponse
|
6
|
+
end
|
6
7
|
|
7
|
-
|
8
|
+
describe Cyrax::Extensions::HasResponse do
|
9
|
+
subject { BaseWithResponse.new }
|
8
10
|
before do
|
9
11
|
subject.stub!(:decorable?).and_return(false)
|
10
12
|
subject.stub!(:decorator_class).and_return(nil)
|
@@ -55,7 +57,7 @@ module Cyrax
|
|
55
57
|
end
|
56
58
|
|
57
59
|
describe '#respond_with' do
|
58
|
-
before { subject.stub!(:
|
60
|
+
before { subject.stub!(:response_name).and_return(:foo) }
|
59
61
|
it 'calls Cyrax::Response' do
|
60
62
|
Cyrax::Response.should_receive(:new).with(:foo, 'bar').and_return(mock.as_null_object)
|
61
63
|
subject.respond_with('bar')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cyrax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Droidlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|