skeleton 0.2.0 → 0.3.0

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +92 -69
  3. data/Rakefile +2 -7
  4. data/lib/skeleton.rb +14 -4
  5. data/lib/skeleton/attributes.rb +19 -0
  6. data/lib/skeleton/config.rb +38 -0
  7. data/lib/skeleton/contact.rb +17 -0
  8. data/lib/skeleton/documentation.rb +17 -0
  9. data/lib/skeleton/example.rb +20 -6
  10. data/lib/skeleton/header.rb +67 -0
  11. data/lib/skeleton/headers.rb +50 -0
  12. data/lib/skeleton/helpers/controller_helpers.rb +25 -0
  13. data/lib/skeleton/info.rb +40 -0
  14. data/lib/skeleton/item.rb +99 -0
  15. data/lib/skeleton/license.rb +16 -0
  16. data/lib/skeleton/model.rb +31 -0
  17. data/lib/skeleton/operation.rb +157 -0
  18. data/lib/skeleton/parameter.rb +100 -20
  19. data/lib/skeleton/path.rb +111 -0
  20. data/lib/skeleton/response.rb +59 -0
  21. data/lib/skeleton/responses.rb +59 -0
  22. data/lib/skeleton/schema.rb +70 -0
  23. data/lib/skeleton/scopes.rb +24 -0
  24. data/lib/skeleton/security_definitions.rb +46 -0
  25. data/lib/skeleton/security_requirement.rb +29 -0
  26. data/lib/skeleton/security_scheme.rb +47 -0
  27. data/lib/skeleton/serializers/swagger.rb +212 -0
  28. data/lib/skeleton/structure.rb +191 -0
  29. data/lib/skeleton/tag.rb +24 -0
  30. data/lib/skeleton/version.rb +1 -1
  31. data/spec/integrations/use_case_spec.rb +130 -0
  32. data/spec/skeleton/operation_spec.rb +113 -0
  33. data/spec/skeleton/serializers/contact_spec.rb +30 -0
  34. data/spec/skeleton/serializers/documentation_spec.rb +23 -0
  35. data/spec/skeleton/serializers/header_spec.rb +57 -0
  36. data/spec/spec_helper.rb +8 -0
  37. metadata +36 -15
  38. data/lib/skeleton/action.rb +0 -46
  39. data/lib/skeleton/builder.rb +0 -47
  40. data/lib/skeleton/link.rb +0 -57
  41. data/spec/skeleton/integrated_spec.rb +0 -38
  42. data/test/skeleton/action_test.rb +0 -78
  43. data/test/skeleton/builder_test.rb +0 -51
  44. data/test/skeleton/link_test.rb +0 -68
  45. data/test/test_helper.rb +0 -6
