add tests for creating/updating wikis, fix page name bug along the way
This commit is contained in:
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
|
|||||||
s.add_development_dependency('org-ruby')
|
s.add_development_dependency('org-ruby')
|
||||||
s.add_development_dependency('rdiscount')
|
s.add_development_dependency('rdiscount')
|
||||||
s.add_development_dependency('shoulda')
|
s.add_development_dependency('shoulda')
|
||||||
|
s.add_development_dependency('rack-test')
|
||||||
|
|
||||||
# = MANIFEST =
|
# = MANIFEST =
|
||||||
s.files = %w[
|
s.files = %w[
|
||||||
|
|||||||
@@ -30,10 +30,12 @@ module Precious
|
|||||||
|
|
||||||
# Sinatra error handling
|
# Sinatra error handling
|
||||||
configure :development, :staging do
|
configure :development, :staging do
|
||||||
set :raise_errors, false
|
enable :show_exceptions, :dump_errors
|
||||||
set :show_exceptions, true
|
disable :raise_errors, :clean_trace
|
||||||
set :dump_errors, true
|
end
|
||||||
set :clean_trace, false
|
|
||||||
|
configure :test do
|
||||||
|
enable :logging, :raise_errors, :dump_errors
|
||||||
end
|
end
|
||||||
|
|
||||||
get '/' do
|
get '/' do
|
||||||
@@ -53,18 +55,17 @@ module Precious
|
|||||||
end
|
end
|
||||||
|
|
||||||
post '/edit/*' do
|
post '/edit/*' do
|
||||||
name = params[:splat].first
|
|
||||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||||
page = wiki.page(name)
|
page = wiki.page(params[:splat].first)
|
||||||
|
name = params[:rename] || page.name
|
||||||
format = params[:format].intern
|
format = params[:format].intern
|
||||||
name = params[:rename] if params[:rename]
|
|
||||||
|
|
||||||
wiki.update_page(page, name, format, params[:content], commit_message)
|
wiki.update_page(page, name, format, params[:content], commit_message)
|
||||||
|
|
||||||
redirect "/#{CGI.escape(Gollum::Page.cname(name))}"
|
redirect "/#{CGI.escape(Gollum::Page.cname(name))}"
|
||||||
end
|
end
|
||||||
|
|
||||||
post '/create/*' do
|
post '/create' do
|
||||||
name = params[:page]
|
name = params[:page]
|
||||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div id="gollum-editor" data-escaped-name="{{escaped_name}}" class="{{#is_create_page}}create{{/is_create_page}}{{#is_edit_page}}edit{{/is_edit_page}}">
|
<div id="gollum-editor" data-escaped-name="{{escaped_name}}" class="{{#is_create_page}}create{{/is_create_page}}{{#is_edit_page}}edit{{/is_edit_page}}">
|
||||||
{{#is_create_page}}
|
{{#is_create_page}}
|
||||||
<form name="gollum-editor" action="/create/{{escaped_name}}" method="post">
|
<form name="gollum-editor" action="/create" method="post">
|
||||||
{{/is_create_page}}
|
{{/is_create_page}}
|
||||||
{{#is_edit_page}}
|
{{#is_edit_page}}
|
||||||
<form name="gollum-editor" action="/edit/{{escaped_name}}" method="post">
|
<form name="gollum-editor" action="/edit/{{escaped_name}}" method="post">
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
require 'rubygems'
|
require 'rubygems'
|
||||||
|
require 'rack/test'
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'shoulda'
|
require 'shoulda'
|
||||||
require 'mocha'
|
require 'mocha'
|
||||||
@@ -8,7 +9,9 @@ dir = File.dirname(File.expand_path(__FILE__))
|
|||||||
$LOAD_PATH.unshift(File.join(dir, '..', 'lib'))
|
$LOAD_PATH.unshift(File.join(dir, '..', 'lib'))
|
||||||
$LOAD_PATH.unshift(dir)
|
$LOAD_PATH.unshift(dir)
|
||||||
|
|
||||||
|
ENV['RACK_ENV'] = 'test'
|
||||||
require 'gollum'
|
require 'gollum'
|
||||||
|
require 'gollum/frontend/app'
|
||||||
|
|
||||||
# Make sure we're in the test dir, the tests expect that to be the current
|
# Make sure we're in the test dir, the tests expect that to be the current
|
||||||
# directory.
|
# directory.
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# ~*~ encoding: utf-8 ~*~
|
||||||
|
require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
||||||
|
|
||||||
|
context "Frontend" do
|
||||||
|
include Rack::Test::Methods
|
||||||
|
|
||||||
|
setup do
|
||||||
|
@path = cloned_testpath("examples/lotr.git")
|
||||||
|
@wiki = Gollum::Wiki.new(@path)
|
||||||
|
Precious::App.set(:gollum_path, @path)
|
||||||
|
end
|
||||||
|
|
||||||
|
teardown do
|
||||||
|
FileUtils.rm_rf(@path)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "edits page" do
|
||||||
|
page_1 = @wiki.page('Bilbo Baggins')
|
||||||
|
post "/edit/#{Gollum::Page.cname page_1.name}", :content => 'abc',
|
||||||
|
:format => page_1.format, :message => 'def'
|
||||||
|
follow_redirect!
|
||||||
|
assert last_response.ok?
|
||||||
|
|
||||||
|
@wiki.clear_cache
|
||||||
|
page_2 = @wiki.page(page_1.name)
|
||||||
|
assert_equal 'abc', page_2.raw_data
|
||||||
|
assert_equal 'def', page_2.version.message
|
||||||
|
assert_not_equal page_1.version.sha, page_2.version.sha
|
||||||
|
end
|
||||||
|
|
||||||
|
test "creates page" do
|
||||||
|
post "/create", :content => 'abc', :page => "Newbie",
|
||||||
|
:format => 'markdown', :message => 'def'
|
||||||
|
follow_redirect!
|
||||||
|
assert last_response.ok?
|
||||||
|
|
||||||
|
page = @wiki.page('Newbie')
|
||||||
|
assert_equal 'abc', page.raw_data
|
||||||
|
assert_equal 'def', page.version.message
|
||||||
|
end
|
||||||
|
|
||||||
|
def app
|
||||||
|
Precious::App
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user