lurker 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.travis.yml +7 -0
  5. data/Gemfile +26 -2
  6. data/Gemfile.ci +4 -0
  7. data/README.md +44 -23
  8. data/Rakefile +85 -19
  9. data/features/docs_generation/html_generation.feature +7 -2
  10. data/features/docs_generation/multidomain_support.feature +12 -10
  11. data/features/docs_generation/partials.feature +98 -0
  12. data/features/step_definitions/additional_cli_steps.rb +14 -1
  13. data/features/support/env.rb +1 -0
  14. data/lib/lurker/cli.rb +16 -2
  15. data/lib/lurker/endpoint.rb +4 -0
  16. data/lib/lurker/form_builder.rb +1 -1
  17. data/lib/lurker/presenters/endpoint_presenter.rb +17 -16
  18. data/lib/lurker/presenters/schema_presenter.rb +10 -13
  19. data/lib/lurker/presenters/service_presenter.rb +11 -1
  20. data/lib/lurker/sandbox.rb +7 -2
  21. data/lib/lurker/service.rb +2 -2
  22. data/lib/lurker/templates/bootstrap.css.map +1 -0
  23. data/lib/lurker/templates/javascripts/JSXTransformer.js +12569 -0
  24. data/lib/lurker/templates/javascripts/application.js +7 -0
  25. data/lib/lurker/templates/javascripts/lurker.js +16 -45
  26. data/lib/lurker/templates/javascripts/phantomjs-shims.js +35 -0
  27. data/lib/lurker/templates/javascripts/react-catalyst.js +70 -0
  28. data/lib/lurker/templates/javascripts/react-with-addons.js +18884 -0
  29. data/lib/lurker/templates/layouts/application.html.erb +1 -1
  30. data/lib/lurker/templates/lurker/rendering/_param_form_element.html.erb +4 -4
  31. data/lib/lurker/templates/lurker/rendering/_param_form_legend.html.erb +1 -1
  32. data/lib/lurker/templates/lurker/rendering/_submit_form.html.erb +140 -0
  33. data/lib/lurker/templates/lurker/rendering/index.html.erb +5 -1
  34. data/lib/lurker/templates/lurker/rendering/show.html.erb +1 -40
  35. data/lib/lurker/templates/public/application.css +5 -0
  36. data/lib/lurker/templates/public/application.js +31828 -233
  37. data/lib/lurker/templates/stylesheets/application.css +5 -0
  38. data/lib/lurker/version.rb +1 -1
  39. data/lurker.gemspec +18 -18
  40. data/templates/generate_stuff.rb +6 -4
  41. data/templates/lurker_app.rb +1 -1
  42. metadata +79 -71
  43. metadata.gz.asc +7 -7
  44. data/Gemfile.local +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb20f62f6736dd539b2feb809ca7604d9dbdae7c
4
- data.tar.gz: ff091f8fdb08b2e1e6e804f280f132527aff1d96
3
+ metadata.gz: 283e1232ba94b0709c578cd9079df7752d246771
4
+ data.tar.gz: 052b2c171edb907e97c14d33c0e06825525714fc
5
5
  SHA512:
6
- metadata.gz: 1cb6b580de47bc8d65f1559c41390b9512da9a256ca1fa398e6e334f902b7c0c47d50b3b174db3d4f2fe5b418d133b532071c17348a01b8ec77146f8ded8861b
7
- data.tar.gz: 30a5a43b6ba3fe8e3461204b71c047f62b368c65fb470a1141046d1db393757717b9e0b546b472598da627f70507bde13d9c6510cb0604070979e868e0469f79
6
+ metadata.gz: ef36571fc15bc8b40b083f915a14ce602db250e8ff8d1bdace6d89da88c98a537fec81ced6a3db3cb599044e3a5f93f380a9f695874e4439e7cb4b5792484eb0
7
+ data.tar.gz: 91fd578c50783ff3f4125e6a2f31bc562054c401bec74698409ce0ede15b7f524a8ee51edfa9a2c7a7c90dcd55af6238d73b363f1dbafcaac7f71deb6b7786bf
checksums.yaml.gz.asc CHANGED
@@ -2,11 +2,11 @@
2
2
  Version: GnuPG v1
3
3
  Comment: GPGTools - http://gpgtools.org
4
4
 