@@ -1,38 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'skeleton'
4
-
5
- describe 'Full integration test' do
6
- it 'when describing collection resource' do
7
- skeleton = Skeleton.build do |config|
8
- config.define(:get, also: :head) do |action|
9
- action.description = 'Display a list of resources'
10
-
11
- action.param('limit') do |p|
12
- p.type = 'integer'
13
- p.description = 'The number of items desired'
14
- p.required = false
15
- p.restriction('Minimum value is 0')
16
- p.restriction('Maximum value is 9000')
17
- end
18
-
19
- action.param('offset') do |p|
20
- p.type = 'integer'
21
- p.description = 'The offset within the collection'
22
- p.required = false
23
- p.restriction('Minimum value is 0')
24
- end
25
-
26
- action.example do |e|
27
- e.param('limit', 10)
28
- e.param('offset', 0)
29
- end
30
- action.link(name: 'Self', rel: 'self', href: 'https://api.example.org/resources')
31
- end
32
- config.link(name: 'Documentation', rel: 'docs', href: 'https://docs.example.org/resources')
33
- end
34
-
35
- refute_nil(skeleton.actions['get'])
36
- refute_nil(skeleton.actions['head'])
37
- end
38
- end
@@ -1,78 +0,0 @@
1
- require 'test_helper'
2
-
3
- require 'skeleton/action'
4
-
5
- module Skeleton
6
- class ActionTest < Minitest::Test
7
- def setup
8
- @action = Action.new
9
- end
10
-
11
- def test_param
12
- @action.param(:foo) do |param|
13
- param.type = 'integer'
14
- param.required = true
15
- end
16
- refute_nil(@action.parameters['foo'], 'expected parameters to contain "foo"')
17
- parameter = @action.parameters['foo']
18
- assert_equal('integer', parameter.type)
19
- assert(parameter.required, 'expected the parameter to be required')
20
-
21
- @action.param('bar[nested]') do |param|
22
- param.type = 'string'
23
- param.required = false
24
- end
25
- refute_nil(@action.parameters['bar[nested]'], 'expected parameters to contain "bar[nested]"')
26
- parameter = @action.parameters['bar[nested]']
27
- assert_equal('string', parameter.type)
28
- refute(parameter.required, 'expected the parameter to not be required')
29
- end
30
-
31
- def test_link
32
- assert_raises(ArgumentError) do
33
- @action.link({})
34
- end
35
-
36
- assert_raises(ArgumentError) do
37
- @action.link(name: 'Self', href: 'http://example.org/resource/{id}', templated: true)
38
- end
39
-
40
- assert_raises(ArgumentError) do
41
- @action.link(name: 'Self', rel: 'self', templated: true)
42
- end
43
-
44
- @action.link(name: 'Self', rel: 'self', href: 'http://example.org/resource/{id}', templated: true)
45
- refute_nil(@action.links['self'])
46
- @action.link(name: 'Root', rel: 'root', href: 'http://example.org/')
47
- refute_nil(@action.links['root'])
48
- end
49
-
50
- def test_example
51
- assert_empty(@action.examples)
52
- @action.example do |e|
53
- e.param('some[val]', '123')
54
- end
55
- assert_equal(1, @action.examples.count)
56
- @action.example do |e|
57
- e.param('some[val]', '123')
58
- end
59
- assert_equal(2, @action.examples.count)
60
- end
61
-
62
- def test_to_h
63
- @action.description = 'test'
64
- @action.param(:foo) do |param|
65
- param.type = 'integer'
66
- param.required = true
67
- param.allowed = [12]
68
- end
69
-
70
- hash = @action.to_h
71
-
72
- assert_equal('test', hash['description'])
73
- refute_nil(hash['links'])
74
- refute_nil(hash['examples'])
75
- refute_nil(hash['parameters'])
76
- end
77
- end
78
- end
@@ -1,51 +0,0 @@
1
- require 'test_helper'
2
-
3
- require 'skeleton/builder'
4
-
5
- module Skeleton
6
- class BuilderTest < Minitest::Test
7
- def setup
8
- @builder = Builder.new
9
- end
10
-
11
- def test_define_single
12
- @builder.define('get') do |action|
13
- action.description = 'something'
14
- end
15
- refute_nil(@builder.actions['get'])
16
- assert_equal('something', @builder.actions['get'].description)
17
- end
18
-
19
- def test_define_extra
20
- @builder.define('get', also: 'post') do |action|
21
- action.description = 'something'
22
- end
23
- refute_nil(@builder.actions['get'])
24
- refute_nil(@builder.actions['post'])
25
- assert_equal('something', @builder.actions['get'].description)
26
- assert_equal('something', @builder.actions['post'].description)
27
- end
28
-
29
- def test_define_array
30
- @builder.define('get', also: ['post']) do |action|
31
- action.description = 'something'
32
- end
33
- refute_nil(@builder.actions['get'])
34
- refute_nil(@builder.actions['post'])
35
- assert_equal('something', @builder.actions['get'].description)
36
- assert_equal('something', @builder.actions['post'].description)
37
- end
38
-
39
- def test_define_multiple
40
- @builder.define('get', also: ['post', 'head']) do |action|
41
- action.description = 'something'
42
- end
43
- refute_nil(@builder.actions['get'])
44
- refute_nil(@builder.actions['post'])
45
- refute_nil(@builder.actions['head'])
46
- assert_equal('something', @builder.actions['get'].description)
47
- assert_equal('something', @builder.actions['post'].description)
48
- assert_equal('something', @builder.actions['head'].description)
49
- end
50
- end
51
- end
@@ -1,68 +0,0 @@
1
- require 'test_helper'
2
-
3
- require 'skeleton/link'
4
-
5
- module Skeleton
6
- class LinkTest < Minitest::Test
7
- def setup
8
- @link = Link.new(rel: 'self', name: 'Self', href: 'http://example.org')
9
- end
10
-
11
- def test_initialize
12
- assert_raises(ArgumentError) do
13
- Link.new
14
- end
15
- assert_raises(ArgumentError) do
16
- Link.new(rel: 'self')
17
- end
18
-
19
- Link.new(rel: 'self', href: 'http://example.org')
20
- end
21
-
22
- def test_method_missing
23
- assert_raises(NoMethodError) do
24
- @link.foo
25
- end
26
-
27
- @link = Link.new(rel: 'self', href: 'http://example.org', foo: 'bar')
28
- assert_equal('bar', @link.foo)
29
- end
30
-
31
- def test_templated?
32
- refute(@link.templated?)
33
- @link.templated = 'asdf'
34
- assert(@link.templated?)
35
- @link.templated = false
36
- refute(@link.templated?)
37
- end
38
-
39
- def test_comparable
40
- other = Link.new(rel: 'self', name: 'Self', href: 'http://example.org')
41
- assert_equal(0, other <=> @link)
42
-
43
- before = Link.new(rel: 'other', href: 'http://example.org')
44
- assert_equal(-1, before <=> @link)
45
-
46
- after = Link.new(rel: 'zoo', href: 'http://example.org')
47
- assert_equal(1, after <=> @link)
48
- end
49
-
50
- def test_eql?
51
- other = Link.new(rel: 'self', name: 'Self', href: 'http://example.org')
52
- assert(@link.eql?(other))
53
-
54
- other = Link.new(rel: 'other', href: 'http://example.org')
55
- refute(@link.eql?(other))
56
-
57
- other = Object.new
58
- refute(@link.eql?(other))
59
- end
60
-
61
- def test_to_h
62
- hash = @link.to_h
63
- assert_equal('self', hash['rel'])
64
- assert_equal('Self', hash['name'])
65
- assert_equal('http://example.org', hash['href'])
66
- end
67
- end
68
- end
@@ -1,6 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
-
4
- require 'minitest/autorun'
5
- require 'minitest/spec'
6
- require 'minitest/pride'