morpheus 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +12 -0
- data/.rspec +1 -0
- data/README.md +77 -0
- data/Rakefile +16 -0
- data/lib/morpheus.rb +2 -2
- data/lib/morpheus/base.rb +1 -1
- data/lib/morpheus/client/inflections.rb +1 -1
- data/lib/morpheus/configuration.rb +41 -43
- data/lib/morpheus/errors.rb +1 -1
- data/lib/morpheus/mixins/associations.rb +3 -1
- data/lib/morpheus/mixins/attributes.rb +66 -67
- data/lib/morpheus/mixins/conversion.rb +9 -13
- data/lib/morpheus/mixins/filtering.rb +4 -1
- data/lib/morpheus/mixins/finders.rb +4 -1
- data/lib/morpheus/mixins/introspection.rb +12 -16
- data/lib/morpheus/mixins/persistence.rb +25 -26
- data/lib/morpheus/mixins/reflections.rb +4 -1
- data/lib/morpheus/mixins/request_handling.rb +4 -1
- data/lib/morpheus/mixins/response_parsing.rb +12 -12
- data/lib/morpheus/mixins/url_support.rb +4 -1
- data/lib/morpheus/request.rb +34 -34
- data/lib/morpheus/response.rb +2 -2
- data/lib/morpheus/response_parser.rb +9 -4
- data/lib/morpheus/version.rb +1 -1
- data/morpheus.gemspec +4 -4
- data/spec/dummy/app/resources/author.rb +0 -1
- data/spec/dummy/app/resources/book.rb +0 -1
- data/spec/dummy/app/resources/dog.rb +3 -3
- data/spec/dummy/app/resources/meeting.rb +1 -2
- data/spec/dummy/config/application.rb +7 -36
- data/spec/dummy/config/environments/production.rb +1 -1
- data/spec/dummy/config/initializers/morpheus.rb +1 -1
- data/spec/dummy/config/locales/en.yml +1 -1
- data/spec/dummy/config/routes.rb +0 -56
- data/spec/morpheus/associations/association_spec.rb +51 -33
- data/spec/morpheus/associations/belongs_to_association_spec.rb +14 -2
- data/spec/morpheus/associations/has_many_association_spec.rb +31 -11
- data/spec/morpheus/associations/has_one_association_spec.rb +14 -2
- data/spec/morpheus/base_spec.rb +104 -100
- data/spec/morpheus/client/associations_spec.rb +43 -36
- data/spec/morpheus/client/log_subscriber_spec.rb +33 -0
- data/spec/morpheus/client/railtie_spec.rb +5 -0
- data/spec/morpheus/configuration_spec.rb +92 -113
- data/spec/morpheus/mixins/associations_spec.rb +90 -108
- data/spec/morpheus/mixins/attributes_spec.rb +71 -77
- data/spec/morpheus/mixins/conversion_spec.rb +49 -59
- data/spec/morpheus/mixins/filtering_spec.rb +13 -0
- data/spec/morpheus/mixins/finders_spec.rb +180 -217
- data/spec/morpheus/mixins/introspection_spec.rb +81 -124
- data/spec/morpheus/mixins/persistence_spec.rb +140 -133
- data/spec/morpheus/mixins/{reflection_spec.rb → reflections_spec.rb} +28 -28
- data/spec/morpheus/mixins/request_handling_spec.rb +21 -0
- data/spec/morpheus/mixins/response_parsing_spec.rb +10 -2
- data/spec/morpheus/mixins/url_support_spec.rb +29 -0
- data/spec/morpheus/reflection_spec.rb +21 -0
- data/spec/morpheus/relation_spec.rb +34 -58
- data/spec/morpheus/request_cache_spec.rb +33 -2
- data/spec/morpheus/request_queue_spec.rb +37 -0
- data/spec/morpheus/request_spec.rb +102 -1
- data/spec/morpheus/response_parser_spec.rb +17 -0
- data/spec/morpheus/response_spec.rb +55 -51
- data/spec/morpheus/type_caster_spec.rb +128 -118
- data/spec/morpheus/url_builder_spec.rb +41 -0
- data/spec/shared/active_model_lint_test.rb +2 -2
- data/spec/spec_helper.rb +7 -14
- data/spec/support/configuration.rb +3 -4
- metadata +32 -16
- data/README.rdoc +0 -44
- data/autotest/discover.rb +0 -7
- data/lib/morpheus/mock.rb +0 -66
- data/spec/morpheus/mock_spec.rb +0 -133
@@ -1,21 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Morpheus::Reflections
|
4
|
-
|
3
|
+
describe Morpheus::Reflections do
|
4
|
+
|
5
|
+
context 'when the resource has a belongs_to association' do
|
5
6
|
before(:each) do
|
6
|
-
@meeting = Meeting.new(:id => 1, :conference_id=>2, :conference => {:id=>2, :name=>'A conference', :notes=>'There be notes'})
|
7
|
+
@meeting = Meeting.new(:id => 1, :conference_id => 2, :conference => { :id => 2, :name => 'A conference', :notes => 'There be notes' })
|
7
8
|
end
|
8
9
|
|
9
|
-
it
|
10
|
+
it 'returns the association with the correct type and all nested attributes' do
|
10
11
|
@conference = @meeting.conference
|
11
12
|
@conference.should be_a(Conference)
|
12
13
|
@conference.id.should eql(2)
|
13
14
|
@conference.name.should eql('A conference')
|
14
15
|
@conference.notes.should eql('There be notes')
|
15
16
|
end
|
16
|
-
|
17
|
-
it
|
18
|
-
@conference = Conference.new(:id => 3, :name=>'Different')
|
17
|
+
|
18
|
+
it 'still allows setting the association the old-fashioned way' do
|
19
|
+
@conference = Conference.new(:id => 3, :name => 'Different')
|
19
20
|
@meeting.conference = @conference
|
20
21
|
@meeting.conference_id.should eql(3)
|
21
22
|
@conference = @meeting.conference
|
@@ -23,9 +24,9 @@ describe Morpheus::Reflections, "ClassMethods" do
|
|
23
24
|
@conference.id.should eql(3)
|
24
25
|
@conference.name.should eql('Different')
|
25
26
|
end
|
26
|
-
|
27
|
+
|
27
28
|
it 'allows setting with actual class objects in an initial hash' do
|
28
|
-
@conference = Conference.new(:id => 4, :name=>'Another')
|
29
|
+
@conference = Conference.new(:id => 4, :name => 'Another')
|
29
30
|
@meeting2 = Meeting.new(:id => 2, :conference => @conference)
|
30
31
|
@meeting2.conference_id.should eql(4)
|
31
32
|
@conference = @meeting2.conference
|
@@ -34,30 +35,30 @@ describe Morpheus::Reflections, "ClassMethods" do
|
|
34
35
|
@conference.name.should eql('Another')
|
35
36
|
end
|
36
37
|
end
|
37
|
-
|
38
|
-
context
|
38
|
+
|
39
|
+
context 'when the resource has a has_one association' do
|
39
40
|
before(:each) do
|
40
|
-
@meeting = Meeting.new(:id => 1, :speaker => {:id=>22, :name=>'Speaking'})
|
41
|
+
@meeting = Meeting.new(:id => 1, :speaker => { :id => 22, :name => 'Speaking' })
|
41
42
|
end
|
42
43
|
|
43
|
-
it
|
44
|
+
it 'returns the association with the correct type and all nested attributes' do
|
44
45
|
@speaker = @meeting.speaker
|
45
46
|
@speaker.should be_a(Speaker)
|
46
47
|
@speaker.id.should eql(22)
|
47
48
|
@speaker.name.should eql('Speaking')
|
48
49
|
end
|
49
|
-
|
50
|
-
it
|
51
|
-
@speaker = Speaker.new(
|
50
|
+
|
51
|
+
it 'still allows setting the association the old-fashioned way' do
|
52
|
+
@speaker = Speaker.new(:id => 30, :name => 'Speaking up')
|
52
53
|
@meeting.speaker = @speaker
|
53
54
|
@speaker = @meeting.speaker
|
54
55
|
@speaker.should be_a(Speaker)
|
55
56
|
@speaker.id.should eql(30)
|
56
57
|
@speaker.name.should eql('Speaking up')
|
57
58
|
end
|
58
|
-
|
59
|
+
|
59
60
|
it 'allows setting with actual class objects in an initial hash' do
|
60
|
-
@speaker = Speaker.new(
|
61
|
+
@speaker = Speaker.new(:id => 40, :name => 'Speaking out')
|
61
62
|
@meeting2 = Meeting.new(:id => 3, :speaker => @speaker)
|
62
63
|
@speaker = @meeting2.speaker
|
63
64
|
@speaker.should be_a(Speaker)
|
@@ -65,16 +66,16 @@ describe Morpheus::Reflections, "ClassMethods" do
|
|
65
66
|
@speaker.name.should eql('Speaking out')
|
66
67
|
end
|
67
68
|
end
|
68
|
-
|
69
|
-
context
|
69
|
+
|
70
|
+
context 'when the resource has a has_many association' do
|
70
71
|
before(:each) do
|
71
|
-
@meeting = Meeting.new(:id => 1, :attendees => [{:id=>1, :name=>'First'}, {:id=>2, :name=>'Second'}, {:id=>7, :name=>'Last'}])
|
72
|
+
@meeting = Meeting.new(:id => 1, :attendees => [{ :id => 1, :name => 'First' }, { :id => 2, :name => 'Second' }, { :id => 7, :name => 'Last' }])
|
72
73
|
end
|
73
74
|
|
74
|
-
it
|
75
|
+
it 'returns the association with the correct type and all nested attributes' do
|
75
76
|
@attendees = @meeting.attendees
|
76
77
|
@attendees.size.should eql(3)
|
77
|
-
@attendees.each {|a| a.should be_a(Attendee) }
|
78
|
+
@attendees.each { |a| a.should be_a(Attendee) }
|
78
79
|
@attendees.first.id.should eql(1)
|
79
80
|
@attendees.first.name.should eql('First')
|
80
81
|
@attendees.second.id.should eql(2)
|
@@ -82,19 +83,18 @@ describe Morpheus::Reflections, "ClassMethods" do
|
|
82
83
|
@attendees.last.id.should eql(7)
|
83
84
|
@attendees.last.name.should eql('Last')
|
84
85
|
end
|
85
|
-
|
86
|
+
|
86
87
|
it 'allows setting with actual class objects in an initial hash' do
|
87
|
-
@attendees = [Attendee.new(:id=>4,:name=>'Forth'), Attendee.new(:id=>5
|
88
|
+
@attendees = [Attendee.new(:id => 4,:name => 'Forth'), Attendee.new(:id => 5, :name => 'A fifth')]
|
88
89
|
@meeting2 = Meeting.new(:id => 3, :attendees => @attendees)
|
89
90
|
@attendees = @meeting2.attendees
|
90
91
|
@attendees.size.should eql(2)
|
91
|
-
@attendees.each {|a| a.should be_a(Attendee) }
|
92
|
+
@attendees.each { |a| a.should be_a(Attendee) }
|
92
93
|
@attendees.first.id.should eql(4)
|
93
94
|
@attendees.first.name.should eql('Forth')
|
94
95
|
@attendees.second.id.should eql(5)
|
95
96
|
@attendees.second.name.should eql('A fifth')
|
96
97
|
end
|
97
98
|
end
|
98
|
-
|
99
|
-
|
99
|
+
|
100
100
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Morpheus::RequestHandling do
|
4
|
+
|
5
|
+
describe '.get' do
|
6
|
+
pending
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.post' do
|
10
|
+
pending
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.put' do
|
14
|
+
pending
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.delete' do
|
18
|
+
pending
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -1,5 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Morpheus::ResponseParsing
|
4
|
-
|
3
|
+
describe Morpheus::ResponseParsing do
|
4
|
+
|
5
|
+
describe '.response_from_request' do
|
6
|
+
pending
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#build_from_response' do
|
10
|
+
pending
|
11
|
+
end
|
12
|
+
|
5
13
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Morpheus::UrlSupport do
|
4
|
+
|
5
|
+
describe '.url_name' do
|
6
|
+
pending
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.plural_url_name' do
|
10
|
+
pending
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.set_base_url' do
|
14
|
+
pending
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.attributes_root' do
|
18
|
+
pending
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.set_attributes_root' do
|
22
|
+
pending
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'set_base_model_name' do
|
26
|
+
pending
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Morpheus::Reflection do
|
4
|
+
|
5
|
+
describe '#initialize' do
|
6
|
+
pending
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#klass' do
|
10
|
+
pending
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#class_name' do
|
14
|
+
pending
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#build_association' do
|
18
|
+
pending
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -1,71 +1,47 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Morpheus::Relation
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
Dog.
|
8
|
-
Dog.
|
9
|
-
|
10
|
-
]
|
11
|
-
end
|
12
|
-
|
13
|
-
it "makes a request to find all of the given records, with the where parameters" do
|
14
|
-
Dog.should_receive(:get).with("/dogs", { :name => "Daisy", :breed => "English Bulldog" }).and_return(@dogs)
|
15
|
-
Dog.where(:name => "Daisy", :breed => "English Bulldog").all
|
3
|
+
describe Morpheus::Relation do
|
4
|
+
|
5
|
+
describe '#where' do
|
6
|
+
it 'makes a request to find all of the given records, with the where parameters' do
|
7
|
+
Dog.should_receive(:get).with('/dogs', { :name => 'Daisy', :breed => 'English Bulldog' })
|
8
|
+
Dog.where(:name => 'Daisy', :breed => 'English Bulldog').all
|
9
|
+
end
|
16
10
|
end
|
17
|
-
|
18
|
-
end
|
19
11
|
|
20
|
-
describe
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Dog.new(:name => "Wilbur", :breed => "Hounddog").attributes.merge(:id => 2),
|
26
|
-
Dog.new(:name => "Fido", :breed => "Dalmatian").attributes.merge(:id => 3)
|
27
|
-
]
|
12
|
+
describe '#limit' do
|
13
|
+
it 'makes a request to find all of the given records, with the limit parameter' do
|
14
|
+
Dog.should_receive(:get).with('/dogs', { :limit => 2 })
|
15
|
+
Dog.limit(2).all
|
16
|
+
end
|
28
17
|
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
18
|
+
|
19
|
+
describe '#page' do
|
20
|
+
it 'makes a request to find all of the given records, with the chained parameters' do
|
21
|
+
Dog.results_per_page = 10
|
22
|
+
Dog.should_receive(:get).with('/dogs', { :limit => 10, :offset => 20 })
|
23
|
+
Dog.page(3).all
|
24
|
+
end
|
33
25
|
end
|
34
|
-
|
35
|
-
end
|
36
26
|
|
37
|
-
describe
|
38
|
-
|
39
|
-
before(:each) do
|
40
|
-
@dogs = [
|
41
|
-
Dog.new(:name => "Daisy", :breed => "English Bulldog").attributes.merge(:id => 1),
|
42
|
-
Dog.new(:name => "Wilbur", :breed => "Hounddog").attributes.merge(:id => 2),
|
43
|
-
Dog.new(:name => "Fido", :breed => "Dalmatian").attributes.merge(:id => 3)
|
44
|
-
]
|
27
|
+
describe '#all' do
|
28
|
+
pending
|
45
29
|
end
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
Dog.should_receive(:get).with("/dogs", { :limit => 10, :offset => 20 }).and_return(@dogs)
|
50
|
-
Dog.page(3).all
|
30
|
+
|
31
|
+
describe '#to_a' do
|
32
|
+
pending
|
51
33
|
end
|
52
|
-
|
53
|
-
end
|
54
34
|
|
55
|
-
describe
|
56
|
-
|
57
|
-
before(:each) do
|
58
|
-
@dogs = [
|
59
|
-
Dog.new(:name => "Daisy", :breed => "English Bulldog").attributes.merge(:id => 1),
|
60
|
-
Dog.new(:name => "Wilbur", :breed => "Hounddog").attributes.merge(:id => 2),
|
61
|
-
Dog.new(:name => "Fido", :breed => "Dalmatian").attributes.merge(:id => 3)
|
62
|
-
]
|
35
|
+
describe '#to_json' do
|
36
|
+
pending
|
63
37
|
end
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
38
|
+
|
39
|
+
describe 'chaining relations' do
|
40
|
+
it 'makes a request to find all of the given records, with the chained parameters' do
|
41
|
+
Dog.results_per_page = 10
|
42
|
+
Dog.should_receive(:get).with('/dogs', { :name => 'Daisy', :breed => 'English Bulldog', :limit => 2, :offset => 20 })
|
43
|
+
Dog.where(:name => 'Daisy', :breed => 'English Bulldog').page(3).limit(2).all
|
44
|
+
end
|
69
45
|
end
|
70
|
-
|
46
|
+
|
71
47
|
end
|
@@ -1,5 +1,36 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Morpheus::RequestCache
|
4
|
-
|
3
|
+
describe Morpheus::RequestCache do
|
4
|
+
let(:app) { mock(:call => nil) }
|
5
|
+
let(:cache) { Morpheus::RequestCache.new(app) }
|
6
|
+
|
7
|
+
describe '#initialize' do
|
8
|
+
it 'takes an app instance and sets its instance variable' do
|
9
|
+
obj = Object.new
|
10
|
+
cache = Morpheus::RequestCache.new(obj)
|
11
|
+
cache.instance_variable_get('@app').should eql(obj)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#call' do
|
16
|
+
it 'clears the cache hash' do
|
17
|
+
Morpheus::RequestCache.cache.should_receive(:clear)
|
18
|
+
cache.call(Object.new)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'delegates to the app with the env' do
|
22
|
+
env = Object.new
|
23
|
+
app.should_receive(:call).with(env)
|
24
|
+
cache.call(env)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.cache' do
|
29
|
+
it 'returns the global cache hash' do
|
30
|
+
cache_hash = Morpheus::RequestCache.cache
|
31
|
+
cache_hash.should be_kind_of(Hash)
|
32
|
+
cache_hash.should be_empty
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
5
36
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Morpheus::RequestQueue do
|
4
|
+
|
5
|
+
describe '#initialize' do
|
6
|
+
pending
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#call' do
|
10
|
+
pending
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.enqueue' do
|
14
|
+
pending
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.queue' do
|
18
|
+
pending
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.uncached_queue' do
|
22
|
+
pending
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.hydra' do
|
26
|
+
pending
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '.run!' do
|
30
|
+
pending
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '.has_request?' do
|
34
|
+
pending
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -1,5 +1,106 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Morpheus::Request do
|
4
|
-
|
4
|
+
let(:request) do
|
5
|
+
Morpheus::Request.new('/path', :method => :get, :params => { :one => 1 })
|
6
|
+
end
|
7
|
+
let(:response) { Morpheus::Response.new }
|
8
|
+
|
9
|
+
describe '#initialize' do
|
10
|
+
pending
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#cache_key' do
|
14
|
+
it 'returns a hash of the array [method, url, params]' do
|
15
|
+
key = [request.method, request.url, request.params].hash
|
16
|
+
request.cache_key.should eql(key)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#response=' do
|
21
|
+
it 'sets the response for this request' do
|
22
|
+
request.response = response
|
23
|
+
request.response.should eql(response)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'sets the response in the RequestCache' do
|
27
|
+
request.response = response
|
28
|
+
Morpheus::RequestCache.cache[request.cache_key].should eql(response)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'tags the response for caching' do
|
32
|
+
response.should_receive(:tag_for_caching!)
|
33
|
+
request.response = response
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#response' do
|
38
|
+
it 'checks to see if the request is in the queue' do
|
39
|
+
Morpheus::RequestQueue.should_receive(:has_request?).with(request)
|
40
|
+
request.response
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'when the request is in the RequestQueue' do
|
44
|
+
before do
|
45
|
+
Morpheus::RequestQueue.stub(:has_request?).and_return(true)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'calls .run! on RequestQueue' do
|
49
|
+
Morpheus::RequestQueue.should_receive(:run!)
|
50
|
+
request.response
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'when the request is not in the RequestQueue' do
|
55
|
+
before do
|
56
|
+
Morpheus::RequestQueue.stub(:has_request?).and_return(false)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'does not call .run! on RequestQueue' do
|
60
|
+
Morpheus::RequestQueue.should_not_receive(:run!)
|
61
|
+
request.response
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'when the RequestCache has a cached response for this request' do
|
66
|
+
before do
|
67
|
+
Morpheus::RequestCache.cache[request.cache_key] = response
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'returns the response from the cache' do
|
71
|
+
request.response.should eql(response)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when the RequestCache does not have a cached response for this request' do
|
76
|
+
pending
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '.enqueue' do
|
81
|
+
let(:method) { :get }
|
82
|
+
let(:path) { '/path' }
|
83
|
+
let(:params) { { :one => 1 } }
|
84
|
+
|
85
|
+
context 'when using method, path, and params' do
|
86
|
+
it 'creates a new Request object with the path, method, and params' do
|
87
|
+
Morpheus::Request.should_receive(:new).with(path, { :method => method, :params => params })
|
88
|
+
Morpheus::Request.enqueue(method, path, params)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context 'when only using method and path' do
|
93
|
+
it 'creates a new Request object with only the path and method' do
|
94
|
+
Morpheus::Request.should_receive(:new).with(path, { :method => method })
|
95
|
+
Morpheus::Request.enqueue(method, path, {})
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'queues up the request on the RequestQueue' do
|
100
|
+
Morpheus::Request.stub(:new).and_return(request)
|
101
|
+
Morpheus::RequestQueue.should_receive(:enqueue).with(request)
|
102
|
+
Morpheus::Request.enqueue(method, path, params)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
5
106
|
end
|