History

Simplify version path separator

Ref #25.

Thibaut Courouble committed 10 years ago

Commit 16ddcb11 parent fd2907d6 files · +22 −22Browse files

Unified · Split

6 files
  1. assets/javascripts/models/doc.coffee +1 −1
  2. lib/app.rb +2 −2
  3. lib/docs/core/doc.rb +1 −1
  4. test/app_test.rb +13 −13
  5. test/files/docs.json +1 −1
  6. test/lib/docs/core/doc_test.rb +4 −4
assets/javascripts/models/doc.coffee+1−1
@@ -4,7 +4,7 @@ class app.models.Doc extends app.Model · 3 unmodified lines
4 constructor: ->4 constructor: ->
5 super5 super
6 @reset @6 @reset @
7 @slug_without_version = @slug.split('~v')[0]7 @slug_without_version = @slug.split('~')[0]
8 @fullName = "#{@name}" + if @version then " #{@version}" else ''8 @fullName = "#{@name}" + if @version then " #{@version}" else ''
9 @icon = @slug_without_version9 @icon = @slug_without_version
10 @text = @toEntry().text10 @text = @toEntry().text
lib/app.rb+2−2
@@ -123,7 +123,7 @@ class App < Sinatra::Application · 122 unmodified lines
123 123
124 def find_doc(slug)124 def find_doc(slug)
125 settings.docs[slug] || begin125 settings.docs[slug] || begin
126 slug = "#{slug}~v"126 slug = "#{slug}~"
127 settings.docs.each do |_slug, _doc|127 settings.docs.each do |_slug, _doc|
128 return _doc if _slug.start_with?(slug)128 return _doc if _slug.start_with?(slug)
129 end129 end
@@ -133,7 +133,7 @@ class App < Sinatra::Application · 3 unmodified lines
133 133
134 def user_has_docs?(slug)134 def user_has_docs?(slug)
135 docs.include?(slug) || begin135 docs.include?(slug) || begin
136 slug = "#{slug}~v"136 slug = "#{slug}~"
137 docs.any? { |_slug| _slug.start_with?(slug) }137 docs.any? { |_slug| _slug.start_with?(slug) }
138 end138 end
139 end139 end
lib/docs/core/doc.rb+1−1
@@ -48,7 +48,7 @@ module Docs · 47 unmodified lines
48 48
49 def slug49 def slug
50 slug = @slug || name.try(:downcase)50 slug = @slug || name.try(:downcase)
51 version? ? "#{slug}~v#{version}" : slug51 version? ? "#{slug}~#{version}" : slug
52 end52 end
53 53
54 def path54 def path
test/app_test.rb+13−13
@@ -80,11 +80,11 @@ class AppTest < MiniTest::Spec · 79 unmodified lines
80 end80 end
81 81
82 it "works with cookie" do82 it "works with cookie" do
83 set_cookie('docs=css/html~v5')83 set_cookie('docs=css/html~5')
84 get '/manifest.appcache'84 get '/manifest.appcache'
85 assert last_response.ok?85 assert last_response.ok?
86 assert_includes last_response.body, '/css/index.json?1420139788'86 assert_includes last_response.body, '/css/index.json?1420139788'
87 assert_includes last_response.body, '/html~v5/index.json?1420139791'87 assert_includes last_response.body, '/html~5/index.json?1420139791'
88 end88 end
89 89
90 it "ignores invalid docs in the cookie" do90 it "ignores invalid docs in the cookie" do
@@ -127,17 +127,17 @@ class AppTest < MiniTest::Spec · 36 unmodified lines
127 127
128 describe "/[doc]" do128 describe "/[doc]" do
129 it "renders when the doc exists and isn't enabled" do129 it "renders when the doc exists and isn't enabled" do
130 set_cookie('docs=html~v5')130 set_cookie('docs=html~5')
131 get '/html~v4/', {}, 'HTTP_USER_AGENT' => MODERN_BROWSER131 get '/html~4/', {}, 'HTTP_USER_AGENT' => MODERN_BROWSER
132 assert last_response.ok?132 assert last_response.ok?
133 end133 end
134 134
135 it "redirects via JS cookie when the doc exists and is enabled" do135 it "redirects via JS cookie when the doc exists and is enabled" do
136 set_cookie('docs=html~v5')136 set_cookie('docs=html~5')
137 get '/html~v5/', {}, 'HTTP_USER_AGENT' => MODERN_BROWSER137 get '/html~5/', {}, 'HTTP_USER_AGENT' => MODERN_BROWSER
138 assert last_response.redirect?138 assert last_response.redirect?
139 assert_equal 'http://example.org/', last_response['Location']139 assert_equal 'http://example.org/', last_response['Location']
140 assert last_response['Set-Cookie'].start_with?("initial_path=%2Fhtml%7Ev5%2F; path=/; expires=")140 assert last_response['Set-Cookie'].start_with?("initial_path=%2Fhtml%7E5%2F; path=/; expires=")
141 end141 end
142 142
143 it "renders when the doc exists, has no version in the path, and isn't enabled" do143 it "renders when the doc exists, has no version in the path, and isn't enabled" do
@@ -146,7 +146,7 @@ class AppTest < MiniTest::Spec · 2 unmodified lines
146 end146 end
147 147
148 it "redirects via JS cookie when the doc exists, has no version in the path, and a version is enabled" do148 it "redirects via JS cookie when the doc exists, has no version in the path, and a version is enabled" do
149 set_cookie('docs=html~v5')149 set_cookie('docs=html~5')
150 get '/html/', {}, 'HTTP_USER_AGENT' => MODERN_BROWSER150 get '/html/', {}, 'HTTP_USER_AGENT' => MODERN_BROWSER
151 assert last_response.redirect?151 assert last_response.redirect?
152 assert_equal 'http://example.org/', last_response['Location']152 assert_equal 'http://example.org/', last_response['Location']
@@ -160,7 +160,7 @@ class AppTest < MiniTest::Spec · 7 unmodified lines
160 end160 end
161 161
162 it "returns 404 when the doc doesn't exist" do162 it "returns 404 when the doc doesn't exist" do
163 get '/html~v6/'163 get '/html~6/'
164 assert last_response.not_found?164 assert last_response.not_found?
165 end165 end
166 166
@@ -177,15 +177,15 @@ class AppTest < MiniTest::Spec · 10 unmodified lines
177 177
178 describe "/[doc]-[type]" do178 describe "/[doc]-[type]" do
179 it "works when the doc exists" do179 it "works when the doc exists" do
180 get '/html~v4-foo-bar_42/'180 get '/html~4-foo-bar_42/'
181 assert last_response.ok?181 assert last_response.ok?
182 assert_includes last_response.body, 'app.DOC = {"name":"HTML","slug":"html~v4"'182 assert_includes last_response.body, 'app.DOC = {"name":"HTML","slug":"html~4"'
183 end183 end
184 184
185 it "works when the doc has no version in the path and a version exists" do185 it "works when the doc has no version in the path and a version exists" do
186 get '/html-foo-bar_42/'186 get '/html-foo-bar_42/'
187 assert last_response.ok?187 assert last_response.ok?
188 assert_includes last_response.body, 'app.DOC = {"name":"HTML","slug":"html~v5"'188 assert_includes last_response.body, 'app.DOC = {"name":"HTML","slug":"html~5"'
189 end189 end
190 190
191 it "returns 404 when the type is blank" do191 it "returns 404 when the type is blank" do
@@ -199,7 +199,7 @@ class AppTest < MiniTest::Spec · 7 unmodified lines
199 end199 end
200 200
201 it "returns 404 when the doc doesn't exist" do201 it "returns 404 when the doc doesn't exist" do
202 get '/html~v6-bar/'202 get '/html~6-bar/'
203 assert last_response.not_found?203 assert last_response.not_found?
204 end204 end
205 205
test/files/docs.json+1−1
@@ -1 +1 @@
1[{"name":"CSS","slug":"css","type":"mdn","release":null,"mtime":1420139788,"db_size":3460507},{"name":"DOM","slug":"dom","type":"mdn","release":null,"mtime":1420139789,"db_size":11399128},{"name":"DOM Events","slug":"dom_events","type":"mdn","release":null,"mtime":1420139790,"db_size":889020},{"name":"HTML","slug":"html~v5","type":"mdn","version":"5","mtime":1420139791,"db_size":1835647},{"name":"HTML","slug":"html~v4","type":"mdn","version":"4","mtime":1420139790,"db_size":1835646},{"name":"HTTP","slug":"http","type":"rfc","release":null,"mtime":1420139790,"db_size":183083},{"name":"JavaScript","slug":"javascript","type":"mdn","release":null,"mtime":1420139791,"db_size":4125477}]1[{"name":"CSS","slug":"css","type":"mdn","release":null,"mtime":1420139788,"db_size":3460507},{"name":"DOM","slug":"dom","type":"mdn","release":null,"mtime":1420139789,"db_size":11399128},{"name":"DOM Events","slug":"dom_events","type":"mdn","release":null,"mtime":1420139790,"db_size":889020},{"name":"HTML","slug":"html~5","type":"mdn","version":"5","mtime":1420139791,"db_size":1835647},{"name":"HTML","slug":"html~4","type":"mdn","version":"4","mtime":1420139790,"db_size":1835646},{"name":"HTTP","slug":"http","type":"rfc","release":null,"mtime":1420139790,"db_size":183083},{"name":"JavaScript","slug":"javascript","type":"mdn","release":null,"mtime":1420139791,"db_size":4125477}]
test/lib/docs/core/doc_test.rb+4−4
@@ -45,15 +45,15 @@ class DocsDocTest < MiniTest::Spec · 44 unmodified lines
45 assert_equal 'doc', Docs::Doc.slug45 assert_equal 'doc', Docs::Doc.slug
46 end46 end
47 47
48 it "returns 'doc~v42' when the class is Docs::Doc and its #version is '42'" do48 it "returns 'doc~42' when the class is Docs::Doc and its #version is '42'" do
49 stub(Docs::Doc).version { '42' }49 stub(Docs::Doc).version { '42' }
50 assert_equal 'doc~v42', Docs::Doc.slug50 assert_equal 'doc~42', Docs::Doc.slug
51 end51 end
52 52
53 it "returns 'foo~v42' when #slug has been set to 'foo' and #version to '42'" do53 it "returns 'foo~42' when #slug has been set to 'foo' and #version to '42'" do
54 doc.slug = 'foo'54 doc.slug = 'foo'
55 doc.version = '42'55 doc.version = '42'
56 assert_equal 'foo~v42', doc.slug56 assert_equal 'foo~42', doc.slug
57 end57 end
58 end58 end
59 59