vanilla 1.0.2 → 1.2
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/Rakefile +112 -109
- data/bin/vanilla +35 -6
- data/lib/vanilla.rb +10 -14
- data/lib/vanilla/app.rb +109 -41
- data/lib/vanilla/console.rb +22 -2
- data/lib/vanilla/dynasnip.rb +4 -36
- data/lib/vanilla/renderers.rb +12 -0
- data/lib/vanilla/renderers/base.rb +58 -34
- data/lib/vanilla/renderers/bold.rb +0 -2
- data/lib/vanilla/renderers/erb.rb +1 -3
- data/lib/vanilla/renderers/haml.rb +13 -0
- data/lib/vanilla/renderers/markdown.rb +0 -2
- data/lib/vanilla/renderers/raw.rb +0 -2
- data/lib/vanilla/renderers/ruby.rb +12 -6
- data/lib/vanilla/renderers/textile.rb +0 -2
- data/lib/vanilla/request.rb +19 -17
- data/lib/vanilla/routes.rb +9 -20
- data/lib/vanilla/snip_reference_parser.rb +94 -0
- data/lib/vanilla/static.rb +28 -0
- data/pristine_app/Gemfile +3 -0
- data/pristine_app/Gemfile.lock +32 -0
- data/pristine_app/README +47 -0
- data/pristine_app/config.ru +26 -0
- data/pristine_app/public/vanilla.css +15 -0
- data/pristine_app/soups/base/layout.snip +18 -0
- data/pristine_app/soups/base/start.snip +19 -0
- data/pristine_app/soups/dynasnips/current_snip.rb +29 -0
- data/{lib/vanilla → pristine_app/soups}/dynasnips/debug.rb +5 -3
- data/pristine_app/soups/dynasnips/index.rb +12 -0
- data/{lib/vanilla → pristine_app/soups}/dynasnips/link_to.rb +4 -2
- data/pristine_app/soups/dynasnips/link_to_current_snip.rb +14 -0
- data/pristine_app/soups/dynasnips/page_title.rb +9 -0
- data/{lib/vanilla → pristine_app/soups}/dynasnips/pre.rb +7 -5
- data/{lib/vanilla → pristine_app/soups}/dynasnips/raw.rb +8 -5
- data/pristine_app/soups/extras/comments.rb +78 -0
- data/{lib/vanilla/dynasnips → pristine_app/soups/extras}/kind.rb +19 -17
- data/{lib/vanilla/dynasnips → pristine_app/soups/extras}/rand.rb +2 -0
- data/pristine_app/soups/extras/url_to.rb +7 -0
- data/pristine_app/soups/tutorial/bad_dynasnip.snip +8 -0
- data/pristine_app/soups/tutorial/hello_world.snip +20 -0
- data/pristine_app/soups/tutorial/markdown_example.snip +13 -0
- data/pristine_app/soups/tutorial/snip.snip +9 -0
- data/pristine_app/soups/tutorial/soup.snip +3 -0
- data/pristine_app/soups/tutorial/test.snip +30 -0
- data/pristine_app/soups/tutorial/textile_example.snip +11 -0
- data/pristine_app/soups/tutorial/tutorial-another-snip.snip +1 -0
- data/pristine_app/soups/tutorial/tutorial-basic-snip-inclusion.snip +1 -0
- data/pristine_app/soups/tutorial/tutorial-dynasnips.snip.markdown +56 -0
- data/pristine_app/soups/tutorial/tutorial-layout.snip +56 -0
- data/pristine_app/soups/tutorial/tutorial-links.snip +4 -0
- data/pristine_app/soups/tutorial/tutorial-renderers.snip.markdown +77 -0
- data/pristine_app/soups/tutorial/tutorial.snip.markdown +69 -0
- data/pristine_app/soups/tutorial/vanilla-rb.snip +16 -0
- data/pristine_app/soups/tutorial/vanilla.snip +8 -0
- data/test/dynasnip_test.rb +42 -0
- data/test/dynasnips/link_to_current_snip_test.rb +19 -0
- data/test/dynasnips/link_to_test.rb +27 -0
- data/test/dynasnips/page_title_test.rb +19 -0
- data/test/renderers/base_renderer_test.rb +43 -0
- data/test/renderers/erb_renderer_test.rb +29 -0
- data/test/renderers/haml_renderer_test.rb +35 -0
- data/test/renderers/markdown_renderer_test.rb +31 -0
- data/test/renderers/raw_renderer_test.rb +23 -0
- data/test/renderers/ruby_renderer_test.rb +59 -0
- data/test/snip_inclusion_test.rb +56 -0
- data/test/snip_reference_parser_test.rb +123 -0
- data/test/test_helper.rb +75 -0
- data/test/vanilla_app_test.rb +83 -0
- data/test/vanilla_presenting_test.rb +125 -0
- data/test/vanilla_request_test.rb +87 -0
- metadata +179 -78
- data/config.example.yml +0 -5
- data/config.ru +0 -9
- data/lib/defensio.rb +0 -59
- data/lib/tasks/vanilla.rake +0 -177
- data/lib/vanilla/dynasnips/comments.rb +0 -108
- data/lib/vanilla/dynasnips/current_snip.rb +0 -32
- data/lib/vanilla/dynasnips/edit.rb +0 -63
- data/lib/vanilla/dynasnips/edit_link.rb +0 -24
- data/lib/vanilla/dynasnips/index.rb +0 -11
- data/lib/vanilla/dynasnips/link_to_current_snip.rb +0 -16
- data/lib/vanilla/dynasnips/login.rb +0 -56
- data/lib/vanilla/dynasnips/new.rb +0 -14
- data/lib/vanilla/dynasnips/notes.rb +0 -42
- data/lib/vanilla/dynasnips/url_to.rb +0 -7
- data/lib/vanilla/snip_handling.rb +0 -33
- data/lib/vanilla/snips/start.rb +0 -27
- data/lib/vanilla/snips/system.rb +0 -76
- data/lib/vanilla/snips/tutorial.rb +0 -157
- data/lib/vanilla/test_snips.rb +0 -85
- data/public/hatch.png +0 -0
- data/public/javascripts/jquery.js +0 -3549
- data/public/javascripts/vanilla.js +0 -21
- data/spec/dynasnip_spec.rb +0 -31
- data/spec/renderers/base_renderer_spec.rb +0 -40
- data/spec/renderers/erb_renderer_spec.rb +0 -27
- data/spec/renderers/markdown_renderer_spec.rb +0 -29
- data/spec/renderers/raw_renderer_spec.rb +0 -21
- data/spec/renderers/ruby_renderer_spec.rb +0 -42
- data/spec/renderers/vanilla_app_detecting_renderer_spec.rb +0 -35
- data/spec/spec_helper.rb +0 -64
- data/spec/vanilla_app_spec.rb +0 -38
- data/spec/vanilla_presenting_spec.rb +0 -84
- data/spec/vanilla_request_spec.rb +0 -73
- data/spec/vanilla_snip_finding_spec.rb +0 -28
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
function vanillaPrepareEditor() {
|
|
2
|
-
$('input.attribute_name').change(function() {
|
|
3
|
-
var dl_children = $('dl.attributes').children();
|
|
4
|
-
var dt_index = dl_children.index(this.parentNode) + 1;
|
|
5
|
-
var textarea_for_this = dl_children[dt_index].childNodes[0];
|
|
6
|
-
textarea_for_this.name = this.value;
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
$(document).ready(function() {
|
|
11
|
-
|
|
12
|
-
$('a#add').click(function() {
|
|
13
|
-
$('dl.attributes').append('<dt><input class="attribute_name" type="text"></input></dt><dd><textarea></textarea></dd>');
|
|
14
|
-
vanillaPrepareEditor();
|
|
15
|
-
return false;
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
vanillaPrepareEditor();
|
|
19
|
-
|
|
20
|
-
});
|
|
21
|
-
|
data/spec/dynasnip_spec.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
2
|
-
require 'vanilla/dynasnip'
|
|
3
|
-
|
|
4
|
-
describe Dynasnip, "when storing attributes" do
|
|
5
|
-
class TestDyna < Dynasnip
|
|
6
|
-
attribute :test_attribute, "test attribute content"
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
before(:each) do
|
|
10
|
-
@fake_app = nil
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should make the attribute available as an instance method" do
|
|
14
|
-
TestDyna.new(@fake_app).test_attribute.should == "test attribute content"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it "should store the attribute in the soup" do
|
|
18
|
-
TestDyna.persist!
|
|
19
|
-
Soup['test_dyna'].test_attribute.should == "test attribute content"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "should allow the attribute to be overriden by the soup contents" do
|
|
23
|
-
TestDyna.persist!
|
|
24
|
-
snip = Soup['test_dyna']
|
|
25
|
-
snip.test_attribute = "altered content"
|
|
26
|
-
snip.save
|
|
27
|
-
|
|
28
|
-
TestDyna.new(@fake_app).test_attribute.should == "altered content"
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe Vanilla::Renderers::Base do
|
|
4
|
-
describe "in general" do
|
|
5
|
-
before(:each) do
|
|
6
|
-
create_snip(:name => "test", :content => "content content", :part => "part content")
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it "should render the contents part of the snip as it is" do
|
|
10
|
-
response_body_for("/test").should == "content content"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should render the specified part of the snip" do
|
|
14
|
-
response_body_for("/test/part").should == "part content"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it "should include the contents of a referenced snip" do
|
|
18
|
-
create_snip(:name => "snip_with_inclusions", :content => "loading {test}")
|
|
19
|
-
response_body_for("/snip_with_inclusions").should == "loading content content"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "should perform snip inclusion when rendering a part" do
|
|
23
|
-
create_snip(:name => "snip_with_inclusions", :content => "other content", :part => "loading {test}")
|
|
24
|
-
response_body_for("/snip_with_inclusions/part").should == "loading content content"
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should include other snips using their renderers" do
|
|
28
|
-
create_snip(:name => "including_snip", :content => "lets include {another_snip}")
|
|
29
|
-
create_snip(:name => "another_snip", :content => "blah", :render_as => "Bold")
|
|
30
|
-
response_body_for("/including_snip").gsub(/\s+/, ' ').should == "lets include <b>blah</b>"
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
describe "when trying to include a missing snip" do
|
|
35
|
-
it "should return a string describing the missing snip" do
|
|
36
|
-
create_snip(:name => 'blah', :content => 'include a {missing_snip}')
|
|
37
|
-
response_body_for("/blah").should == "include a [snip 'missing_snip' cannot be found]"
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe Vanilla::Renderers::Erb, "when rendering" do
|
|
4
|
-
def erb_snip(params)
|
|
5
|
-
create_snip(params.merge(:render_as => "Erb"))
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it "should insert evaluated Erb content into the snip" do
|
|
9
|
-
erb_snip(:name => "test", :content => "<%= 1 + 2 %>")
|
|
10
|
-
response_body_for("/test").should == "3"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should evaluate Erb content in the snip" do
|
|
14
|
-
erb_snip(:name => "test", :content => "<% if false %>monkey<% else %>donkey<% end %>")
|
|
15
|
-
response_body_for("/test").should == "donkey"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should expose the snip as an instance variable" do
|
|
19
|
-
erb_snip(:name => "test", :content => "<%= @snip.name %>")
|
|
20
|
-
response_body_for("/test").should == "test"
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "shoudl expose the app as an instance variable" do
|
|
24
|
-
erb_snip(:name => "test", :content => "<%= @app.class.name %>")
|
|
25
|
-
response_body_for("/test").should == "Vanilla::App"
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe Vanilla::Renderers::Markdown, "when rendering" do
|
|
4
|
-
def markdown_snip(attributes)
|
|
5
|
-
create_snip(attributes.merge(:render_as => "Markdown"))
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it "should return the snip contents rendered via Markdown" do
|
|
9
|
-
content = <<Markdown
|
|
10
|
-
# markdown
|
|
11
|
-
|
|
12
|
-
* totally
|
|
13
|
-
* [rocks](http://www.example.com)!
|
|
14
|
-
Markdown
|
|
15
|
-
markdown_snip(:name => "test", :content => content)
|
|
16
|
-
response_body_for("/test").should == BlueCloth.new(content).to_html
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should include other snips using their renderers" do
|
|
20
|
-
markdown_snip(:name => "test", :content => <<-Markdown
|
|
21
|
-
# markdown
|
|
22
|
-
|
|
23
|
-
and so lets include {another_snip}
|
|
24
|
-
Markdown
|
|
25
|
-
)
|
|
26
|
-
create_snip(:name => "another_snip", :content => "blah", :render_as => "Bold")
|
|
27
|
-
response_body_for("/test").gsub(/\s+/, ' ').should == "<h1>markdown</h1> <p>and so lets include <b>blah</b> </p>"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe Vanilla::Renderers::Raw, "when rendering" do
|
|
4
|
-
before(:each) do
|
|
5
|
-
@snip = create_snip(:name => "test", :content => "raw content", :part => "raw part")
|
|
6
|
-
set_main_template "<tag>{current_snip}</tag>"
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it "should render the contents part of the snip as it is" do
|
|
10
|
-
response_body_for("/test.raw").should == "raw content"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should render the specified part of the snip" do
|
|
14
|
-
response_body_for("/test/part.raw").should == "raw part"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it "should not perform any snip inclusion" do
|
|
18
|
-
create_snip(:name => "snip_with_inclusions", :content => "loading {another_snip}")
|
|
19
|
-
response_body_for("/snip_with_inclusions.raw").should == "loading {another_snip}"
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe Vanilla::Renderers::Ruby do
|
|
4
|
-
describe "when rendering normally" do
|
|
5
|
-
class TestDyna < Dynasnip
|
|
6
|
-
def handle(*args)
|
|
7
|
-
'handle called'
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
before(:each) do
|
|
12
|
-
@test_dyna = TestDyna.persist!
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should render the result of the handle method" do
|
|
16
|
-
Vanilla::Test.response_body_for("/test_dyna").should == 'handle called'
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe "when responding restfully" do
|
|
21
|
-
class RestishDyna < Dynasnip
|
|
22
|
-
def get(*args)
|
|
23
|
-
'get called'
|
|
24
|
-
end
|
|
25
|
-
def post(*args)
|
|
26
|
-
'post called'
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
before(:each) do
|
|
31
|
-
@dyna = RestishDyna.persist!
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should render the result of the get method on GET requests" do
|
|
35
|
-
Vanilla::Test.response_body_for("/restish_dyna").should == 'get called'
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "should render the result of the post method on POST requests" do
|
|
39
|
-
Vanilla::Test.response_body_for("/restish_dyna?_method=post") == 'post called'
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe "when detecting the snip renderer" do
|
|
4
|
-
before(:each) do
|
|
5
|
-
@app = Vanilla::App.new
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it "should return the constant refered to in the render_as property of the snip" do
|
|
9
|
-
snip = create_snip(:render_as => "Raw")
|
|
10
|
-
@app.renderer_for(snip).should == Vanilla::Renderers::Raw
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should return Vanilla::Renderers::Base if no render_as property exists" do
|
|
14
|
-
snip = create_snip(:name => "blah")
|
|
15
|
-
@app.renderer_for(snip).should == Vanilla::Renderers::Base
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should return Vanilla::Renderers::Base if the render_as property is blank" do
|
|
19
|
-
snip = create_snip(:name => "blah", :render_as => '')
|
|
20
|
-
@app.renderer_for(snip).should == Vanilla::Renderers::Base
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "should raise an error if the specified renderer doesn't exist" do
|
|
24
|
-
snip = create_snip(:render_as => "NonExistentClass")
|
|
25
|
-
lambda { @app.renderer_for(snip) }.should raise_error
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it "should load constants outside of the Vanilla::Renderers module" do
|
|
29
|
-
class ::MyRenderer
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
snip = create_snip(:render_as => "MyRenderer")
|
|
33
|
-
@app.renderer_for(snip).should == MyRenderer
|
|
34
|
-
end
|
|
35
|
-
end
|
data/spec/spec_helper.rb
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
|
2
|
-
require "vanilla"
|
|
3
|
-
require "spec"
|
|
4
|
-
require "fileutils"
|
|
5
|
-
require "rack/mock"
|
|
6
|
-
|
|
7
|
-
module Vanilla
|
|
8
|
-
module Test
|
|
9
|
-
def setup_clean_environment
|
|
10
|
-
test_soup_config = { :database => File.join(File.dirname(__FILE__), "soup_test.db")}
|
|
11
|
-
FileUtils.rm(test_soup_config[:database]) if File.exist?(test_soup_config[:database])
|
|
12
|
-
Soup.base = test_soup_config
|
|
13
|
-
|
|
14
|
-
# TODO: this is hard-coded for the AR implementation
|
|
15
|
-
require "active_record"
|
|
16
|
-
ActiveRecord::Migration.verbose = false
|
|
17
|
-
|
|
18
|
-
Soup.prepare
|
|
19
|
-
require "vanilla/dynasnips/current_snip"
|
|
20
|
-
CurrentSnip.persist!
|
|
21
|
-
create_snip :name => "system", :main_template => "{current_snip}"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def response_for(url)
|
|
25
|
-
Vanilla::App.new.call(mock_env_for_url(url))
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def response_body_for(url)
|
|
29
|
-
response_for(url)[2].body[0]
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def response_code_for(url)
|
|
33
|
-
response_for(url)[0]
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def set_main_template(template_content)
|
|
37
|
-
system = Vanilla.snip("system") || Snip.new(:name => "system")
|
|
38
|
-
system.main_template = template_content
|
|
39
|
-
system.save
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def create_snip(params)
|
|
43
|
-
s = Snip.new(params)
|
|
44
|
-
s.save
|
|
45
|
-
s
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def mock_env_for_url(url)
|
|
49
|
-
Rack::MockRequest.env_for(url)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def mock_request(url)
|
|
53
|
-
Rack::Request.new(mock_env_for_url(url))
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
extend self
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
Spec::Runner.configure do |config|
|
|
61
|
-
config.include(Vanilla::Test)
|
|
62
|
-
config.before { Vanilla::Test.setup_clean_environment }
|
|
63
|
-
end
|
|
64
|
-
|
data/spec/vanilla_app_spec.rb
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
2
|
-
|
|
3
|
-
describe Vanilla::App do
|
|
4
|
-
describe "when behaving as a Rack application" do
|
|
5
|
-
it "should return an array of status code, headers and response" do
|
|
6
|
-
create_snip(:name => "test", :content => "content")
|
|
7
|
-
result = Vanilla::App.new.call(mock_env_for_url("/test.text"))
|
|
8
|
-
result.should be_a_kind_of(Array)
|
|
9
|
-
result[0].should == 200
|
|
10
|
-
result[1].should be_a_kind_of(Hash)
|
|
11
|
-
result[2].each{ |output| output.should == "content" }
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
describe "when being configured" do
|
|
16
|
-
it "should load a config file from the current working directory by default" do
|
|
17
|
-
File.should_receive(:open).with("config.yml").and_return(StringIO.new({}.to_yaml))
|
|
18
|
-
Vanilla::App.new
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "should load a config file given" do
|
|
22
|
-
File.open("/tmp/vanilla_config.yml", "w") { |f| f.write({:hello => true}.to_yaml) }
|
|
23
|
-
app = Vanilla::App.new("/tmp/vanilla_config.yml")
|
|
24
|
-
app.config[:hello].should be_true
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should allow saving of configuration to the same file it was loaded from" do
|
|
28
|
-
config_file = "/tmp/vanilla_config.yml"
|
|
29
|
-
File.open(config_file, "w") { |f| f.write({:hello => true}.to_yaml) }
|
|
30
|
-
app = Vanilla::App.new(config_file)
|
|
31
|
-
app.config[:saved] = true
|
|
32
|
-
app.config.save!
|
|
33
|
-
|
|
34
|
-
config = YAML.load(File.open(config_file))
|
|
35
|
-
config[:saved].should be_true
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
2
|
-
|
|
3
|
-
describe Vanilla::App do
|
|
4
|
-
before(:each) do
|
|
5
|
-
LinkTo.persist!
|
|
6
|
-
set_main_template "<tag>{current_snip}</tag>"
|
|
7
|
-
create_snip :name => "test", :content => "blah {other_snip}", :part => 'part content'
|
|
8
|
-
create_snip :name => "other_snip", :content => "blah!"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
describe "when presenting as HTML" do
|
|
12
|
-
it "should render the snip's content in the system template if no format or part is given" do
|
|
13
|
-
response_body_for("/test").should == "<tag>blah blah!</tag>"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it "should render the snip's content in the system template if the HTML format is given" do
|
|
17
|
-
response_body_for("/test.html").should == "<tag>blah blah!</tag>"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "should render the requested part within the main template when a part is given" do
|
|
21
|
-
response_body_for("/test/part").should == "<tag>part content</tag>"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should have a response code of 200" do
|
|
25
|
-
response_code_for("/test").should == 200
|
|
26
|
-
response_code_for("/test.html").should == 200
|
|
27
|
-
response_code_for("/test/part").should == 200
|
|
28
|
-
response_code_for("/test/part.html").should == 200
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
describe "when presenting content as text" do
|
|
33
|
-
it "should render the snip's content outside of the main template with its default renderer" do
|
|
34
|
-
response_body_for("/test.text").should == "blah blah!"
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "should render the snip part outside the main template when a format is given" do
|
|
38
|
-
response_body_for("/test/part.text").should == "part content"
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "should have a response code of 200" do
|
|
42
|
-
response_code_for("/test.text").should == 200
|
|
43
|
-
response_code_for("/test/part.text").should == 200
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
describe "when presenting raw content" do
|
|
49
|
-
it "should render the snips contents exactly as they are" do
|
|
50
|
-
response_body_for("/test.raw").should == "blah {other_snip}"
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "should render the snip content exactly even if a render_as attribute exists" do
|
|
54
|
-
response_body_for("/current_snip.raw").should == "CurrentSnip"
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "should render a snips part if requested" do
|
|
58
|
-
response_body_for("/test/part.raw").should == "part content"
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "should have a response code of 200" do
|
|
62
|
-
response_code_for("/test.raw").should == 200
|
|
63
|
-
response_code_for("/test/part.raw").should == 200
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
describe "when a missing snip is requested" do
|
|
69
|
-
it "should render missing snip content in the main template" do
|
|
70
|
-
response_body_for("/missing_snip").should == "<tag>Couldn't find snip #{LinkTo.new(nil).handle("missing_snip")}</tag>"
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "should have a 404 response code" do
|
|
74
|
-
response_code_for("/missing_snip").should == 404
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
describe "when requesting an unknown format" do
|
|
80
|
-
it "should return a 500 status code" do
|
|
81
|
-
response_code_for("/test.monkey").should == 500
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|