lurker 0.5.1 → 0.5.2

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 (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
+