5
- iQEcBAABCgAGBQJTWFrwAAoJENcoxKfNVdjbBFsH/RrX8rityUpM374B+mzfN3d/
6
- aRu+TTSa33PEIi9SgmlKUBqAn/VFOvBg1DWoW/+WoIEJcmfEct/WBSgHX2eNAmef
7
- x8bYKeF2ZAPcvKsF3K76q4WlggBGTm9WaeltMpowqtbfNSFH92PFspzPhLijTXLy
8
- RVAJMyzsJQytx3NW94Qg6vOGrRLG+5eiF8ZQPM/1Sf3dAtMJM5QeDMWVyE/1HvCn
9
- o+7pMxariUlmx0rtrtLkCw8EfBiECmcQvqj035qI7iGrFkzeppqr+efxKL0zHXQ2
10
- sIM8T1teL2UNRnkOsDjDWVxAmZCJoA9ehxqSw1KRz3C/yuttpRWz5Um76/ycbQA=
11
- =gAyH
5
+ iQEcBAABCgAGBQJTXvK5AAoJENcoxKfNVdjb5RoIAMetNDxFZ6KmLPkDpq50xeUt
6
+ HZri9cCVeD+5zk2SqIGTzh8jI1pqg822e1gFOyPpkZaXMUKisA0Lbogc2EWjsjte
7
+ HRjmH+ZL16VqFMhDFBoCX9Q1yXPm4wWhVcKK23fCbnY0x5HY2uHMUim8yDAN2bUO
8
+ /X7KIkNAwMLcihR1sHg8vCkmRWpN+29qaAvAOjjiyLyiND+Z7doweWNVrvxIF5Ei
9
+ L1jqEQouA+yXpSXtxYr4T+uQmwQCuL8TxDDm6EzMF8TuQFhLV2BwE2l8fQ5ZTtWq
10
+ qbysZqac/GxHz47at7+d1ghokp+jQ8uNt90vvNlo+ISfNOCHdP5jMEVTt6m1+HI=
11
+ =77ha
12
12
  -----END PGP SIGNATURE-----
data.tar.gz.asc CHANGED
@@ -2,11 +2,11 @@
2
2
  Version: GnuPG v1
3
3
  Comment: GPGTools - http://gpgtools.org
4
4
 
5
- iQEcBAABCgAGBQJTWFrrAAoJENcoxKfNVdjb8HQH/0im2GLtDVlR4bkPz6DpGX1y
6
- DyWk914EJPaeY4aTxBbUOstWzucrGhuVx3AcUUQ9JOq5RzJlOTwP0in+VcA6Zv3x
7
- 3lEOOmhL1Y3qw/jkcn6H6kJPchnUkkWWlqqexYMYpQUBfSmjXaW8zPPnTtbVY2E3
8
- a0UhhnLB7K1vHpHqXm+OdpUMkjJ4tGClXZs87D3aDEt7LuQERSHr93BltX6Vts/L
9
- ijoZzr5V7AEtoK1AU7N2Ob4fd95HFnU3cHWMoDZIsKPAM/5YlLWwnw2PWi94SWMX
10
- 8kfqPa9g9uY7AtVT88rD5015Q4ww7WvsTfCW/wYIvpQ6Zwv1KL8RJBZQ4RQJskw=
11
- =5tUn
5
+ iQEcBAABCgAGBQJTXvK2AAoJENcoxKfNVdjbkmkIAJPPUMpXPntfkoEtTB4WAgo7
6
+ kFQwMJD5Lrz10tLwf7o8pkZWOEOMmHbZW46v2iLzgEXoXoBF5IOO8hBW0UmplWcK
7
+ s9Jx8ws2BrMt21qI48qYHDLHmn+Wexjvj/pV5X31JgfilzW9BhgV7MSfS//RmDkv
8
+ t5NCGdg84AJidKMGL95r4gxn7Uxp6q7oMZQONx9oaqXTAqLu7x9iuXTH1B3+1gNc
9
+ vJq+By9GseQ+I/TEPkz1wllWM3adMWH2a9iMqCys8DWw13Dpam8xnLRdEO+ZVJSy
10
+ hs2rVOKcGfEFEfI3gbwnd6VI7ItVxnFRlumNlEZ/V3ZkNANNQq+PEgOMBdasbgI=
11
+ =9S7g
12
12
  -----END PGP SIGNATURE-----
