angus 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/angus/base.rb CHANGED
@@ -89,6 +89,7 @@ module Angus
89
89
  params = Params.indifferent_params(params)
90
90
 
91
91
  resource = resource_definition.resource_class.new(request, params)
92
+ @response['Content-Type'] = 'application/json'
92
93
 
93
94
  begin
94
95
  response = resource.send(operation.code_name)
@@ -10,7 +10,7 @@ module Angus
10
10
  end
11
11
 
12
12
  def operations
13
- @representations.operations[@resource_name.to_s]
13
+ @representations.operations[@resource_name.to_s] || []
14
14
  end
15
15
 
16
16
  def canonical_name
data/lib/angus/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Angus
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -0,0 +1,4 @@
1
+ ResourceNotFound:
2
+ status_code: 404
3
+ level: error
4
+ description: Recurso no encontrado
@@ -0,0 +1,10 @@
1
+ user_profile:
2
+ - field: id
3
+ description: Idenfiticador del usuario
4
+ required: true
5
+ type: integer
6
+ - field: name
7
+ description: Nombres del usuario
8
+ required: true
9
+ type: string
10
+
@@ -0,0 +1,3 @@
1
+ service: 'Basic'
2
+ code_name: 'basic'
3
+ version: '0.1'
@@ -0,0 +1,37 @@
1
+ get_user:
2
+ name: Obtener Información de un Usuario
3
+ description: >
4
+ Devuelve información del usuario, como por ejemplo e-mail y fecha de nacimiento.
5
+
6
+ path: /users/:user_id
7
+ method: get
8
+ uri:
9
+ - element: user_id
10
+ description: Identificador del usuario
11
+
12
+ response:
13
+ - element: profile
14
+ description: Perfil del usuario
15
+ required: true
16
+ type: user_profile
17
+
18
+ messages:
19
+ - key: ResourceNotFound
20
+
21
+ get_users:
22
+ name: Obtener Lista de usuarios
23
+ description: >
24
+ Devuelve lista de usarios.
25
+
26
+ path: /users
27
+ method: get
28
+
29
+ response:
30
+ - element: users
31
+ description: Perfil del usuario
32
+ required: true
33
+ elements_type: user_profile
34
+
35
+ messages:
36
+ - key: ResourceNotFound
37
+
@@ -0,0 +1,12 @@
1
+ class Users < Angus::BaseResource
2
+ USERS = [{ :id => 1, :name => 'ac/dc'},{:id => 2, :name => 'madonna' }]
3
+
4
+ def get_user
5
+ {:profile => USERS.find{ |user| user[:id] == params[:user_id].to_i }}
6
+ end
7
+
8
+ def get_users
9
+ {:users => USERS}
10
+ end
11
+
12
+ end
@@ -0,0 +1,14 @@
1
+ require 'angus'
2
+
3
+ module Spec
4
+ module Functional
5
+
6
+
7
+ class Basic < Angus::Base
8
+ def configure
9
+ register :users
10
+ end
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rack/test'
4
+
5
+ require 'functional/basic/services/basic'
6
+
7
+ describe Spec::Functional::Basic do
8
+ include Rack::Test::Methods
9
+
10
+ def app
11
+ Dir.chdir("#{File.dirname(__FILE__ )}/basic")
12
+ Spec::Functional::Basic.new
13
+ end
14
+
15
+ it 'responds to /' do
16
+ get '/'
17
+
18
+ last_response.status.should eq(200)
19
+ end
20
+
21
+ describe 'the documentation url' do
22
+
23
+ it 'responds to /basic/doc/0.1' do
24
+ get '/basic/doc/0.1'
25
+
26
+ last_response.status.should eq(200)
27
+ end
28
+
29
+ context 'when no format' do
30
+ it 'sets a html content type' do
31
+ get '/basic/doc/0.1'
32
+
33
+ last_response.header['Content-Type'].should eq('text/html')
34
+ end
35
+ end
36
+
37
+ context 'when json format' do
38
+ it 'sets a json content type' do
39
+ get '/basic/doc/0.1?format=json'
40
+
41
+ last_response.header['Content-Type'].should eq('application/json')
42
+ end
43
+ end
44
+
45
+ end
46
+
47
+ describe 'an operation url' do
48
+
49
+ it 'responds to /basic/api/0.1/users' do
50
+ get '/basic/api/0.1/users'
51
+
52
+ last_response.status.should eq(200)
53
+ end
54
+
55
+ it 'sets a json content type' do
56
+ get '/basic/api/0.1/users'
57
+
58
+ last_response.header['Content-Type'].should eq('application/json')
59
+ end
60
+
61
+ end
62
+
63
+ end
@@ -0,0 +1,3 @@
1
+ service: 'Empty resource'
2
+ code_name: 'empty_resource'
3
+ version: '0.1'
@@ -0,0 +1,3 @@
1
+ class Users < Angus::BaseResource
2
+
3
+ end
@@ -0,0 +1,14 @@
1
+ require 'angus'
2
+
3
+ module Spec
4
+ module Functional
5
+
6
+
7
+ class EmptyResource < Angus::Base
8
+ def configure
9
+ register :users
10
+ end
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rack/test'
4
+
5
+ require 'functional/empty_resource/services/empty_resource'
6
+
7
+ describe Spec::Functional::EmptyResource do
8
+ include Rack::Test::Methods
9
+
10
+ def app
11
+ Dir.chdir("#{File.dirname(__FILE__ )}/empty_resource")
12
+ Spec::Functional::EmptyResource.new
13
+ end
14
+
15
+ it 'responds to /' do
16
+ get '/'
17
+
18
+ last_response.status.should eq(200)
19
+ end
20
+
21
+ describe 'when a unknown url' do
22
+
23
+ let(:url) { '/empty_resource/api/0.1/unknown' }
24
+
25
+ it 'responds to /basic/doc/0.1' do
26
+ get url
27
+
28
+ last_response.status.should eq(404)
29
+ end
30
+
31
+ it 'sets a json content type' do
32
+ get url
33
+
34
+ last_response.header['Content-Type'].should eq('application/json')
35
+ end
36
+
37
+ end
38
+
39
+ describe 'the documentation url' do
40
+
41
+ let(:url) { '/empty_resource/doc/0.1' }
42
+
43
+ it 'returns a success status' do
44
+ get url
45
+
46
+ last_response.status.should eq(200)
47
+ end
48
+
49
+ context 'when no format' do
50
+ it 'sets a html content type' do
51
+ get url
52
+
53
+ last_response.header['Content-Type'].should eq('text/html')
54
+ end
55
+ end
56
+
57
+ context 'when json format' do
58
+ it 'sets a json content type' do
59
+ get "#{url}?format=json"
60
+
61
+ last_response.header['Content-Type'].should eq('application/json')
62
+ end
63
+ end
64
+
65
+ end
66
+
67
+ end
@@ -0,0 +1,3 @@
1
+ service: 'No Resources'
2
+ code_name: 'no_resources'
3
+ version: '0.1'
@@ -0,0 +1,13 @@
1
+ require 'angus'
2
+
3
+ module Spec
4
+ module Functional
5
+
6
+
7
+ class NoResources < Angus::Base
8
+ def configure
9
+ end
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rack/test'
4
+
5
+ require 'functional/no_resources/services/no_resources'
6
+
7
+ describe Spec::Functional::NoResources do
8
+ include Rack::Test::Methods
9
+
10
+ def app
11
+ Dir.chdir("#{File.dirname(__FILE__ )}/no_resources")
12
+ Spec::Functional::NoResources.new
13
+ end
14
+
15
+ it 'responds to /' do
16
+ get '/'
17
+
18
+ last_response.status.should eq(200)
19
+ end
20
+
21
+ describe 'when a unknown url' do
22
+
23
+ let(:url) { '/no_resources/api/0.1/unknown' }
24
+
25
+ it 'responds to /basic/doc/0.1' do
26
+ get url
27
+
28
+ last_response.status.should eq(404)
29
+ end
30
+
31
+ it 'sets a json content type' do
32
+ get url
33
+
34
+ last_response.header['Content-Type'].should eq('application/json')
35
+ end
36
+
37
+ end
38
+
39
+ describe 'the documentation url' do
40
+
41
+ let(:url) { '/no_resources/doc/0.1' }
42
+
43
+ it 'returns a success status' do
44
+ get url
45
+
46
+ last_response.status.should eq(200)
47
+ end
48
+
49
+ context 'when no format' do
50
+ it 'sets a html content type' do
51
+ get url
52
+
53
+ last_response.header['Content-Type'].should eq('text/html')
54
+ end
55
+ end
56
+
57
+ context 'when json format' do
58
+ it 'sets a json content type' do
59
+ get "#{url}?format=json"
60
+
61
+ last_response.header['Content-Type'].should eq('application/json')
62
+ end
63
+ end
64
+
65
+ end
66
+
67
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-10-30 00:00:00.000000000 Z
14
+ date: 2013-11-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: thor
@@ -37,6 +37,9 @@ dependencies:
37
37
  - - ~>
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0.0'
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: 0.0.3
40
43
  type: :runtime
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -45,6 +48,9 @@ dependencies:
45
48
  - - ~>
