forked from integrity/integrity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
browse_builds_test.rb
89 lines (70 loc) · 2.91 KB
/
browse_builds_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
require "helper/acceptance"
class BrowseBuildsTest < Test::Unit::AcceptanceTestCase
story <<-EOS
As a user,
I want to browse the builds of a project in Integrity
So I can see the history of a project
EOS
scenario "Browsing to a project with no builds" do
Project.gen(:blank, :name => "Integrity")
visit "/integrity"
assert_have_no_tag("#last_build")
assert_have_no_tag("#previous_builds")
assert_contain("No builds for this project, buddy")
click_link "GitHub"
assert last_request.url.include?("http://github.com")
end
scenario "Browsing to a project with all kind of builds" do
Project.gen(:integrity, :builds => \
2.of { Build.gen(:failed) } +
2.of { Build.gen(:pending) } +
3.of { Build.gen(:successful) })
visit "/integrity"
assert_have_tag("#last_build[@class='success']")
within("ul#previous_builds") do
assert_have_tag("li.pending", :count => 2)
assert_have_tag("li.failed", :count => 2)
assert_have_tag("li.success", :count => 3)
end
click_link Build.first.sha1_short
click_link "on GitHub"
assert last_request.url.include?("http://github.com")
visit "/integrity"
click_link "raw"
assert_equal Project.first(:name => "Integrity").last_build.output,
last_response.body
end
scenario "Looking for details on the last build" do
build = Build.gen(:successful, :output => "This is the build output")
build.commit.update(
:identifier => "7fee3f0014b529e2b76d591a8085d76eab0ff923",
:author => "Nicolas Sanguinetti <contacto@nicolassanguinetti.info>",
:message => "No more pending tests :)",
:committed_at => Time.mktime(2008, 12, 15, 18)
)
p = Project.gen(:integrity, :builds => [build])
visit "/integrity"
assert_have_tag("h1", :content => "Built 7fee3f0 successfully")
assert_have_tag("blockquote p", :content => "No more pending tests")
assert_have_tag("span.who", :content => "by: Nicolas Sanguinetti")
assert_have_tag("span.when", :content => "Dec 15th")
assert_have_tag("pre.output", :content => "This is the build output")
end
scenario "Browsing to an individual build page" do
Project.gen(:integrity, :builds => [
Build.gen(:successful, :commit => Commit.gen(:identifier => "87e673a")),
Build.gen(:pending, :commit => Commit.gen(:identifier => "7fee3f0")),
Build.gen(:pending)
])
visit "/integrity"
click_link(/Build 87e673a/)
assert_have_tag("h1", :content => "Built 87e673a successfully")
assert_have_tag("h2", :content => "Build Output")
assert_have_tag("button", :content => "Rebuild")
visit "/integrity"
click_link(/Build 7fee3f0/)
assert_have_tag("h1", :content => "7fee3f0 hasn't been built yet")
assert_have_no_tag("h2", :content => "Build Output")
assert_have_tag("button", :content => "Rebuild")
end
end