spreadhead 0.6.0 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -10,9 +10,9 @@ begin
10
10
  gem.email = "jeff@socialrange.org"
11
11
  gem.homepage = "http://github.com/jeffrafter/spreadhead"
12
12
  gem.authors = ["Jeff Rafter"]
13
- gem.add_dependency "BlueCloth"
14
- gem.add_dependency "RedCloth"
15
- gem.add_dependency "rsl-stringex"
13
+ gem.add_dependency "BlueCloth", ">= 1.0.0"
14
+ gem.add_dependency "RedCloth", ">= 4.1.1"
15
+ gem.add_dependency "rsl-stringex", ">= 1.0.2"
16
16
  gem.files = FileList["[A-Z]*", "{app,config,generators,lib,rails}/**/*", "test/{controllers,models}/**/*", "test/test_helper.rb"]
17
17
  gem.test_files = FileList["test/{controllers,models}/**/*", "test/test_helper.rb"]
18
18
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
@@ -29,6 +29,20 @@ Rake::TestTask.new(:test => ["generator:cleanup", "generator:spreadhead"]) do |t
29
29
  task.verbose = true
30
30
  end
31
31
 
32
+ namespace :test do
33
+ Rake::TestTask.new(:clearance => ["generator:cleanup", "generator:clearance", "generator:spreadhead"]) do |task|
34
+ task.libs << "lib" << "test"
35
+ task.pattern = "test/**/*_test.rb"
36
+ task.verbose = true
37
+ end
38
+
39
+ Rake::TestTask.new(:database => ["generator:cleanup", "generator:database", "generator:spreadhead"]) do |task|
40
+ task.libs << "lib" << "test"
41
+ task.pattern = "test/**/*_test.rb"
42
+ task.verbose = true
43
+ end
44
+ end
45
+
32
46
  generators = %w(spreadhead)
33
47
 
34
48
  namespace :generator do
@@ -44,15 +58,34 @@ namespace :generator do
44
58
  system "echo \"config.gem 'thoughtbot-shoulda', :lib => 'shoulda'\" >> test/rails/config/environments/test.rb"
45
59
  system "echo \"config.gem 'thoughtbot-factory_girl', :lib => 'factory_girl'\" >> test/rails/config/environments/test.rb"
46
60
 
61
+ # Make a thing
62
+ system "cd test/rails && ./script/generate scaffold thing name:string mood:string"
63
+
47
64
  FileUtils.mkdir_p("test/rails/vendor/plugins")
48
65
  spreadhead_root = File.expand_path(File.dirname(__FILE__))
49
66
  system("ln -s #{spreadhead_root} test/rails/vendor/plugins/spreadhead")
50
67
  end
68
+
69
+ desc "Prepares the application with clearance"
70
+ task :clearance do
71
+ system "echo \"config.gem 'thoughtbot-clearance', :lib => 'clearance'\" >> test/rails/config/environments/test.rb"
72
+ system "echo \"HOST = 'spreadhead'\" >> test/rails/config/environments/test.rb"
73
+ system "echo \"DO_NOT_REPLY = 'donotreply'\" >> test/rails/config/environments/test.rb"
74
+ system "cd test/rails && ./script/generate clearance && rake db:migrate db:test:prepare"
75
+ end
76
+
77
+ desc "Prepares the application with an alternate database"
78
+ task :database do
79
+ puts "== Configuring the database =================================================="
80
+ system "cp config/database.yml.sample test/rails/config/database.yml"
81
+ system "cd test/rails && rake db:migrate:reset"
82
+ end
51
83
 
52
84
  desc "Run the spreadhead generator"
53
85
  task :spreadhead do
54
86
  system "cd test/rails && ./script/generate spreadhead && rake db:migrate db:test:prepare"
55
87
  end
88
+
56
89
  end
57
90
 
58
91
  task :default => :test
@@ -72,5 +105,4 @@ Rake::RDocTask.new do |rdoc|
72
105
  rdoc.rdoc_files.include('lib/**/*.rb')
73
106
  rdoc.rdoc_files.include('app/**/*.rb')
74
107
  rdoc.rdoc_files.include('generators/**/*.rb')
75
- end
76
-
108
+ end
data/TUTORIAL.textile CHANGED
@@ -13,7 +13,9 @@ By default this should install the RedCloth gem, the BlueCloth gem, and the rsl-
13
13
  Rails::Initializer.run do |config|
14
14
  # Specify gems that this application depends on and have them installed with
15
15
  # rake gems:install
16
- config.gem "spreadhead", :lib => "spreadhead"
16
+ config.gem "jeffrafter-spreadhead",
17
+ :lib => 'spreadhead',
18
+ :source => 'http://gems.github.com'
17
19
 
18
20
  # Skip frameworks you're not going to use. To use Rails without a database,
19
21
  # you must remove the Active Record framework.
@@ -48,7 +50,7 @@ To enable the application you need to modify initializer, where you can control
48
50
  module Spreadhead
