morpheus 0.3.6 → 0.3.7
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.
- 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
|