46
49
  - !ruby/object:Gem::Version
47
50
  version: '0.0'
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 0.0.3
48
54
  - !ruby/object:Gem::Dependency
49
55
  name: angus-router
50
56
  requirement: !ruby/object:Gem::Requirement
@@ -53,6 +59,9 @@ dependencies:
53
59
  - - ~>
54
60
  - !ruby/object:Gem::Version
55
61
  version: '0.0'
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: 0.0.3
56
65
  type: :runtime
57
66
  prerelease: false
58
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -61,6 +70,9 @@ dependencies:
61
70
  - - ~>
62
71
  - !ruby/object:Gem::Version
63
72
  version: '0.0'
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.3
64
76
  - !ruby/object:Gem::Dependency
65
77
  name: rake
66
78
  requirement: !ruby/object:Gem::Requirement
@@ -125,6 +137,22 @@ dependencies:
125
137
  - - ~>
126
138
  - !ruby/object:Gem::Version
127
139
  version: '0.7'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rack-test
142
+ requirement: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ~>
146
+ - !ruby/object:Gem::Version
147
+ version: '0.6'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ~>
154
+ - !ruby/object:Gem::Version
155
+ version: '0.6'
128
156
  - !ruby/object:Gem::Dependency
129
157
  name: simplecov-rcov
