jellyfish-contrib 1.1.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.
@@ -0,0 +1,131 @@
1
+
2
+ require 'jellyfish/test'
3
+
4
+ describe Jellyfish do
5
+ paste :jellyfish
6
+
7
+ app = Rack::Builder.app do
8
+ eval File.read("#{File.dirname(__FILE__)}/../config.ru")
9
+ end
10
+
11
+ def string_keys hash
12
+ hash.inject({}){ |r, (k, v)| r[k.to_s] = v; r }
13
+ end
14
+
15
+ would '/swagger' do
16
+ status, headers, body = get('/swagger', app)
17
+ status .should.eq 200
18
+ headers['Content-Type'].should.eq 'application/json; charset=utf-8'
19
+ res = Jellyfish::Json.decode(body.to_a.join)
20
+ res['swaggerVersion'].should.eq '1.2'
21
+ res['info'] .should.eq string_keys(Jelly.info)
22
+ res['apiVersion'] .should.eq Jelly.swagger_apiVersion
23
+ res['apis'] .should.eq \
24
+ [{'path' => '/users'}, {'path' => '/posts'}]
25
+ end
26
+
27
+ would '/swagger/users' do
28
+ status, _, body = get('/swagger/users', app)
29
+ status .should.eq 200
30
+ res = Jellyfish::Json.decode(body.to_a.join)
31
+ res['basePath'] .should.eq 'https://localhost:8080'
32
+ res['resourcePath'].should.eq '/users'
33
+ res['apis'] .should.eq \
34
+ [{"path"=>"/users",
35
+ "operations"=>[{"summary"=>"List users",
36
+ "notes"=>"List users<br>Note that we do not really" \
37
+ " have users.",
38
+ "path"=>"/users",
39
+ "method"=>"GET",
40
+ "nickname"=>"/users",
41
+ "parameters"=>[]},
42
+ {"summary"=>"Create a user",
43
+ "notes"=>"Create a user<br>Here we demonstrate how" \
44
+ " to write the swagger doc.",
45
+ "parameters"=>[{"type"=>"string",
46
+ "required"=>true,
47
+ "description"=>"The name of the user",
48
+ "name"=>"name",
49
+ "paramType"=>"query"},
50
+ {"type"=>"boolean",
51
+ "description"=>"If the user is sane",
52
+ "name"=>"sane",
53
+ "required"=>false,
54
+ "paramType"=>"query"},
55
+ {"type"=>"string",
56
+ "description"=>"What kind of user",
57
+ "enum"=>["good", "neutral", "evil"],
58
+ "name"=>"type",
59
+ "required"=>false,
60
+ "paramType"=>"query"}],
61
+ "responseMessages"=>[{"code"=>400,
62
+ "message"=>"Invalid name"}],
63
+ "path"=>"/users",
64
+ "method"=>"POST",
65
+ "nickname"=>"/users"}]},
66
+ {"path"=>"/users/{id}",
67
+ "operations"=>[{"summary"=>"Update a user",
68
+ "parameters"=>[{"type"=>"integer",
69
+ "description"=>"The id of the user",
70
+ "name"=>"id",
71
+ "required"=>true,
72
+ "paramType"=>"path"}],
73
+ "path"=>"/users",
74
+ "method"=>"PUT",
75
+ "nickname"=>"/users/{id}",
76
+ "notes"=>"Update a user"},
77
+ {"path"=>"/users",
78
+ "method"=>"DELETE",
79
+ "nickname"=>"/users/{id}",
80
+ "summary"=>nil,
81
+ "notes"=>nil,
82
+ "parameters"=>[{"name"=>"id",
83
+ "type"=>"integer",
84
+ "required"=>true,
85
+ "paramType"=>"path"}]}]}]
86
+ end
87
+
88
+ swagger = Jellyfish::Swagger.new(Class.new{include Jellyfish})
89
+
90
+ would 'swagger_path' do
91
+ swagger.send(:swagger_path, '/') .should.eq '/'
92
+ swagger.send(:swagger_path, '/users/{id}').should.eq '/users'
93
+ end
94
+
95
+ would 'nickname' do
96
+ swagger.send(:nickname, '/') .should.eq '/'
97
+ swagger.send(:nickname, '/users/{id}') .should.eq '/users/{id}'
98
+ swagger.send(:nickname, %r{\A/users/(?<id>\d+)}).should.eq '/users/{id}'
99
+ swagger.send(:nickname, %r{^/users/(?<id>\d+)$}).should.eq '/users/{id}'
100
+ swagger.send(:nickname, %r{/(?<a>\d)/(?<b>\w)$}).should.eq '/{a}/{b}'
101
+ end
102
+
103
+ would 'notes' do
104
+ swagger.send(:notes, :summary => 'summary', :notes => 'notes').
105
+ should.eq 'summary<br>notes'
106
+ swagger.send(:notes, :summary => 'summary').
107
+ should.eq 'summary'
108
+ end
109
+
110
+ would 'path_parameters' do
111
+ swagger.send(:path_parameters, %r{/(?<a>\d)/(?<b>\w)/(?<c>\d)$},
112
+ :parameters => {:c => {:type => 'hash'}}).
113
+ should.eq([{:name => 'a', :type => 'integer',
114
+ :required => true, :paramType => 'path'},
115
+ {:name => 'b', :type => 'string',
116
+ :required => true, :paramType => 'path'},
117
+ {:name => 'c', :type => 'hash',
118
+ :required => true, :paramType => 'path'}])
119
+ end
120
+
121
+ would 'query_parameters' do
122
+ swagger.send(:query_parameters,
123
+ :parameters => {:c => {:type => 'hash'}}).
124
+ should.eq([:name => 'c', :type => 'hash',
125
+ :required => false, :paramType => 'query'])
126
+ swagger.send(:query_parameters,
127
+ :parameters => {:c => {:required => true}}).
128
+ should.eq([:name => 'c', :type => 'string',
129
+ :required => true, :paramType => 'query'])
130
+ end
131
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jellyfish-contrib
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Lin Jen-Shin (godfat)
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jellyfish
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Extra [Jellyfish](https://github.com/godfat/jellyfish) extensions.
28
+ email:
29
+ - godfat (XD) godfat.org
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitmodules"
35
+ - ".travis.yml"
36
+ - CHANGES.md
37
+ - Gemfile
38
+ - LICENSE
39
+ - README.md
40
+ - Rakefile
41
+ - config.ru
42
+ - jellyfish-contrib.gemspec
43
+ - lib/jellyfish-contrib.rb
44
+ - lib/jellyfish/multi_actions.rb
45
+ - lib/jellyfish/sinatra.rb
46
+ - lib/jellyfish/swagger.rb
47
+ - public/css/screen.css
48
+ - public/index.html
49
+ - public/js/shred.bundle.js
50
+ - public/js/shred/content.js
51
+ - public/js/swagger-ui.js
52
+ - public/js/swagger.js
53
+ - task/README.md
54
+ - task/gemgem.rb
55
+ - test/test_from_readme.rb
56
+ - test/test_multi_actions.rb
57
+ - test/test_swagger.rb
58
+ homepage: https://github.com/godfat/jellyfish-contrib
59
+ licenses:
60
+ - Apache License 2.0
61
+ metadata: {}
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 2.4.8
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: Extra [Jellyfish](https://github.com/godfat/jellyfish) extensions.
82
+ test_files:
83
+ - test/test_from_readme.rb
84
+ - test/test_multi_actions.rb
85
+ - test/test_swagger.rb