forked from voloko/railsapi.com
-
Notifications
You must be signed in to change notification settings - Fork 1
/
sdoc-site_test.rb
112 lines (96 loc) · 3.63 KB
/
sdoc-site_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
require "test_helper"
require "sinatra/test"
require "#{File.dirname(__FILE__)}/../sdoc-site.rb"
require "sdoc_site/builds"
require "sdoc_site/automation"
set :environment, :test
class SDocSiteTest < Test::Unit::TestCase
include SDocSite
include Sinatra::Test
def test_should_redirect_to_closest_simple_minor
stub_builds_list %w(ruby-v1.8.2 ruby-v1.9.2), [] do
get '/doc/ruby-v1.8.1/'
assert response.redirect?
assert response.location.include?('ruby-v1.8.2')
end
end
def test_should_404_if_build_allready_exists
stub_builds_list %w(ruby-v1.8.2 ruby-v1.9.2), [] do
get '/doc/ruby-v1.8.2/unexistent'
assert_equal 404, response.status
end
end
def test_should_404_if_build_does_not_exist
stub_builds_list %w(ruby-v1.8.2 ruby-v1.9.2), [] do
get '/doc/something-v1.8.2/unexistent'
assert_equal 404, response.status
end
end
def test_should_redirect_to_max_named_version
stub_builds_list %w(ruby-v1.8.2 ruby-v1.9RC2), [] do
get '/doc/ruby/'
assert response.redirect?, 'should redirect'
assert response.location.include?('ruby-v1.9RC2'), 'shoud redirect to latest version'
end
end
def test_should_404_if_name_not_exists
stub_builds_list %w(ruby-v1.8.2 ruby-v1.9RC2), [] do
get '/doc/someting/'
assert_equal 404, response.status
end
end
def test_should_redirect_to_closest_available_merged
stub_builds_list %w(ruby-v1.8 ruby-v1.9 rails-v2.2.2), [] do
get '/doc/ruby-v1.8_rails-v2.2.1/'
assert response.redirect?, 'should redirect'
assert response.location.include?('rails-v2.2.2_ruby-v1.8'), 'shoud redirect to latest version'
end
end
def test_should_404_if_merged_minors_do_not_match
stub_builds_list %w(ruby-v1.8 ruby-v1.9 rails-v2.2.2), [] do
get '/doc/ruby-v1.8_rails-v2.3.1/'
assert_equal 404, response.status
end
end
def test_should_404_if_merged_build_cant_be_made
stub_builds_list %w(ruby-v1.8 ruby-v1.9 rails-v2.2.2), [] do
get '/doc/ruby-v1.8_something-v2.2.1/'
assert_equal 404, response.status
end
end
def test_should_404_if_exact_same_merged_build_exists
stub_builds_list %w(ruby-v1.8 ruby-v1.9 rails-v2.2.2), %w(ruby-v1.8_rails-v2.2.1) do
get '/doc/ruby-v1.8_rails-v2.2.1/'
assert_equal 404, response.status
end
end
def test_should_redirect_to_max_merged_named_version
stub_builds_list %w(ruby-v1.8 ruby-v1.9 rails-v2.2.2), [] do
get '/doc/ruby_rails/'
assert response.redirect?, 'should redirect'
assert response.location.include?('rails-v2.2.2_ruby-v1.9'), 'shoud redirect to latest version'
end
end
def test_should_show_building_page_if_merged_build_is_locked
stub_builds_list %w(ruby-v1.8 ruby-v1.9 rails-v2.2.2), [] do
SDocSite::Locks.any_instance.stubs(:locked?).returns(true)
get '/doc/ruby-v1.8_rails-v2.2.2/'
assert response.ok?
end
end
def test_should_merge_if_builds_available
stub_builds_list %w(ruby-v1.8 ruby-v1.9 rails-v2.2.2), [] do
SDocSite::Locks.any_instance.stubs(:locked?).returns(false)
SDocSite::Locks.any_instance.expects(:lock)
SDocSite::Automation.any_instance.expects(:merge_builds).returns(true)
SDocSite::Automation.any_instance.expects(:generate_index).returns(true)
get '/doc/rails-v2.2.2_ruby-v1.8/'
assert response.redirect?
end
end
def stub_builds_list simple_dirs, merged_dirs, &block
SDocSite::Builds::List.any_instance.stubs(:simple_builds_dirs).returns(simple_dirs)
SDocSite::Builds::List.any_instance.stubs(:merged_builds_dirs).returns(merged_dirs)
yield
end
end