130
158
  requirement: !ruby/object:Gem::Requirement
@@ -217,6 +245,25 @@ files:
217
245
  - lib/angus.rb
218
246
  - spec/spec_helper.rb
219
247
  - spec/angus/rspec/examples/describe_errors_spec.rb
248
+ - spec/functional/no_resources_spec.rb
249
+ - spec/functional/empty_resource_spec.rb
250
+ - spec/functional/basic/resources/users.rb
251
+ - spec/functional/basic/services/basic.rb
252
+ - spec/functional/basic/definitions/representations.yml
253
+ - spec/functional/basic/definitions/users/operations.yml
254
+ - spec/functional/basic/definitions/messages.yml
255
+ - spec/functional/basic/definitions/service.yml
256
+ - spec/functional/empty_resource/resources/users.rb
257
+ - spec/functional/empty_resource/services/empty_resource.rb
258
+ - spec/functional/empty_resource/definitions/representations.yml
259
+ - spec/functional/empty_resource/definitions/users/operations.yml
260
+ - spec/functional/empty_resource/definitions/messages.yml
261
+ - spec/functional/empty_resource/definitions/service.yml
262
+ - spec/functional/basic_spec.rb
263
+ - spec/functional/no_resources/services/no_resources.rb
264
+ - spec/functional/no_resources/definitions/representations.yml
265
+ - spec/functional/no_resources/definitions/messages.yml
266
+ - spec/functional/no_resources/definitions/service.yml
220
267
  - bin/angus
221
268
  homepage: http://mooveit.github.io/angus-sdoc
222
269
  licenses:
@@ -246,3 +293,22 @@ summary: angus
246
293
  test_files:
247
294
  - spec/spec_helper.rb
248
295
  - spec/angus/rspec/examples/describe_errors_spec.rb
296
+ - spec/functional/no_resources_spec.rb
297
+ - spec/functional/empty_resource_spec.rb
298
+ - spec/functional/basic/resources/users.rb
299
+ - spec/functional/basic/services/basic.rb
300
+ - spec/functional/basic/definitions/representations.yml
301
+ - spec/functional/basic/definitions/users/operations.yml
302
+ - spec/functional/basic/definitions/messages.yml
303
+ - spec/functional/basic/definitions/service.yml
304
+ - spec/functional/empty_resource/resources/users.rb
305
+ - spec/functional/empty_resource/services/empty_resource.rb
306
+ - spec/functional/empty_resource/definitions/representations.yml
307
+ - spec/functional/empty_resource/definitions/users/operations.yml
308
+ - spec/functional/empty_resource/definitions/messages.yml
309
+ - spec/functional/empty_resource/definitions/service.yml
310
+ - spec/functional/basic_spec.rb
311
+ - spec/functional/no_resources/services/no_resources.rb
312
+ - spec/functional/no_resources/definitions/representations.yml
313
+ - spec/functional/no_resources/definitions/messages.yml
314
+ - spec/functional/no_resources/definitions/service.yml