49
51
  module PagesAuth
50
52
  def self.filter(controller)
51
- controller.redirect_to_root unless signed_in?
53
+ controller.send(:redirect_to, '/') unless controller.send(:signed_in?)
52
54
  end
53
55
  end
54
56
  end
@@ -62,7 +64,7 @@ If you give everyone access, this is probably still a bad idea and you will want
62
64
  module Spreadhead
63
65
  module PagesAuth
64
66
  def self.filter(controller)
65
- controller.redirect_to_root unless admin?
67
+ controller.send(:redirect_to, '/') unless controller.send(:admin?)
66
68
  end
67
69
  end
68
70
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.6.2
@@ -0,0 +1,17 @@
1
+ # This file is not copied to or used by your rails environment. The only time
2
+ # these settings are used is when you have executed rake test:database. This
3
+ # file makes it easy to test alternate database drivers with Spreadhead. The
4
+ # default testing environment uses the rails default (sqlite3).
5
+ development:
6
+ adapter: mysql
7
+ database: spreadhead_development
8
+ username: root
9
+ password:
10
+ host: localhost
11
+
12
+ test:
13
+ adapter: mysql
14
+ database: spreadhead_test
15
+ username: root
16
+ password:
17
+ host: localhost
@@ -10,7 +10,7 @@
10
10
  # module Spreadhead
11
11
  # module PagesAuth
12
12
  # def self.filter(controller)
13
- # controller.redirect_to_root unless signed_in?
13
+ # controller.send(:redirect_to, '/') unless controller.send(:signed_in?)
14
14
  # end
15
15
  # end
16
16
  # end
@@ -1,8 +1,8 @@
1
1
  class SpreadheadCreatePages < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table(:pages) do |t|
4
+ t.text :text, :null => false
4
5
  t.string :url, :null => false
5
- t.string :text, :null => false
6
6
  t.string :title, :null => false
7
7
  t.string :keywords
8
8
  t.string :description
@@ -3,8 +3,8 @@ class SpreadheadUpdatePages < ActiveRecord::Migration
3
3
  <%
4
4
  existing_columns = ActiveRecord::Base.connection.columns(:pages).collect { |each| each.name }
