lelylan-rb 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +26 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +7 -0
- data/Guardfile +5 -0
- data/LICENSE.md +1 -0
- data/README.md +218 -0
- data/Rakefile +21 -0
- data/lelylan_rb.gemspec +36 -0
- data/lib/faraday/response/raise_http_error.rb +35 -0
- data/lib/lelylan.rb +26 -0
- data/lib/lelylan/authentication.rb +11 -0
- data/lib/lelylan/client.rb +47 -0
- data/lib/lelylan/client/categories.rb +112 -0
- data/lib/lelylan/client/consumptions.rb +93 -0
- data/lib/lelylan/client/devices.rb +211 -0
- data/lib/lelylan/client/functions.rb +118 -0
- data/lib/lelylan/client/histories.rb +42 -0
- data/lib/lelylan/client/locations.rb +92 -0
- data/lib/lelylan/client/properties.rb +115 -0
- data/lib/lelylan/client/statuses.rb +110 -0
- data/lib/lelylan/client/types.rb +109 -0
- data/lib/lelylan/configuration.rb +65 -0
- data/lib/lelylan/connection.rb +33 -0
- data/lib/lelylan/error.rb +34 -0
- data/lib/lelylan/request.rb +70 -0
- data/lib/lelylan/version.rb +15 -0
- data/spec/faraday/response_spec.rb +37 -0
- data/spec/fixtures/categories.json +7 -0
- data/spec/fixtures/category.json +7 -0
- data/spec/fixtures/consumption.json +11 -0
- data/spec/fixtures/consumptions.json +11 -0
- data/spec/fixtures/device.json +25 -0
- data/spec/fixtures/devices.json +25 -0
- data/spec/fixtures/function.json +15 -0
- data/spec/fixtures/functions.json +15 -0
- data/spec/fixtures/histories.json +16 -0
- data/spec/fixtures/history.json +16 -0
- data/spec/fixtures/location.json +55 -0
- data/spec/fixtures/locations.json +18 -0
- data/spec/fixtures/oauth2/refresh.json +6 -0
- data/spec/fixtures/oauth2/token.json +6 -0
- data/spec/fixtures/pending.json +12 -0
- data/spec/fixtures/properties.json +9 -0
- data/spec/fixtures/property.json +9 -0
- data/spec/fixtures/status.json +24 -0
- data/spec/fixtures/statuses.json +24 -0
- data/spec/fixtures/type.json +94 -0
- data/spec/fixtures/types.json +88 -0
- data/spec/helper.rb +71 -0
- data/spec/lelylan/client/categories_spec.rb +178 -0
- data/spec/lelylan/client/consumptions_spec.rb +150 -0
- data/spec/lelylan/client/devices_spec.rb +342 -0
- data/spec/lelylan/client/functions_spec.rb +184 -0
- data/spec/lelylan/client/histories_spec.rb +64 -0
- data/spec/lelylan/client/locations_spec.rb +155 -0
- data/spec/lelylan/client/properties_spec.rb +184 -0
- data/spec/lelylan/client/statuses_spec.rb +184 -0
- data/spec/lelylan/client/types_spec.rb +184 -0
- data/spec/lelylan/client_spec.rb +32 -0
- data/spec/lelylan/oauth2_spec.rb +54 -0
- data/spec/lelylan_spec.rb +32 -0
- metadata +351 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
[{
|
2
|
+
"uri": "http://www.example.com/locations/1",
|
3
|
+
"id": "1",
|
4
|
+
"name": "House",
|
5
|
+
"type": "house",
|
6
|
+
"created_at": "2012-07-16T17:04:10Z",
|
7
|
+
"updated_at": "2012-07-16T17:04:10Z",
|
8
|
+
"locations": {
|
9
|
+
"parent": null,
|
10
|
+
"children": [],
|
11
|
+
"ancestors": [],
|
12
|
+
"descendants": []
|
13
|
+
},
|
14
|
+
"devices": {
|
15
|
+
"children": [],
|
16
|
+
"descendants": []
|
17
|
+
}
|
18
|
+
}]
|
@@ -0,0 +1,12 @@
|
|
1
|
+
{
|
2
|
+
"uri": "http://www.example.com/devices/5003c553d033a96a3c0003e0",
|
3
|
+
"status": "true",
|
4
|
+
"properties": [{
|
5
|
+
"uri": "https://type.lelylan.com/properties/status",
|
6
|
+
"value": "off"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"uri": "https://type.lelylan.com/properties/intensity",
|
10
|
+
"value": "0.0"
|
11
|
+
}]
|
12
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
{
|
2
|
+
"uri": "http://www.example.com/statuses/5004260cd033a9b4ac000642",
|
3
|
+
"id": "5004260cd033a9b4ac000642",
|
4
|
+
"name": "Setting intensity",
|
5
|
+
"pending": "true",
|
6
|
+
"created_at": "2012-07-16T14:32:44Z",
|
7
|
+
"updated_at": "2012-07-16T14:32:44Z",
|
8
|
+
"properties": [{
|
9
|
+
"uri": "http://www.example.com/properties/status",
|
10
|
+
"values": ["on"],
|
11
|
+
"range": {
|
12
|
+
"start": null,
|
13
|
+
"end": null
|
14
|
+
}
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"uri": "http://www.example.com/properties/intensity",
|
18
|
+
"values": [],
|
19
|
+
"range": {
|
20
|
+
"start": "0",
|
21
|
+
"end": "100"
|
22
|
+
}
|
23
|
+
}]
|
24
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
[{
|
2
|
+
"uri": "http://www.example.com/statuses/50042607d033a9b4ac000438",
|
3
|
+
"id": "50042607d033a9b4ac000438",
|
4
|
+
"name": "Setting intensity",
|
5
|
+
"pending": "true",
|
6
|
+
"created_at": "2012-07-16T14:32:39Z",
|
7
|
+
"updated_at": "2012-07-16T14:32:39Z",
|
8
|
+
"properties": [{
|
9
|
+
"uri": "http://www.example.com/properties/status",
|
10
|
+
"values": ["on"],
|
11
|
+
"range": {
|
12
|
+
"start": null,
|
13
|
+
"end": null
|
14
|
+
}
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"uri": "http://www.example.com/properties/intensity",
|
18
|
+
"values": [],
|
19
|
+
"range": {
|
20
|
+
"start": "0",
|
21
|
+
"end": "100"
|
22
|
+
}
|
23
|
+
}]
|
24
|
+
}]
|
@@ -0,0 +1,94 @@
|
|
1
|
+
{
|
2
|
+
"uri": "http://www.example.com/types/50042612d033a9b4ac0007fa",
|
3
|
+
"id": "50042612d033a9b4ac0007fa",
|
4
|
+
"name": "Dimmer",
|
5
|
+
"public": "true",
|
6
|
+
"created_at": "2012-07-16T14:32:50Z",
|
7
|
+
"updated_at": "2012-07-16T14:32:50Z",
|
8
|
+
"properties": [{
|
9
|
+
"uri": "http://www.example.com/properties/50042612d033a9b4ac0007ed",
|
10
|
+
"id": "50042612d033a9b4ac0007ed",
|
11
|
+
"name": "Status",
|
12
|
+
"default": "off",
|
13
|
+
"values": ["on", "off"],
|
14
|
+
"created_at": "2012-07-16T14:32:50Z",
|
15
|
+
"updated_at": "2012-07-16T14:32:50Z"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"uri": "http://www.example.com/properties/50042612d033a9b4ac0007ee",
|
19
|
+
"id": "50042612d033a9b4ac0007ee",
|
20
|
+
"name": "Intensity",
|
21
|
+
"default": "0.0",
|
22
|
+
"values": ["0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "100"],
|
23
|
+
"created_at": "2012-07-16T14:32:50Z",
|
24
|
+
"updated_at": "2012-07-16T14:32:50Z"
|
25
|
+
}],
|
26
|
+
"functions": [{
|
27
|
+
"uri": "http://www.example.com/functions/50042612d033a9b4ac0007f0",
|
28
|
+
"id": "50042612d033a9b4ac0007f0",
|
29
|
+
"name": "Turn on",
|
30
|
+
"created_at": "2012-07-16T14:32:50Z",
|
31
|
+
"updated_at": "2012-07-16T14:32:50Z",
|
32
|
+
"properties": [{
|
33
|
+
"uri": "http://www.example.com/properties/status",
|
34
|
+
"value": "on"
|
35
|
+
}]
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"uri": "http://www.example.com/functions/50042612d033a9b4ac0007f2",
|
39
|
+
"id": "50042612d033a9b4ac0007f2",
|
40
|
+
"name": "Turn off",
|
41
|
+
"created_at": "2012-07-16T14:32:50Z",
|
42
|
+
"updated_at": "2012-07-16T14:32:50Z",
|
43
|
+
"properties": [{
|
44
|
+
"uri": "http://www.example.com/properties/status",
|
45
|
+
"value": "off"
|
46
|
+
}]
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"uri": "http://www.example.com/functions/50042612d033a9b4ac0007f5",
|
50
|
+
"id": "50042612d033a9b4ac0007f5",
|
51
|
+
"name": "Set intensity",
|
52
|
+
"created_at": "2012-07-16T14:32:50Z",
|
53
|
+
"updated_at": "2012-07-16T14:32:50Z",
|
54
|
+
"properties": [{
|
55
|
+
"uri": "http://www.example.com/properties/status",
|
56
|
+
"value": "on"
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"uri": "http://www.example.com/properties/intensity",
|
60
|
+
"value": "0"
|
61
|
+
}]
|
62
|
+
}],
|
63
|
+
"statuses": [{
|
64
|
+
"uri": "http://www.example.com/statuses/50042612d033a9b4ac0007f8",
|
65
|
+
"id": "50042612d033a9b4ac0007f8",
|
66
|
+
"name": "Setting intensity",
|
67
|
+
"pending": "true",
|
68
|
+
"created_at": "2012-07-16T14:32:50Z",
|
69
|
+
"updated_at": "2012-07-16T14:32:50Z",
|
70
|
+
"properties": [{
|
71
|
+
"uri": "http://www.example.com/properties/status",
|
72
|
+
"values": ["on"],
|
73
|
+
"range": {
|
74
|
+
"start": null,
|
75
|
+
"end": null
|
76
|
+
}
|
77
|
+
},
|
78
|
+
{
|
79
|
+
"uri": "http://www.example.com/properties/intensity",
|
80
|
+
"values": [],
|
81
|
+
"range": {
|
82
|
+
"start": "0",
|
83
|
+
"end": "100"
|
84
|
+
}
|
85
|
+
}]
|
86
|
+
}],
|
87
|
+
"categories": [{
|
88
|
+
"uri": "http://www.example.com/categories/50042612d033a9b4ac0007f9",
|
89
|
+
"id": "50042612d033a9b4ac0007f9",
|
90
|
+
"name": "Lighting",
|
91
|
+
"created_at": "2012-07-16T14:32:50Z",
|
92
|
+
"updated_at": "2012-07-16T14:32:50Z"
|
93
|
+
}]
|
94
|
+
}
|
@@ -0,0 +1,88 @@
|
|
1
|
+
[{
|
2
|
+
"uri": "http://www.example.com/types/5004260fd033a9b4ac0006d7",
|
3
|
+
"id": "5004260fd033a9b4ac0006d7",
|
4
|
+
"name": "Dimmer",
|
5
|
+
"public": "true",
|
6
|
+
"created_at": "2012-07-16T14:32:47Z",
|
7
|
+
"updated_at": "2012-07-16T14:32:47Z",
|
8
|
+
"properties": [{
|
9
|
+
"uri": "http://www.example.com/properties/5004260fd033a9b4ac0006ca",
|
10
|
+
"id": "5004260fd033a9b4ac0006ca",
|
11
|
+
"name": "Status",
|
12
|
+
"default": "off",
|
13
|
+
"values": ["on", "off"],
|
14
|
+
"created_at": "2012-07-16T14:32:47Z",
|
15
|
+
"updated_at": "2012-07-16T14:32:47Z"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"uri": "http://www.example.com/properties/5004260fd033a9b4ac0006cb",
|
19
|
+
"id": "5004260fd033a9b4ac0006cb",
|
20
|
+
"name": "Intensity",
|
21
|
+
"default": "0.0",
|
22
|
+
"values": ["0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "100"],
|
23
|
+
"created_at": "2012-07-16T14:32:47Z",
|
24
|
+
"updated_at": "2012-07-16T14:32:47Z"
|
25
|
+
}],
|
26
|
+
"functions": [{
|
27
|
+
"uri": "http://www.example.com/functions/5004260fd033a9b4ac0006cd",
|
28
|
+
"id": "5004260fd033a9b4ac0006cd",
|
29
|
+
"name": "Turn on",
|
30
|
+
"created_at": "2012-07-16T14:32:47Z",
|
31
|
+
"updated_at": "2012-07-16T14:32:47Z",
|
32
|
+
"properties": [{
|
33
|
+
"uri": "http://www.example.com/properties/status",
|
34
|
+
"value": "on"
|
35
|
+
}]
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"uri": "http://www.example.com/functions/5004260fd033a9b4ac0006cf",
|
39
|
+
"id": "5004260fd033a9b4ac0006cf",
|
40
|
+
"name": "Turn off",
|
41
|
+
"created_at": "2012-07-16T14:32:47Z",
|
42
|
+
"updated_at": "2012-07-16T14:32:47Z",
|
43
|
+
"properties": [{
|
44
|
+
"uri": "http://www.example.com/properties/status",
|
45
|
+
"value": "off"
|
46
|
+
}]
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"uri": "http://www.example.com/functions/5004260fd033a9b4ac0006d2",
|
50
|
+
"id": "5004260fd033a9b4ac0006d2",
|
51
|
+
"name": "Set intensity",
|
52
|
+
"created_at": "2012-07-16T14:32:47Z",
|
53
|
+
"updated_at": "2012-07-16T14:32:47Z",
|
54
|
+
"properties": [{
|
55
|
+
"uri": "http://www.example.com/properties/status",
|
56
|
+
"value": "on"
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"uri": "http://www.example.com/properties/intensity",
|
60
|
+
"value": "0"
|
61
|
+
}]
|
62
|
+
}],
|
63
|
+
"statuses": [{
|
64
|
+
"uri": "http://www.example.com/statuses/5004260fd033a9b4ac0006d5",
|
65
|
+
"id": "5004260fd033a9b4ac0006d5",
|
66
|
+
"name": "Setting intensity",
|
67
|
+
"pending": "true",
|
68
|
+
"created_at": "2012-07-16T14:32:47Z",
|
69
|
+
"updated_at": "2012-07-16T14:32:47Z",
|
70
|
+
"properties": [{
|
71
|
+
"uri": "http://www.example.com/properties/status",
|
72
|
+
"values": ["on"],
|
73
|
+
"range": {
|
74
|
+
"start": null,
|
75
|
+
"end": null
|
76
|
+
}
|
77
|
+
},
|
78
|
+
{
|
79
|
+
"uri": "http://www.example.com/properties/intensity",
|
80
|
+
"values": [],
|
81
|
+
"range": {
|
82
|
+
"start": "0",
|
83
|
+
"end": "100"
|
84
|
+
}
|
85
|
+
}]
|
86
|
+
}],
|
87
|
+
"categories": []
|
88
|
+
}]
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
if ENV['COVERAGE']
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start { add_filter "/spec" }
|
4
|
+
end
|
5
|
+
|
6
|
+
require 'lelylan'
|
7
|
+
require 'rspec'
|
8
|
+
require 'webmock/rspec'
|
9
|
+
|
10
|
+
def a_delete(url)
|
11
|
+
a_request(:delete, lelylan_url(url))
|
12
|
+
end
|
13
|
+
|
14
|
+
def a_get(url)
|
15
|
+
a_request(:get, lelylan_url(url))
|
16
|
+
end
|
17
|
+
|
18
|
+
def a_patch(url)
|
19
|
+
a_request(:patch, lelylan_url(url))
|
20
|
+
end
|
21
|
+
|
22
|
+
def a_post(url)
|
23
|
+
a_request(:post, lelylan_url(url))
|
24
|
+
end
|
25
|
+
|
26
|
+
def a_put(url)
|
27
|
+
a_request(:put, lelylan_url(url))
|
28
|
+
end
|
29
|
+
|
30
|
+
def stub_delete(url)
|
31
|
+
stub_request(:delete, lelylan_url(url))
|
32
|
+
end
|
33
|
+
|
34
|
+
def stub_get(url)
|
35
|
+
stub_request(:get, lelylan_url(url))
|
36
|
+
end
|
37
|
+
|
38
|
+
def stub_patch(url)
|
39
|
+
stub_request(:patch, lelylan_url(url))
|
40
|
+
end
|
41
|
+
|
42
|
+
def stub_post(url)
|
43
|
+
stub_request(:post, lelylan_url(url))
|
44
|
+
end
|
45
|
+
|
46
|
+
def stub_put(url)
|
47
|
+
stub_request(:put, lelylan_url(url))
|
48
|
+
end
|
49
|
+
|
50
|
+
def fixture_path
|
51
|
+
File.expand_path("../fixtures", __FILE__)
|
52
|
+
end
|
53
|
+
|
54
|
+
def fixture(file)
|
55
|
+
File.new(fixture_path + '/' + file)
|
56
|
+
end
|
57
|
+
|
58
|
+
def lelylan_url(url)
|
59
|
+
url =~ /^http/ ? url : "http://api.lelylan.com#{url}"
|
60
|
+
end
|
61
|
+
|
62
|
+
def a_client
|
63
|
+
client_id = '36963b6bd9dc1127553b57f55ea54d4cecf97e386bcecc5f9198e8dd0ed235f9'
|
64
|
+
client_secret = '8e6343a084320b6b11cdd3349642718c11af1af9b9f64ed4976018bdf20d0082'
|
65
|
+
site_uri = 'http://app.dev'
|
66
|
+
application = OAuth2::Client.new client_id, client_secret, site: site_uri
|
67
|
+
json_token = MultiJson.load fixture('oauth2/token.json').read
|
68
|
+
token = OAuth2::AccessToken.from_hash application, json_token
|
69
|
+
|
70
|
+
Lelylan::Client.new token: token
|
71
|
+
end
|
@@ -0,0 +1,178 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Lelylan::Client::Categories do
|
4
|
+
|
5
|
+
let(:client) do
|
6
|
+
a_client
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.category' do
|
10
|
+
|
11
|
+
let(:path) do
|
12
|
+
'/categories/4dcb9e23d033a9088900000a'
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:uri) do
|
16
|
+
"http://api.lelylan.com/#{path}"
|
17
|
+
end
|
18
|
+
|
19
|
+
before do
|
20
|
+
stub_get(path).to_return(body: fixture('category.json'))
|
21
|
+
end
|
22
|
+
|
23
|
+
let!(:category) do
|
24
|
+
client.category(uri)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns the category' do
|
28
|
+
category.uri.should_not be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'sends the request' do
|
32
|
+
a_get(path).should have_been_made
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.categories' do
|
37
|
+
|
38
|
+
let(:path) do
|
39
|
+
'/categories'
|
40
|
+
end
|
41
|
+
|
42
|
+
before do
|
43
|
+
stub_get('/categories').to_return(body: fixture('categories.json'))
|
44
|
+
end
|
45
|
+
|
46
|
+
let!(:categories) do
|
47
|
+
client.categories
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'returns a list of categories' do
|
51
|
+
categories.should have(1).item
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'sends the request' do
|
55
|
+
a_get(path).should have_been_made
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'with params' do
|
59
|
+
|
60
|
+
before do
|
61
|
+
stub_get(path).with(query: {per: '25'}).to_return(body: fixture('category.json'))
|
62
|
+
end
|
63
|
+
|
64
|
+
before do
|
65
|
+
client.categories(per: 25)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'sends the params' do
|
69
|
+
a_get(path).with(query: {per: '25'}).should have_been_made
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '.public_categories' do
|
75
|
+
|
76
|
+
let(:path) do
|
77
|
+
'/categories/public'
|
78
|
+
end
|
79
|
+
|
80
|
+
before do
|
81
|
+
client.user = nil
|
82
|
+
client.password = nil
|
83
|
+
end
|
84
|
+
|
85
|
+
before do
|
86
|
+
stub_get(path).to_return(body: fixture('categories.json'))
|
87
|
+
end
|
88
|
+
|
89
|
+
let!(:categories) do
|
90
|
+
client.public_categories
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'returns a list of categories' do
|
94
|
+
categories.should have(1).item
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'sends the request' do
|
98
|
+
a_get('http://api.lelylan.com/categories/public').should have_been_made
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe '.create_category' do
|
103
|
+
|
104
|
+
let(:path) do
|
105
|
+
'/categories'
|
106
|
+
end
|
107
|
+
|
108
|
+
before do
|
109
|
+
stub_post(path).with(body: {name: 'Dimmer'}).to_return(body: fixture('category.json'))
|
110
|
+
end
|
111
|
+
|
112
|
+
let!(:category) do
|
113
|
+
client.create_category(name: 'Dimmer')
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'returns the category' do
|
117
|
+
category.uri.should_not be_nil
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'sends the request' do
|
121
|
+
a_post(path).with(body: {name: 'Dimmer'}).should have_been_made
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe '.update_category' do
|
126
|
+
|
127
|
+
let(:path) do
|
128
|
+
'/categories/4dcb9e23d033a9088900000a'
|
129
|
+
end
|
130
|
+
|
131
|
+
let(:uri) do
|
132
|
+
"http://api.lelylan.com/#{path}"
|
133
|
+
end
|
134
|
+
|
135
|
+
before do
|
136
|
+
stub_put(path).with(body: {name: 'Dimmer'}).to_return(body: fixture('category.json'))
|
137
|
+
end
|
138
|
+
|
139
|
+
let!(:category) do
|
140
|
+
client.update_category(uri, name: 'Dimmer')
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'returns the category' do
|
144
|
+
category.uri.should_not be_nil
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'sends the request' do
|
148
|
+
a_put(path).with(body: {name: 'Dimmer'}).should have_been_made
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe '.delete_category' do
|
153
|
+
|
154
|
+
let(:path) do
|
155
|
+
'/categories/4dcb9e23d033a9088900000a'
|
156
|
+
end
|
157
|
+
|
158
|
+
let(:uri) do
|
159
|
+
"http://api.lelylan.com/#{path}"
|
160
|
+
end
|
161
|
+
|
162
|
+
before do
|
163
|
+
stub_delete(path).to_return(body: fixture('category.json'))
|
164
|
+
end
|
165
|
+
|
166
|
+
let!(:category) do
|
167
|
+
client.delete_category(uri)
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'returns the category' do
|
171
|
+
category.uri.should_not be_nil
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'sends the request' do
|
175
|
+
a_delete(path).should have_been_made
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|