소스 검색

Add redirections for deleted docs

Thibaut Courouble 9 년 전
부모
커밋
01517f8c78
2개의 변경된 파일25개의 추가작업 그리고 1개의 파일을 삭제
  1. 7 1
      lib/app.rb
  2. 18 0
      test/app_test.rb

+ 7 - 1
lib/app.rb

@@ -270,8 +270,14 @@ class App < Sinatra::Application
     settings.news_feed
   end
 
+  DOC_REDIRECTS = {
+    'iojs' => 'node',
+    'yii1' => 'yii~1.1',
+    'python2' => 'python~2.7'
+  }
+
   get %r{\A/([\w~\.]+)(\-[\w\-]+)?(/.*)?\z} do |doc, type, rest|
-    return redirect "/node#{type}#{rest}" if doc == 'iojs'
+    return redirect "/#{DOC_REDIRECTS[doc]}#{type}#{rest}" if DOC_REDIRECTS.key?(doc)
     return 404 unless @doc = find_doc(doc)
 
     if rest.nil?

+ 18 - 0
test/app_test.rb

@@ -173,6 +173,12 @@ class AppTest < MiniTest::Spec
       assert last_response.redirect?
       assert_equal 'http://example.org/html/?bar=baz', last_response['Location']
     end
+
+    it "redirects old docs" do
+      get '/iojs/'
+      assert last_response.redirect?
+      assert_equal 'http://example.org/node/', last_response['Location']
+    end
   end
 
   describe "/[doc]-[type]" do
@@ -212,6 +218,12 @@ class AppTest < MiniTest::Spec
       assert last_response.redirect?
       assert_equal 'http://example.org/css-foo/?bar=baz', last_response['Location']
     end
+
+    it "redirects old docs" do
+      get '/yii1-foo/'
+      assert last_response.redirect?
+      assert_equal 'http://example.org/yii~1.1-foo/', last_response['Location']
+    end
   end
 
   describe "/[doc+type]/[path]" do
@@ -237,6 +249,12 @@ class AppTest < MiniTest::Spec
       assert last_response.redirect?
       assert_equal 'http://example.org/css/foo?bar=baz', last_response['Location']
     end
+
+    it "redirects old docs" do
+      get '/python2/foo'
+      assert last_response.redirect?
+      assert_equal 'http://example.org/python~2.7/foo', last_response['Location']
+    end
   end
 
   describe "/docs.json" do