data/.travis.yml CHANGED
@@ -1,7 +1,14 @@
1
1
  language: ruby
2
+ gemfile: Gemfile.ci
2
3
  install: bundle install -j4 --path vendor/bundle
3
4
  cache:
4
5
  directories:
5
6
  - vendor/bundle
6
7
  rvm:
8
+ - 1.9.3
9
+ - 2.0.0
7
10
  - 2.1.0
11
+ matrix:
12
+ allow_failures:
13
+ - rvm: 1.9.3
14
+ - rvm: 2.0.0
data/Gemfile CHANGED
@@ -1,4 +1,28 @@
1
1
  source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in lurker.gemspec
4
2
  gemspec
3
+
4
+ # Add any gems and groups that you don't want to keep local
5
+ group :development do
6
+ # tools
7
+ gem 'pry-debugger'
8
+ gem 'pry-stack_explorer'
9
+ # rspec --format fuubar
10
+ gem 'fuubar'
11
+ # cucumber --format fuubar
12
+ gem 'fuubar-cucumber', github: 'martinciu/fuubar-cucumber', branch: 'master'
13
+ gem 'selenium-webdriver'
14
+
15
+ # deploy site
16
+ gem 'highline'
17
+
18
+ # build template static
19
+ # run `rake assets:precompile`
20
+ # to get bundled application.(js|css)
21
+ gem 'sprockets'
22
+ gem 'sass-rails'
23
+ gem 'coffee-rails'
24
+ gem 'bootstrap-sass', '~> 3.1.1'
25
+ gem 'jquery-rails'
26
+ gem 'remotipart'
27
+ gem "launchy"
28
+ end
data/Gemfile.ci ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in lurker.gemspec
4
+ gemspec
data/README.md CHANGED
@@ -5,12 +5,8 @@ The new de-facto for API testing your Rails application (Rails 3 & 4 both compat
5
5
  [![Gem Version][GV img]][Gem Version]
6
6
  [![Build Status][BS img]][Build Status]
7
7
  [![Dependency Status][DS img]][Dependency Status]
8
- [![Code Climate][CC img]][Code Climate]
9
- [![Coverage Status][CS img]][Coverage Status]
10
- [![Inline docs](http://inch-pages.github.io/github/razum2um/lurker.png)](http://inch-pages.github.io/github/razum2um/lurker)
11
8
  [![githalytics.com alpha](https://cruel-carlota.pagodabox.com/87ced56265849ad6386c2ba0a78f8038 "githalytics.com")](http://githalytics.com/razum2um/lurker)
12
9
 
13
-
14
10
  ## Installation
15
11
 
16
12
  Add this line to your application's Gemfile:
@@ -61,8 +57,8 @@ Now, you can test your API on-line (for real)
61
57
  - [Pretty HTML documentation based on your schemas][html_generation_example]
62
58
  - [Pretty submit form to test API endpoints (live) based on schemas][demo_live] (enter a name & press "Submit")
63
59
  - [Handling URLs with dynamic segments][nested_controller_spec_example] (such as `api/v1/:user_id/repos`)
60
+ - [JSON-Schema partials][partial_example], also in YAML format ([demo][partial_example_demo])
64
61
  - Multiple docs for many test cases
65
- - JSON-Schema partials (inline reference to other schemas)
66
62
  - ERB support inside `.json.yml.erb`
67
63
  - HTTP-Auth authorization for your online docs
68
64
  - Separate API-services generated within one test suite
@@ -71,42 +67,61 @@ Now, you can test your API on-line (for real)
71
67
  - Static site deploy and milti-domain support
72
68
  - Builtin Rack middlware `Lurker::Server.to_rack` serves cached digested assets
73
69
 
70
+ ## Token authentication with sandbox
74
71
 
75
- ## Sandbox mode for Live API testing
72
+ `Lurker::Sandbox` allows you to test services with token authentication:
76
73
 
77
74
  # make sure it's not production!
78
75
  # e.g. config/environtents/staging.rb
79
76
  config.middleware.use Lurker::Sandbox
80
77
 
78
+ E.g. demo application runs with it: when creating, updating repos or users
79
+ ids getting increased, but if you look into GET #index,
80
+ new items are NOT showing up. **This is NOT a bug!** - sequences in postgres
81
+ are increasing notwithstanding ROLLBACK is called. As such:
82
+
83
+ - run all your specs with **the same** testing token
84
+ - ensure the same token to be accepted on your demo application
85
+ - insert `Lurker::Sandbox` and the recorded examples should be ok to submit again
86
+
81
87
  ## Demo application
82
88
 
83
89
  You can clone the repo & run `rake build_example_docs`.
84
90
  It will generate testing rails application under `tmp/lurker_app`.
85
91
  Currently it is deployed [here][demo_app].
86
92
 
93
+
87
94
  ## Contributions
88
95
 
89
- To get new version of bundled `bootstrap` or to use debugger in specs run:
96
+ [![Code Climate][CC img]][Code Climate]
97
+ [![Coverage Status][CS img]][Coverage Status]
98
+ [![Inline docs](http://inch-pages.github.io/github/razum2um/lurker.png)](http://inch-pages.github.io/github/razum2um/lurker)
99
+ [![Stories in Ready](https://badge.waffle.io/razum2um/lurker.png?label=ready&title=Ready&_=1)][waffle]
100
+
101
+ I try to use [Waffle][waffle] to develop this gem, if you want to help:
102
+
103
+ - look on "Ready" section
104
+ - drag an issue to "In Progress" and assign to yourself
105
+ - have fun!
90
106
 
91
- bundle --gemfile Gemfile.local
92
- export BUNDLE_GEMFILE=$PWD/Gemfile.local
107
+ **NOTICE:** to get new version of bundled `bootstrap` or update js/css,
108
+ don't touch files under `lib/lurker/templates/public` - they are autogenerated
109
+ and copied to static generated site while `bin/lurker convert`
93
110
 
94
- rake assets:precompile # to build assets
95
- cucumber some/feature # to use pry-debugger
111
+ rake assets:precompile # to build them
96
112
 
97
- ## Todo
113
+ Don't commit them to avoid conflicts.
98
114
 
99
- - More tests
100
- - More docs
101
- - Production middleware to validate real input/output
102
- - Render lurker-app to gh-pages with arbitrary endpoint (my & heroku)
103
- - Render dosc like these: [gh_api][gh_api]
104
- - Auto extraction for models into json-schema partials (in responses at least)
105
- - Auto marking of attributes as required if `strong_params` are used
106
- - Sinatra support
107
- - Render to Middleman's markdown -> static site
108
- - Better Diff expected-schema vs recorded schema
109
- - XML api testing via .xsd
115
+ **NOTE:** if you write features keep in mind to generate different files with aruba,
116
+ because they are kept in `lurker_app` directory to be deployed as a demo. Please, write
117
+ features in a way to generate **new** relevant `lurker/**/*.json.yml` files
118
+
119
+ To run cucumber in a clean `lurker` & `html` directories run:
120
+
121
+ CLEAN=1 cucumber features
122
+
123
+ **NOTE:** template partial `submit_form.html.erb` and it's partials is a big `jsx` script for `React`
124
+ so there are `<label htmlFor` instead of `<label for>` and `<div className` instead of `<div class`
110
125
 
111
126
  ## Acknoledgements
112
127
 
@@ -116,9 +131,13 @@ This gem is quite opinionated and relies on rails & rspec - if you're
116
131
  interested in anything else, please take a look at [api_taster][api_taster] or [fdoc][fdoc],
117
132
  This gem is heavily inspirated by them. Thanks, @square & @fredwu
118
133
 
134
+ Also thanks to [React.js][reactjs] for two-way binding.
135
+
136
+ [waffle]: https://waffle.io/razum2um/lurker
119
137
  [gh_api]: https://developer.github.com/v3/meta/
120
138
  [rspec]: https://github.com/rspec/rspec-rails
121
139
  [api_taster]: https://github.com/fredwu/api_taster
140
+ [reactjs]: http://facebook.github.io/react/
122
141
  [fdoc]: https://github.com/square/fdoc
123
142
  [rspec_controller_spec]: https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs
124
143
  [rspec_request_spec]: https://www.relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec
@@ -129,6 +148,8 @@ This gem is heavily inspirated by them. Thanks, @square & @fredwu
129
148
  [nested_controller_spec_example]: https://www.relishapp.com/razum2um/lurker/docs/controller-specs/nested-schema-scaffolding
130
149
  [request_spec_example]: https://www.relishapp.com/razum2um/lurker/docs/request-specs/schema-scaffolding
131
150
  [html_generation_example]: https://www.relishapp.com/razum2um/lurker/docs/docs-generation/html-generation
151
+ [partial_example]: https://www.relishapp.com/razum2um/lurker/docs/docs-generation/partials
152
+ [partial_example_demo]: http://lurker-app.herokuapp.com/lurker/api/v1/users/__user_id/repos-POST.html
132
153
  [evil_martians]: http://evilmartians.com/
133
154
  [demo_app]: http://lurker-app.herokuapp.com/lurker/
134
155
  [demo_live]: http://lurker-app.herokuapp.com/lurker/api/v1/users-POST.html
data/Rakefile CHANGED
@@ -8,6 +8,7 @@ desc 'pry console for gem'
8
8
  task :c do
9
9
  require 'pry'
10
10
  require 'lurker'
11
+ require 'lurker/cli'
11
12
  ARGV.clear
12
13
  Pry.start
13
14
  end
@@ -34,8 +35,8 @@ namespace :assets do
34
35
  FileUtils.mkdir_p(BUILD_DIR)
35
36
 
36
37
  # raw copy
37
- %w[fonts].each do |subdir|
38
- FileUtils.cp_r(SOURCE_DIR.join(subdir), BUILD_DIR.join(subdir))
38
+ %w[fonts bootstrap.css.map].each do |subdir|
39
+ FileUtils.cp_r(SOURCE_DIR.join(subdir), BUILD_DIR)
39
40
  end
40
41
 
41
42
  sprockets = Sprockets::Environment.new(ROOT) do |env|
@@ -122,6 +123,11 @@ def in_lurker_app(command)
122
123
  end
123
124
  end
124
125
 
126
+ def on_razum2um_me(command)
127
+ puts "About to run: #{command}"
128
+ system %Q{ssh lurker@razum2um.me 'bash -l -c "source ~/.bashrc; cd ~/lurker; rvm use 2.1.1; #{command}"'}
129
+ end
130
+
125
131
  def needs_generation?
126
132
  !File.exists?("#{EXAMPLE_PATH}/Gemfile")
127
133
  end
@@ -144,37 +150,97 @@ task :features => [:regenerate, :cucumber]
144
150
 
145
151
  desc 'convert docs for example app'
146
152
  task :build_example_docs => :features do
147
- in_lurker_app "bin/lurker convert"
153
+ in_lurker_app "bin/lurker convert -c #{File.expand_path('../README.md', __FILE__)}"
148
154
  end
149
155
 
150
- namespace :heroku do
151
- desc 'pushes example lurker_app to heroku'
152
- task :push do
156
+ def ask_for_deploy(name, callback)
157
+ if ENV['FORCE_DEPLOY']
158
+ puts "Deploy to #{name}"
159
+ callback.call
160
+ else
153
161
  require_with_help 'highline/import'
154
- in_lurker_app "echo 'bin/lurker' > .gitignore"
155
- in_lurker_app "echo 'log' >> .gitignore"
156
- # commit migration and deploy by hand first time
157
- in_lurker_app "echo 'db/*' >> .gitignore"
158
- in_lurker_app "echo 'tmp/*' >> .gitignore"
159
-
160
-
161
- in_lurker_app "git add -A"
162
- in_lurker_app "git status"
163
162
  choose do |menu|
164
- menu.prompt = 'Commit & push & deploy?'
163
+ menu.prompt = "Commit & push & deploy to #{name}?"
165
164
  menu.choice(:yes) {
166
- in_lurker_app "git commit -a -m 'auto commit: #{`git log --oneline -n 1`.strip}'"
167
- in_lurker_app "git push origin master"
168
- in_lurker_app "heroku run rake db:import --app lurker-app"
165
+ ENV['FORCE_DEPLOY'] = '1'
166
+ callback.call
169
167
  }
170
168
  menu.choice(:no) { say("Exit") }
171
169
  end
172
170
  end
171
+ end
172
+
173
+ namespace :heroku do
174
+ desc 'pushes example lurker_app to heroku'
175
+ task :push => :predeploy do
176
+ do_deploy = Proc.new {
177
+ in_lurker_app "git commit -a -m 'auto commit: #{`git log --oneline -n 1`.strip}'" rescue nil
178
+ in_lurker_app "git push origin master"
179
+ in_lurker_app "heroku run rake db:import --app lurker-app"
180
+ }
181
+ ask_for_deploy("heroku", do_deploy)
182
+ end
173
183
 
174
184
  desc 'rebuilds & pushes app to heroku'
175
185
  task :deploy => [:build_example_docs, 'heroku:push'] do
176
186
  end
177
187
  end
178
188
 
189
+ namespace :razum2um do
190
+ desc 'pushes example lurker_app to razum2um'
191
+ task :push => :predeploy do
192
+ do_deploy = Proc.new {
193
+ in_lurker_app "git commit -a -m 'auto commit: #{`git log --oneline -n 1`.strip}'" rescue nil
194
+ in_lurker_app "git push razum2um master"
195
+ %w[database secrets].each do |fname|
196
+ on_razum2um_me "cp ~/#{fname}.yml config/#{fname}.yml"
197
+ end
198
+ on_razum2um_me "bundle install"
199
+ on_razum2um_me "RAILS_ENV=production bin/rake db:migrate"
200
+ on_razum2um_me "RAILS_ENV=production bin/rake db:import"
201
+ on_razum2um_me "touch tmp/restart.txt"
202
+ }
203
+ ask_for_deploy("razum2um.me", do_deploy)
204
+ end
205
+
206
+ desc 'rebuilds & pushes app to razum2um.me'
207
+ task :deploy => [:build_example_docs, 'razum2um:push'] do
208
+ end
209
+ end
210
+
179
211
  task :default => [:spec, :regenerate, :cucumber, 'coveralls:push']
180
212
 
213
+ desc 'commits lurker app'
214
+ task :predeploy do
215
+ in_lurker_app "echo 'bin/lurker' > .gitignore"
216
+ in_lurker_app "echo 'log' >> .gitignore"
217
+ # commit migration and deploy by hand first time
218
+ in_lurker_app "echo 'db/*' >> .gitignore"
219
+ in_lurker_app "echo 'tmp/*log' >> .gitignore"
220
+ in_lurker_app "echo '.bundle/*' >> .gitignore"
221
+
222
+ in_lurker_app "git add -A"
223
+ in_lurker_app "git status"
224
+ end
225
+
226
+ desc 'deploys everything'
227
+ task :deploy => ["razum2um:deploy", "heroku:deploy"]
228
+
229
+ desc 'pushes everything'
230
+ task :push => ["razum2um:push", "heroku:push"]
231
+
232
+ desc 'releases gem & updates docs'
233
+ task :publish do
234
+ require 'lurker'
235
+ version = Lurker::VERSION
236
+
237
+ Bundler.with_clean_env do
238
+ system "git tag v#{version}"
239
+ system "relish versions:add razum2um/lurker:#{version}"
240
+ system "relish push razum2um/lurker:#{version}"
241
+ system "gem build lurker.gemspec --sign"
242
+ system "git push --tags"
243
+ system "gem push lurker-#{version}.gem"
244
+ end
245
+ end
246
+
@@ -64,8 +64,13 @@ Feature: html generation
64
64
  Then I should see "user creation"
65
65
 
66
66
  When I click on "user creation"
67
- And I fill in the submit form field "name" with "Jim"
68
- And I submit it
67
+ And I fill in the submit form field "name" with "Jim"
68
+ Then I should see:
69
+ """
70
+ curl -X POST -d "user%5Bname%5D=Jim"
71
+ """
72
+
73
+ And I submit lurk form
69
74
 
70
75
  Then I should see JSON response with "Jim"
71
76
 
@@ -1,7 +1,9 @@
1
1
  Feature: mutidomain support
2
2
 
3
- to deploy statically on other domain and be able to send API requests
4
- you shouldturn off Access-Control-Allow-Origin restriction
3
+ In your `.service.yml` list you domains in form `hostname: url`
4
+
5
+ To deploy statically on other domain and be able to send API requests
6
+ you should turn off Access-Control-Allow-Origin restriction
5
7
  in config/application.rb (Rails 4)
6
8
 
7
9
  ```ruby
@@ -20,8 +22,8 @@ Feature: mutidomain support
20
22
  basePath: ''
21
23
  description: ''
22
24
  domains:
23
- '/': 'Local'
24
- 'http://lurker-app.herokuapp.com': 'Heroku'
25
+ '[Sandbox] Heroku': 'http://lurker-app.herokuapp.com'
26
+ '[Real] razum2um.me': 'http://lurker.razum2um.me'
25
27
  name: LurkerApp
26
28
  extensions: {}
27
29
  """
@@ -63,10 +65,10 @@ Feature: mutidomain support
63
65
  create api/v1/users/__id-DELETE.html
64
66
  """
65
67
 
66
- When I go to "/lurker"
67
- Then I should see "Local"
68
- Then I should see "users management"
69
-
70
- When I click on "Local"
71
- Then I should see "Heroku"
68
+ When I go to "/lurker/api/v1/users/__id-DELETE.html"
69
+ When I select "[Sandbox] Heroku" hostname
70
+ Then I should see:
71
+ """
72
+ curl -X DELETE "http://lurker-app.herokuapp.com/api/v1/users/1"
73
+ """
72
74
 
@@ -0,0 +1,98 @@
1
+ Feature: partials
2
+
3
+ You can use `$ref` to reference to other schemas just like in JSON-Schema documentation
4
+ Paths must be either `http://` or relative filenames
5
+
6
+ Referenced files can be either `.json` files, or `.json.yml` (Same JSON in YAML)
7
+
8
+ **NOTE:** to reference `file.json.yml` use `$ref: 'file.json#/'`
9
+ All YAML preprocessing happens behind the scene.
10
+
11
+ Scenario: builds html for "repos/create" in request spec with nested partials
12
+ Given an empty directory named "html"
13
+ And a file named "lurker/definitions/user.json.yml" with:
14
+ """yml
15
+ ---
16
+ properties:
17
+ id:
18
+ type: integer
19
+ example: 1
20
+ name:
21
+ type: string
22
+ example: razum2um
23
+ """
24
+ And a file named "lurker/definitions/repo.json.yml" with:
25
+ """yml
26
+ ---
27
+ properties:
28
+ id:
29
+ type: integer
30
+ example: 1
31
+ name:
32
+ type: string
33
+ example: new-gem
34
+ user:
35
+ $ref: '../definitions/user.json#/'
36
+ """
37
+ And a file named "lurker/api/v1/users/__user_id/repos-POST.json.yml" with:
38
+ """yml
39
+ ---
40
+ description: repo creation
41
+ prefix: repos management
42
+ requestParameters:
43
+ properties:
44
+ user_id:
45
+ type: integer
46
+ example: 1
47
+ repo:
48
+ properties:
49
+ name:
50
+ type: string
51
+ example: new-gem
52
+ responseCodes:
53
+ - status: 200
54
+ successful: true
55
+ responseParameters:
56
+ $ref: '../../../../definitions/repo.json#/'
57
+ extensions:
58
+ method: POST
59
+ path_info: "/api/v1/users/1/repos"
60
+ path_params:
61
+ action: create
62
+ controller: api/v1/repos
63
+ user_id: '1'
64
+ suffix: ''
65
+ """
66
+
67
+ Given a file named "spec/requests/repo_creation_spec.rb" with:
68
+ """ruby
69
+ require "spec_helper"
70
+
71
+ describe Api::V1::ReposController, :lurker do
72
+ let!(:user) do
73
+ User.where(name: 'razum2um').first_or_create!
74
+ end
75
+
76
+ it "creates a new repo" do
77
+ expect {
78
+ post "api/v1/users/#{user.id}/repos", repo: { name: 'new-gem' }
79
+ expect(response).to be_success
80
+ expect(JSON.parse(response.body)['user']).to eq JSON.parse(user.to_json)
81
+ }.to change { Repo.count } .by(1)
82
+ end
83
+ end
84
+ """
85
+
86
+ When I run `bin/rspec spec/requests/repo_creation_spec.rb`
87
+ Then the example should pass
88
+
89
+ When I successfully run `bin/lurker convert`
90
+ Then the output should contain these lines:
91
+ """
92
+ Converting lurker to html
93
+ using lurker
94
+
95
+ create index.html
96
+ create api/v1/users/__user_id/repos-POST.html
97
+ """
98
+