mango 0.5.0.beta5 → 0.5.0
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.
- data/.gitignore +1 -0
- data/CHANGES.mdown +6 -5
- data/Gemfile +15 -0
- data/Gemfile.lock +41 -0
- data/README.mdown +195 -82
- data/lib/mango/application.rb +4 -0
- data/lib/mango/content_page.rb +1 -1
- data/lib/mango/dependencies.rb +2 -2
- data/lib/mango/runner.rb +26 -19
- data/lib/mango/templates/Gemfile +1 -2
- data/lib/mango/templates/README.md +22 -1
- data/lib/mango/templates/content/index.md +1 -1
- data/lib/mango/templates/themes/default/public/styles/reset.css +1 -1
- data/lib/mango/version.rb +1 -1
- data/mango.gemspec +4 -4
- data/spec/bin/mango_spec.rb +10 -0
- data/spec/{app_root → fixture}/content/about/index.haml +0 -0
- data/spec/{app_root → fixture}/content/about/us.haml +0 -0
- data/spec/{app_root → fixture}/content/engines/haml.haml +0 -0
- data/spec/{app_root → fixture}/content/engines/markdown.markdown +0 -0
- data/spec/{app_root → fixture}/content/engines/md.md +0 -0
- data/spec/{app_root → fixture}/content/engines/mdown.mdown +0 -0
- data/spec/{app_root → fixture}/content/index.haml +0 -0
- data/spec/{app_root → fixture}/content/override.haml +0 -0
- data/spec/{app_root → fixture}/content/page_with_missing_view.haml +0 -0
- data/spec/{app_root → fixture}/content/turner+hooch.haml +0 -0
- data/spec/{app_root → fixture}/security_hole.haml +0 -0
- data/spec/{app_root → fixture}/themes/default/public/default.css +0 -0
- data/spec/{app_root → fixture}/themes/default/public/images/index.html +0 -0
- data/spec/{app_root → fixture}/themes/default/public/images/ripe-mango.jpg +0 -0
- data/spec/{app_root → fixture}/themes/default/public/override +0 -0
- data/spec/{app_root → fixture}/themes/default/public/robots.txt +0 -0
- data/spec/{app_root → fixture}/themes/default/public/styles/override.css +0 -0
- data/spec/{app_root → fixture}/themes/default/public/styles/reset.css +0 -0
- data/spec/{app_root → fixture}/themes/default/public/styles/subfolder/another.css +0 -0
- data/spec/{app_root → fixture}/themes/default/security_hole.sass +0 -0
- data/spec/{app_root → fixture}/themes/default/security_hole.txt +0 -0
- data/spec/{app_root → fixture}/themes/default/styles/override.sass +0 -0
- data/spec/{app_root → fixture}/themes/default/styles/screen.sass +0 -0
- data/spec/{app_root → fixture}/themes/default/styles/subfolder/screen.sass +0 -0
- data/spec/{app_root → fixture}/themes/default/views/404.haml +0 -0
- data/spec/{app_root → fixture}/themes/default/views/layout.haml +0 -0
- data/spec/{app_root → fixture}/themes/default/views/page.haml +0 -0
- data/spec/{mango → lib}/application/routing_content_pages_spec.rb +11 -11
- data/spec/{mango → lib}/application/routing_public_files_spec.rb +7 -7
- data/spec/{mango → lib}/application/routing_style_sheets_spec.rb +9 -9
- data/spec/{mango → lib}/application_spec.rb +5 -9
- data/spec/{mango → lib}/content_page/finding_spec.rb +5 -5
- data/spec/{mango → lib}/content_page/initializing_spec.rb +0 -0
- data/spec/{mango → lib}/content_page_spec.rb +0 -0
- data/spec/{mango → lib}/dependencies_spec.rb +9 -9
- data/spec/{mango → lib}/flavored_markdown_spec.rb +0 -0
- data/spec/{mango → lib}/rack/debugger_spec.rb +0 -0
- data/spec/lib/runner_spec.rb +380 -0
- data/spec/{mango → lib}/version_spec.rb +2 -2
- data/spec/quality_spec.rb +2 -2
- data/spec/spec_helper.rb +5 -4
- metadata +93 -102
@@ -21,7 +21,7 @@ describe Mango::Application do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "sends the correct Content-Type header" do
|
24
|
-
last_response["Content-Type"].should == "text/css"
|
24
|
+
last_response["Content-Type"].should == "text/css;charset=utf-8"
|
25
25
|
end
|
26
26
|
|
27
27
|
it "sends the correct body content" do
|
@@ -51,7 +51,7 @@ describe Mango::Application do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it "sends the correct Content-Type header" do
|
54
|
-
last_response["Content-Type"].should == "text/css"
|
54
|
+
last_response["Content-Type"].should == "text/css;charset=utf-8"
|
55
55
|
end
|
56
56
|
|
57
57
|
it "sends the correct body content" do
|
@@ -82,7 +82,7 @@ li {
|
|
82
82
|
end
|
83
83
|
|
84
84
|
it "sends the correct Content-Type header" do
|
85
|
-
last_response["Content-Type"].should == "text/css"
|
85
|
+
last_response["Content-Type"].should == "text/css;charset=utf-8"
|
86
86
|
end
|
87
87
|
|
88
88
|
it "sends the correct body content" do
|
@@ -130,7 +130,7 @@ time, mark, audio, video {
|
|
130
130
|
end
|
131
131
|
|
132
132
|
it "sends the correct Content-Type header" do
|
133
|
-
last_response["Content-Type"].should == "text/css"
|
133
|
+
last_response["Content-Type"].should == "text/css;charset=utf-8"
|
134
134
|
end
|
135
135
|
|
136
136
|
it "sends the correct body content" do
|
@@ -154,7 +154,7 @@ time, mark, audio, video {
|
|
154
154
|
end
|
155
155
|
|
156
156
|
it "sends the correct Content-Type header" do
|
157
|
-
last_response["Content-Type"].should == "text/css"
|
157
|
+
last_response["Content-Type"].should == "text/css;charset=utf-8"
|
158
158
|
end
|
159
159
|
|
160
160
|
it "sends the correct body content" do
|
@@ -178,7 +178,7 @@ time, mark, audio, video {
|
|
178
178
|
end
|
179
179
|
|
180
180
|
it "sends the correct Content-Type header" do
|
181
|
-
last_response["Content-Type"].should == "text/css"
|
181
|
+
last_response["Content-Type"].should == "text/css;charset=utf-8"
|
182
182
|
end
|
183
183
|
|
184
184
|
it "sends the correct body content" do
|
@@ -202,7 +202,7 @@ time, mark, audio, video {
|
|
202
202
|
end
|
203
203
|
|
204
204
|
it "sends the correct Content-Type header" do
|
205
|
-
last_response["Content-Type"].should == "text/html"
|
205
|
+
last_response["Content-Type"].should == "text/html;charset=utf-8"
|
206
206
|
end
|
207
207
|
|
208
208
|
it "sends the correct body content" do
|
@@ -233,7 +233,7 @@ time, mark, audio, video {
|
|
233
233
|
end
|
234
234
|
|
235
235
|
it "sends the correct Content-Type header" do
|
236
|
-
last_response["Content-Type"].should == "text/html"
|
236
|
+
last_response["Content-Type"].should == "text/html;charset=utf-8"
|
237
237
|
end
|
238
238
|
|
239
239
|
it "sends the correct body content" do
|
@@ -264,7 +264,7 @@ time, mark, audio, video {
|
|
264
264
|
end
|
265
265
|
|
266
266
|
it "sends the correct Content-Type header" do
|
267
|
-
last_response["Content-Type"].should == "text/html"
|
267
|
+
last_response["Content-Type"].should == "text/html;charset=utf-8"
|
268
268
|
end
|
269
269
|
|
270
270
|
it "sends the correct body content" do
|
@@ -3,12 +3,8 @@ require "spec_helper"
|
|
3
3
|
|
4
4
|
describe Mango::Application do
|
5
5
|
describe "settings" do
|
6
|
-
before(:each) do
|
7
|
-
@expected = SPEC_APP_ROOT
|
8
|
-
end
|
9
|
-
|
10
6
|
it "root should be app_root" do
|
11
|
-
Mango::Application.root.should ==
|
7
|
+
Mango::Application.root.should == FIXTURE_ROOT.to_s
|
12
8
|
end
|
13
9
|
|
14
10
|
it "theme should be default" do
|
@@ -16,19 +12,19 @@ describe Mango::Application do
|
|
16
12
|
end
|
17
13
|
|
18
14
|
it "views should be app_root/themes/default/views/" do
|
19
|
-
Mango::Application.views.should ==
|
15
|
+
Mango::Application.views.should == (FIXTURE_ROOT + "themes/default/views").to_s
|
20
16
|
end
|
21
17
|
|
22
18
|
it "public should be app_root/themes/default/public/" do
|
23
|
-
Mango::Application.public.should ==
|
19
|
+
Mango::Application.public.should == (FIXTURE_ROOT + "themes/default/public").to_s
|
24
20
|
end
|
25
21
|
|
26
22
|
it "styles should be app_root/themes/default/styles/" do
|
27
|
-
Mango::Application.styles.should ==
|
23
|
+
Mango::Application.styles.should == (FIXTURE_ROOT + "themes/default/styles").to_s
|
28
24
|
end
|
29
25
|
|
30
26
|
it "content should be app_root/content/" do
|
31
|
-
Mango::Application.content.should ==
|
27
|
+
Mango::Application.content.should == (FIXTURE_ROOT + "content").to_s
|
32
28
|
end
|
33
29
|
end
|
34
30
|
end
|
@@ -7,7 +7,7 @@ describe Mango::ContentPage do
|
|
7
7
|
|
8
8
|
describe "finding app_root/content/engines/haml.haml" do
|
9
9
|
before(:all) do
|
10
|
-
path =
|
10
|
+
path = FIXTURE_ROOT + "content/engines/haml"
|
11
11
|
@page = Mango::ContentPage.find_by_path(path)
|
12
12
|
end
|
13
13
|
|
@@ -55,7 +55,7 @@ category:
|
|
55
55
|
|
56
56
|
describe "finding app_root/content/engines/md.md" do
|
57
57
|
before(:all) do
|
58
|
-
path =
|
58
|
+
path = FIXTURE_ROOT + "content/engines/md"
|
59
59
|
@page = Mango::ContentPage.find_by_path(path)
|
60
60
|
end
|
61
61
|
|
@@ -103,7 +103,7 @@ category:
|
|
103
103
|
|
104
104
|
describe "finding app_root/content/engines/mdown.mdown" do
|
105
105
|
before(:all) do
|
106
|
-
path =
|
106
|
+
path = FIXTURE_ROOT + "content/engines/mdown"
|
107
107
|
@page = Mango::ContentPage.find_by_path(path)
|
108
108
|
end
|
109
109
|
|
@@ -151,7 +151,7 @@ category:
|
|
151
151
|
|
152
152
|
describe "finding app_root/content/engines/markdown.markdown" do
|
153
153
|
before(:all) do
|
154
|
-
path =
|
154
|
+
path = FIXTURE_ROOT + "content/engines/markdown"
|
155
155
|
@page = Mango::ContentPage.find_by_path(path)
|
156
156
|
end
|
157
157
|
|
@@ -199,7 +199,7 @@ category:
|
|
199
199
|
|
200
200
|
describe "finding app_root/content/unknown.anyengine" do
|
201
201
|
before(:all) do
|
202
|
-
@path =
|
202
|
+
@path = FIXTURE_ROOT + "content/unknown"
|
203
203
|
end
|
204
204
|
|
205
205
|
it "raises Mango::ContentPage::PageNotFound" do
|
File without changes
|
File without changes
|
@@ -6,15 +6,15 @@ describe Mango::Dependencies do
|
|
6
6
|
#################################################################################################
|
7
7
|
|
8
8
|
describe "class constant and variable defaults" do
|
9
|
-
it "supports ruby 1.9.
|
10
|
-
Mango::Dependencies::SUPPORTED_RUBY_VERSIONS.should == ["1.9.
|
9
|
+
it "supports ruby 1.9.2" do
|
10
|
+
Mango::Dependencies::SUPPORTED_RUBY_VERSIONS.should == ["1.9.2"]
|
11
11
|
end
|
12
12
|
|
13
13
|
it "development gem names and versions should be correct" do
|
14
14
|
expected = {
|
15
15
|
:"rack-test" => "0.5.6",
|
16
16
|
:rspec => "2.0.1",
|
17
|
-
:yard => "0.
|
17
|
+
:yard => "0.6.1",
|
18
18
|
:"yard-sinatra" => "0.5.1",
|
19
19
|
:bluecloth => "2.0.9"
|
20
20
|
}
|
@@ -49,7 +49,7 @@ describe Mango::Dependencies do
|
|
49
49
|
|
50
50
|
def expected_message(version)
|
51
51
|
@expected_message = <<-ERROR
|
52
|
-
This library supports Ruby 1.9.
|
52
|
+
This library supports Ruby 1.9.2, but you're using #{version}.
|
53
53
|
Please visit http://www.ruby-lang.org/ or http://rvm.beginrescueend.com/ for installation instructions.
|
54
54
|
ERROR
|
55
55
|
end
|
@@ -75,11 +75,11 @@ Please visit http://www.ruby-lang.org/ or http://rvm.beginrescueend.com/ for ins
|
|
75
75
|
}.should raise_exception(SystemExit, expected_message(version))
|
76
76
|
end
|
77
77
|
|
78
|
-
it "
|
78
|
+
it "aborts for ruby 1.9.1" do
|
79
79
|
version = "1.9.1"
|
80
80
|
lambda {
|
81
81
|
Mango::Dependencies.send(:check_ruby_version, version)
|
82
|
-
}.
|
82
|
+
}.should raise_exception(SystemExit, expected_message(version))
|
83
83
|
end
|
84
84
|
|
85
85
|
it "doesn't abort for ruby 1.9.2" do
|
@@ -113,7 +113,7 @@ Please visit http://www.ruby-lang.org/ or http://rvm.beginrescueend.com/ for ins
|
|
113
113
|
|
114
114
|
it "creates and caches and cache one warning from a known development gem dependency" do
|
115
115
|
Mango::Dependencies.create_warning_for(LoadError.new("no such file to load -- yard"))
|
116
|
-
Mango::Dependencies.class_variable_get(:@@warnings_cache).should == ["yard --version '0.
|
116
|
+
Mango::Dependencies.class_variable_get(:@@warnings_cache).should == ["yard --version '0.6.1'"]
|
117
117
|
end
|
118
118
|
|
119
119
|
it "creates and caches and cache warnings from all known development gem dependencies" do
|
@@ -130,7 +130,7 @@ Please visit http://www.ruby-lang.org/ or http://rvm.beginrescueend.com/ for ins
|
|
130
130
|
expected = [
|
131
131
|
"rack-test --version '0.5.6'",
|
132
132
|
"rspec --version '2.0.1'",
|
133
|
-
"yard --version '0.
|
133
|
+
"yard --version '0.6.1'",
|
134
134
|
"yard-sinatra --version '0.5.1'",
|
135
135
|
"bluecloth --version '2.0.9'"
|
136
136
|
]
|
@@ -164,7 +164,7 @@ Please visit http://www.ruby-lang.org/ or http://rvm.beginrescueend.com/ for ins
|
|
164
164
|
|
165
165
|
The following development gem dependencies could not be found. Without them, some available development features are missing:
|
166
166
|
rspec --version '2.0.1'
|
167
|
-
yard --version '0.
|
167
|
+
yard --version '0.6.1'
|
168
168
|
bluecloth --version '2.0.9'
|
169
169
|
MESSAGE
|
170
170
|
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,380 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require "spec_helper"
|
3
|
+
require PROJECT_ROOT + "lib/mango/runner"
|
4
|
+
|
5
|
+
describe Mango::Runner do
|
6
|
+
|
7
|
+
#################################################################################################
|
8
|
+
|
9
|
+
describe "class methods and attributes" do
|
10
|
+
before(:all) do
|
11
|
+
@runner = Mango::Runner.new
|
12
|
+
end
|
13
|
+
|
14
|
+
it "is a kind of Thor" do
|
15
|
+
@runner.should be_a_kind_of(Thor)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "is a kind of Thor::Actions" do
|
19
|
+
@runner.should be_a_kind_of(Thor::Actions)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "adds runtime options" do
|
23
|
+
Mango::Runner.class_options.should have_key(:force)
|
24
|
+
Mango::Runner.class_options.should have_key(:pretend)
|
25
|
+
Mango::Runner.class_options.should have_key(:quiet)
|
26
|
+
Mango::Runner.class_options.should have_key(:skip)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "has a source root" do
|
30
|
+
@runner.source_paths.should include (PROJECT_ROOT + "lib/mango/templates").to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
it "has a create task" do
|
34
|
+
task = Mango::Runner.tasks["create"]
|
35
|
+
task.name.should == "create"
|
36
|
+
task.description.should == "Creates a new Mango application at the specified path"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
#################################################################################################
|
41
|
+
|
42
|
+
describe "#create" do
|
43
|
+
before(:all) do
|
44
|
+
$stdout = StringIO.new
|
45
|
+
@runner = Mango::Runner.new
|
46
|
+
@runner.create(RUNNER_ROOT)
|
47
|
+
end
|
48
|
+
|
49
|
+
after(:all) do
|
50
|
+
RUNNER_ROOT.rmtree
|
51
|
+
$stdout = STDOUT
|
52
|
+
end
|
53
|
+
|
54
|
+
it "generates the destination root" do
|
55
|
+
RUNNER_ROOT.should be_a_directory
|
56
|
+
end
|
57
|
+
|
58
|
+
it "generates .gitignore" do
|
59
|
+
expected = RUNNER_ROOT + ".gitignore"
|
60
|
+
expected.should be_a_file
|
61
|
+
File.read(expected).should == <<-EOS
|
62
|
+
.DS_Store
|
63
|
+
.rvmrc
|
64
|
+
.bundle
|
65
|
+
EOS
|
66
|
+
end
|
67
|
+
|
68
|
+
it "generates config.ru" do
|
69
|
+
expected = RUNNER_ROOT + "config.ru"
|
70
|
+
expected.should be_a_file
|
71
|
+
File.read(expected).should == <<-EOS
|
72
|
+
# encoding: UTF-8
|
73
|
+
require "mango"
|
74
|
+
run Mango::Application
|
75
|
+
EOS
|
76
|
+
end
|
77
|
+
|
78
|
+
it "generates Gemfile" do
|
79
|
+
expected = RUNNER_ROOT + "Gemfile"
|
80
|
+
expected.should be_a_file
|
81
|
+
File.read(expected).should == <<-EOS
|
82
|
+
# encoding: UTF-8
|
83
|
+
source "http://rubygems.org"
|
84
|
+
gem "mango", "~> 0.5.0"
|
85
|
+
EOS
|
86
|
+
end
|
87
|
+
|
88
|
+
it "generates README.md" do
|
89
|
+
expected = RUNNER_ROOT + "README.md"
|
90
|
+
expected.should be_a_file
|
91
|
+
File.read(expected).should == <<-EOS
|
92
|
+
Your Mango Application Name
|
93
|
+
===========================
|
94
|
+
|
95
|
+
Summary
|
96
|
+
-------
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
Getting Started
|
101
|
+
---------------
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
Publishing
|
106
|
+
----------
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
Credits
|
111
|
+
-------
|
112
|
+
|
113
|
+
|
114
|
+
EOS
|
115
|
+
end
|
116
|
+
|
117
|
+
###############################################################################################
|
118
|
+
|
119
|
+
it "generates content/" do
|
120
|
+
(RUNNER_ROOT + "content").should be_a_directory
|
121
|
+
end
|
122
|
+
|
123
|
+
it "generates content/index.md" do
|
124
|
+
expected = RUNNER_ROOT + "content/index.md"
|
125
|
+
expected.should be_a_file
|
126
|
+
File.read(expected).should == <<-EOS
|
127
|
+
---
|
128
|
+
title: Congratulations!
|
129
|
+
---
|
130
|
+
|
131
|
+
## You did it!
|
132
|
+
EOS
|
133
|
+
end
|
134
|
+
|
135
|
+
###############################################################################################
|
136
|
+
|
137
|
+
it "generates themes/" do
|
138
|
+
(RUNNER_ROOT + "themes").should be_a_directory
|
139
|
+
end
|
140
|
+
|
141
|
+
it "generates themes/default" do
|
142
|
+
(RUNNER_ROOT + "themes/default").should be_a_directory
|
143
|
+
end
|
144
|
+
|
145
|
+
###############################################################################################
|
146
|
+
|
147
|
+
it "generates themes/default/public" do
|
148
|
+
(RUNNER_ROOT + "themes/default/public").should be_a_directory
|
149
|
+
end
|
150
|
+
|
151
|
+
it "generates themes/default/public/favicon.ico" do
|
152
|
+
expected = RUNNER_ROOT + "themes/default/public/favicon.ico"
|
153
|
+
expected.should be_a_file
|
154
|
+
File.read(expected).should == ""
|
155
|
+
end
|
156
|
+
|
157
|
+
it "generates themes/default/public/robots.txt" do
|
158
|
+
expected = RUNNER_ROOT + "themes/default/public/robots.txt"
|
159
|
+
expected.should be_a_file
|
160
|
+
File.read(expected).should == <<-EOS
|
161
|
+
# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
|
162
|
+
#
|
163
|
+
# To ban all spiders from the entire site uncomment the next two lines:
|
164
|
+
# User-Agent: *
|
165
|
+
# Disallow: /
|
166
|
+
EOS
|
167
|
+
end
|
168
|
+
|
169
|
+
###############################################################################################
|
170
|
+
|
171
|
+
it "generates themes/default/public/images" do
|
172
|
+
(RUNNER_ROOT + "themes/default/public/images").should be_a_directory
|
173
|
+
end
|
174
|
+
|
175
|
+
it "generates themes/default/public/images" do
|
176
|
+
expected = RUNNER_ROOT + "themes/default/public/images/particles.gif"
|
177
|
+
expected.should be_a_file
|
178
|
+
File.open(expected, "rb") { |f| f.read.size.should == 2469 }
|
179
|
+
end
|
180
|
+
|
181
|
+
###############################################################################################
|
182
|
+
|
183
|
+
it "generates themes/default/public/javascripts" do
|
184
|
+
(RUNNER_ROOT + "themes/default/public/javascripts").should be_a_directory
|
185
|
+
end
|
186
|
+
|
187
|
+
it "generates themes/default/public/javascripts/fireworks.js" do
|
188
|
+
expected = RUNNER_ROOT + "themes/default/public/javascripts/fireworks.js"
|
189
|
+
expected.should be_a_file
|
190
|
+
File.read(expected).size.should == 17167
|
191
|
+
end
|
192
|
+
|
193
|
+
it "generates themes/default/public/javascripts/timer.js" do
|
194
|
+
expected = RUNNER_ROOT + "themes/default/public/javascripts/timer.js"
|
195
|
+
expected.should be_a_file
|
196
|
+
File.read(expected).should == <<-EOS
|
197
|
+
function fire() {
|
198
|
+
var gap = Math.floor(Math.random() * 1201) + 600;
|
199
|
+
setTimeout("fire()", gap);
|
200
|
+
createFirework(30,125,7,5,null,null,null,null,false,true);
|
201
|
+
}
|
202
|
+
EOS
|
203
|
+
end
|
204
|
+
|
205
|
+
###############################################################################################
|
206
|
+
|
207
|
+
it "generates themes/default/public/styles" do
|
208
|
+
(RUNNER_ROOT + "themes/default/public/styles").should be_a_directory
|
209
|
+
end
|
210
|
+
|
211
|
+
it "generates themes/default/public/styles/fireworks.css" do
|
212
|
+
expected = RUNNER_ROOT + "themes/default/public/styles/fireworks.css"
|
213
|
+
expected.should be_a_file
|
214
|
+
File.read(expected).size.should == 717
|
215
|
+
end
|
216
|
+
|
217
|
+
it "generates themes/default/public/styles/reset.css" do
|
218
|
+
expected = RUNNER_ROOT + "themes/default/public/styles/reset.css"
|
219
|
+
expected.should be_a_file
|
220
|
+
File.read(expected).should == <<-EOS
|
221
|
+
@charset "UTF-8";
|
222
|
+
|
223
|
+
/* v1.0 | 20080212 */
|
224
|
+
|
225
|
+
html, body, div, span, applet, object, iframe,
|
226
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
227
|
+
a, abbr, acronym, address, big, cite, code,
|
228
|
+
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
229
|
+
small, strike, strong, sub, sup, tt, var,
|
230
|
+
b, u, i, center,
|
231
|
+
dl, dt, dd, ol, ul, li,
|
232
|
+
fieldset, form, label, legend,
|
233
|
+
table, caption, tbody, tfoot, thead, tr, th, td {
|
234
|
+
margin: 0;
|
235
|
+
padding: 0;
|
236
|
+
border: 0;
|
237
|
+
outline: 0;
|
238
|
+
font-size: 100%;
|
239
|
+
vertical-align: baseline;
|
240
|
+
background: transparent;
|
241
|
+
}
|
242
|
+
body {
|
243
|
+
line-height: 1;
|
244
|
+
}
|
245
|
+
ol, ul {
|
246
|
+
list-style: none;
|
247
|
+
}
|
248
|
+
blockquote, q {
|
249
|
+
quotes: none;
|
250
|
+
}
|
251
|
+
blockquote:before, blockquote:after,
|
252
|
+
q:before, q:after {
|
253
|
+
content: '';
|
254
|
+
content: none;
|
255
|
+
}
|
256
|
+
|
257
|
+
/* remember to define focus styles! */
|
258
|
+
:focus {
|
259
|
+
outline: 0;
|
260
|
+
}
|
261
|
+
|
262
|
+
/* remember to highlight inserts somehow! */
|
263
|
+
ins {
|
264
|
+
text-decoration: none;
|
265
|
+
}
|
266
|
+
del {
|
267
|
+
text-decoration: line-through;
|
268
|
+
}
|
269
|
+
|
270
|
+
/* tables still need 'cellspacing="0"' in the markup */
|
271
|
+
table {
|
272
|
+
border-collapse: collapse;
|
273
|
+
border-spacing: 0;
|
274
|
+
}
|
275
|
+
EOS
|
276
|
+
end
|
277
|
+
|
278
|
+
###############################################################################################
|
279
|
+
|
280
|
+
it "generates themes/default/styles" do
|
281
|
+
(RUNNER_ROOT + "themes/default/styles").should be_a_directory
|
282
|
+
end
|
283
|
+
|
284
|
+
it "generates themes/default/styles/screen.sass" do
|
285
|
+
expected = RUNNER_ROOT + "themes/default/styles/screen.sass"
|
286
|
+
expected.should be_a_file
|
287
|
+
File.read(expected).should == <<-EOS
|
288
|
+
@charset "UTF-8"
|
289
|
+
|
290
|
+
body
|
291
|
+
background-color: #D05C12
|
292
|
+
font-family: "Lobster", arial, serif
|
293
|
+
margin: 0px auto
|
294
|
+
text-align: center
|
295
|
+
text-shadow: 2px 2px 5px #000
|
296
|
+
|
297
|
+
h1
|
298
|
+
color: #29B7DD
|
299
|
+
font-size: 90pt
|
300
|
+
margin: 60px 0px 100px 0px
|
301
|
+
|
302
|
+
h2
|
303
|
+
color: #FBAF0D
|
304
|
+
font-size: 240pt
|
305
|
+
EOS
|
306
|
+
end
|
307
|
+
|
308
|
+
###############################################################################################
|
309
|
+
|
310
|
+
it "generates themes/default/views" do
|
311
|
+
(RUNNER_ROOT + "themes/default/views").should be_a_directory
|
312
|
+
end
|
313
|
+
|
314
|
+
it "generates themes/default/views/404.haml" do
|
315
|
+
expected = RUNNER_ROOT + "themes/default/views/404.haml"
|
316
|
+
expected.should be_a_file
|
317
|
+
File.read(expected).should == <<-EOS
|
318
|
+
!!! 5
|
319
|
+
%html
|
320
|
+
%head
|
321
|
+
%meta{ :charset => "utf-8" }
|
322
|
+
%title The page you were looking for doesn't exist (404)
|
323
|
+
:css
|
324
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
325
|
+
div.dialog {
|
326
|
+
width: 25em;
|
327
|
+
padding: 0 4em;
|
328
|
+
margin: 4em auto 0 auto;
|
329
|
+
border: 1px solid #ccc;
|
330
|
+
border-right-color: #999;
|
331
|
+
border-bottom-color: #999;
|
332
|
+
}
|
333
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
334
|
+
%body
|
335
|
+
/ This file lives in themes/default/views/404.haml
|
336
|
+
%div.dialog
|
337
|
+
%h1 The page you were looking for doesn't exist.
|
338
|
+
%p You may have mistyped the address or the page may have moved.
|
339
|
+
EOS
|
340
|
+
end
|
341
|
+
|
342
|
+
it "generates themes/default/views/layout.haml" do
|
343
|
+
expected = RUNNER_ROOT + "themes/default/views/layout.haml"
|
344
|
+
expected.should be_a_file
|
345
|
+
File.read(expected).should == <<-EOS
|
346
|
+
!!! 5
|
347
|
+
%html
|
348
|
+
%head
|
349
|
+
%meta{ :charset => "utf-8" }
|
350
|
+
%title= "Mango: \#{@content_page.title}"
|
351
|
+
%link{ :rel => "stylesheet", :type => "text/css", :media => "screen", :href => "http://fonts.googleapis.com/css?family=Lobster" }
|
352
|
+
%link{ :rel => "stylesheet", :type => "text/css", :media => "screen", :href => "/styles/reset.css" }
|
353
|
+
%link{ :rel => "stylesheet", :type => "text/css", :media => "screen", :href => "/styles/screen.css" }
|
354
|
+
%link{ :rel => "stylesheet", :type => "text/css", :media => "screen", :href => "/styles/fireworks.css" }
|
355
|
+
%script{ :type => "text/javascript", :src => "/javascripts/fireworks.js"}
|
356
|
+
%script{ :type => "text/javascript", :src => "/javascripts/timer.js"}
|
357
|
+
%body{ :onload => "fire();" }
|
358
|
+
%div#fireworks-template
|
359
|
+
%div#fw.firework
|
360
|
+
%div#fp.fireworkParticle
|
361
|
+
%img{ :src => "/images/particles.gif" }
|
362
|
+
|
363
|
+
%div#fireContainer
|
364
|
+
|
365
|
+
= yield
|
366
|
+
EOS
|
367
|
+
end
|
368
|
+
|
369
|
+
it "generates themes/default/views/page.haml" do
|
370
|
+
expected = RUNNER_ROOT + "themes/default/views/page.haml"
|
371
|
+
expected.should be_a_file
|
372
|
+
File.read(expected).should == <<-EOS
|
373
|
+
%h1= @content_page.title
|
374
|
+
|
375
|
+
= @content_page.to_html
|
376
|
+
EOS
|
377
|
+
end
|
378
|
+
|
379
|
+
end
|
380
|
+
end
|