5
5
  columns = [
6
+ [:text, 't.text :text, :null => false'],
6
7
  [:url, 't.string :url, :null => false'],
7
- [:text, 't.string :text, :null => false'],
8
8
  [:title, 't.string :title, :null => false'],
9
9
  [:keywords, 't.string :keywords'],
10
10
  [:description, 't.string :description'],
@@ -25,7 +25,9 @@ module Spreadhead
25
25
  when 'markdown'
26
26
  BlueCloth.new(page.text).to_html
27
27
  when 'textile'
28
- RedCloth.new(page.text).to_html
28
+ r = RedCloth.new(page.text)
29
+ r.hard_breaks = false
30
+ r.to_html
29
31
  else
30
32
  page.text
31
33
  end
@@ -2,10 +2,14 @@ require 'active_record/fixtures'
2
2
 
3
3
  namespace :spreadhead do
4
4
  desc "Export a set of fixtures from the current database pages"
5
- task :export => [:environment] do
5
+ task :export => [:environment] do |tasks, args|
6
6
  data = File.join(RAILS_ROOT, 'db', 'data')
7
7
  Dir.mkdir(data) unless File.exists?(data)
8
- Page.to_fixtures(data)
8
+ if args.revisions
9
+ Page.to_fixtures(data);
10
+ else
11
+ Page.current.to_fixtures(data)
12
+ end
9
13
  end
10
14
 
11
15
  desc "Import a set of page fixtures into the current database (overwrites existing pages)"
@@ -114,5 +114,48 @@ class PagesControllerTest < ActionController::TestCase
114
114
  end
115
115
 
116
116
  end
117
+
118
+ context "routes" do
119
+
120
+ should "recognize the page resources" do
121
+ assert_recognizes({:controller => 'spreadhead/pages', :action => 'index'}, {:path => '/pages', :method => :get})
122
+ assert_recognizes({:controller => 'spreadhead/pages', :action => 'new'}, {:path => '/pages/new', :method => :get})
123
+ assert_recognizes({:controller => 'spreadhead/pages', :action => 'create'}, {:path => '/pages', :method => :post})
124
+ assert_recognizes({:controller => 'spreadhead/pages', :id => '1', :action => 'destroy'}, {:path => '/pages/1', :method => :delete})
125
+ assert_recognizes({:controller => 'spreadhead/pages', :id => '1', :action => 'update'}, {:path => '/pages/1', :method => :put})
126
+ assert_recognizes({:controller => 'spreadhead/pages', :id => '1', :action => 'edit'}, {:path => '/pages/1/edit', :method => :get})
127
+ end
128
+
129
+ should "recognize the about path" do
130
+ assert_recognizes({:controller => 'spreadhead/pages', :action => 'show', :url => ['about']}, {:path => '/about', :method => :get})
131
+ end
132
+
133
+ should "recognize the privacy path" do
134
+ assert_recognizes({:controller => 'spreadhead/pages', :action => 'show', :url => ['about', 'privacy']}, {:path => '/about/privacy', :method => :get})
135
+ end
136
+
137
+ should "recognize the birthday path" do
138
+ assert_recognizes({:controller => 'spreadhead/pages', :action => 'show', :url => ['2004', '09', '13', 'birthday']}, {:path => '/2004/09/13/birthday', :method => :get})
139
+ end
140
+
141
+ should "recognize the root path" do
142
+ assert_recognizes({:controller => 'spreadhead/pages', :action => 'show', :url => []}, {:path => '/', :method => :get})
143
+ end
144
+
145
+ should "not override the things" do
146
+ assert_recognizes({:controller => 'things', :action => 'index'}, {:path => '/things', :method => :get})
147
+ assert_recognizes({:controller => 'things', :action => 'new'}, {:path => '/things/new', :method => :get})
148
+ assert_recognizes({:controller => 'things', :action => 'create'}, {:path => '/things', :method => :post})
149
+ assert_recognizes({:controller => 'things', :id => '1', :action => 'destroy'}, {:path => '/things/1', :method => :delete})
150
+ assert_recognizes({:controller => 'things', :id => '1', :action => 'update'}, {:path => '/things/1', :method => :put})
151
+ assert_recognizes({:controller => 'things', :id => '1', :action => 'edit'}, {:path => '/things/1/edit', :method => :get})
152
+ end
153
+
154
+ if defined?(Clearance)
155
+ should "not override clearance paths" do
156
+ assert_recognizes({:controller => 'sessions', :action => 'new'}, {:path => '/session/new', :method => :get})
157
+ end
158
+ end
159
+ end
117
160
  end
118
161
  end
@@ -56,7 +56,21 @@ class PageTest < ActiveSupport::TestCase
56
56
  assert dup.update_attributes(:url => nil)
57
57
  assert_equal 'woo', dup.url
58
58
  end
59
-
59
+
60
+ should "allow text to be longer than two-hundred-and-fifty-five characters" do
61
+ text = <<EOF
62
+ <h3>3.</h3>
63
+ <h1>A Quick (and Hopefully Painless) Ride Through Ruby (with Cartoon Foxes)</h1>
64
+ <p><img src="i/the.foxes-1.png" title="The foxes show up." alt="The foxes show up." /></p>
65
+ <p>Yeah, these are the two. My asthma&#8217;s kickin in so I&#8217;ve got to go take a puff of medicated air just now. Be with you in a moment.</p>
66
+ <p><img src="i/the.foxes-2.png" title="Foxes in boxes." alt="Foxes in boxes." /></p>
67
+ <p>I&#8217;m told that this chapter is best accompanied by a rag. Something you can mop your face with as the sweat pours off your face.</p>
68
+ <p>Indeed, we&#8217;ll be racing through the whole language. Like striking every match in a box as quickly as can be done.</p>
69
+ EOF
70
+ page = Factory(:page, :title => '_why', :url => 'poignant-guide', :text => text)
71
+ page.reload
72
+ assert_equal text, page.text
73
+ end
60
74
  end
61
75
 
62
76
  context "When retrieving a page" do
data/test/test_helper.rb CHANGED
@@ -1,4 +1,18 @@
1
+ ENV["RAILS_ENV"] = "test"
1
2
  require File.expand_path(File.dirname(__FILE__) + "/rails/config/environment")
2
3
  require 'test_help'
3
4
  require 'factory_girl'
4
- require 'shoulda'
5
+ require 'shoulda'
6
+
7
+ if defined?(Clearance)
8
+ require 'clearance/../../shoulda_macros/clearance'
9
+ end
10
+
11
+ # Name the root_url for testing
12
+ ActionController::Routing::Routes.add_named_route('root', '/', :controller => 'spreadhead/pages', :action => 'show')
13
+
14
+ class ActiveSupport::TestCase
15
+ self.use_transactional_fixtures = true
16
+ self.use_instantiated_fixtures = false
17
+ fixtures :all
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadhead
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Rafter
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-20 00:00:00 -07:00
12
+ date: 2009-09-07 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: "0"
23
+ version: 1.0.0
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: RedCloth
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: "0"
33
+ version: 4.1.1
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rsl-stringex
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: "0"
43
+ version: 1.0.2
44
44
  version:
45
45
  description: Rails content mangement for pages that shouldn't be views.
46
46
  email: jeff@socialrange.org
@@ -65,6 +65,7 @@ files:
65
65
  - app/views/spreadhead/pages/index.html.erb
66
66
  - app/views/spreadhead/pages/new.html.erb
67
67
  - app/views/spreadhead/pages/show.html.erb
68
+ - config/database.yml.sample
68
69
  - config/spreadhead_routes.rb
69
70
  - generators/spreadhead/USAGE
70
71
  - generators/spreadhead/lib/insert_commands.rb