dancroak-sortable_table 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +86 -0
- data/VERSION.yml +2 -2
- data/test/rails_root/config/environments/test.rb +6 -0
- data/test/rails_root/log/test.log +72 -0
- data/test/rails_root/test/helper_testcase.rb +38 -0
- data/test/rails_root/test/test_helper.rb +1 -11
- data/test/rails_root/test/unit/helpers/application_helper_test.rb +53 -0
- data/test/rails_root/vendor/plugins/helper_test/MIT-LICENSE +20 -0
- data/test/rails_root/vendor/plugins/helper_test/README +33 -0
- data/test/rails_root/vendor/plugins/helper_test/about.yml +7 -0
- data/test/rails_root/vendor/plugins/helper_test/generators/helper_test/helper_test_generator.rb +22 -0
- data/test/rails_root/vendor/plugins/helper_test/generators/helper_test/templates/helper_test.rb +13 -0
- data/test/rails_root/vendor/plugins/helper_test/generators/helper_test/templates/helper_testcase.rb +38 -0
- metadata +17 -3
- data/README.markdown +0 -72
- data/test/rails_root/test/units/helpers/application_helper_test.rb +0 -46
data/README.textile
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
h1. Sortable Table
|
2
|
+
|
3
|
+
Sort HTML tables in a Rails app.
|
4
|
+
|
5
|
+
h2. Install
|
6
|
+
|
7
|
+
script/plugin install git://github.com/dancroak/sortable_table.git
|
8
|
+
|
9
|
+
In test/test_helper.rb:
|
10
|
+
|
11
|
+
class Test::Unit::TestCase
|
12
|
+
include SortableTable::Test::TestHelper
|
13
|
+
end
|
14
|
+
|
15
|
+
In app/controllers/application_controller.rb:
|
16
|
+
|
17
|
+
class ApplicationController < ActionController::Base
|
18
|
+
include SortableTable::App::Controllers::ApplicationController
|
19
|
+
end
|
20
|
+
|
21
|
+
In app/helpers/application_helper.rb:
|
22
|
+
|
23
|
+
module ApplicationHelper
|
24
|
+
include SortableTable::App::Helpers::ApplicationHelper
|
25
|
+
end
|
26
|
+
|
27
|
+
h2. Conventions
|
28
|
+
|
29
|
+
params[:sort] and params[:order]
|
30
|
+
|
31
|
+
h2. Examples
|
32
|
+
|
33
|
+
Use the sortable_attributes macro to list the... sortable attributes.
|
34
|
+
|
35
|
+
Then, in your index action, pass the sort_order method to your usual
|
36
|
+
order parameter for will paginate or named scope call.
|
37
|
+
|
38
|
+
class UsersController < Admin::BaseController
|
39
|
+
|
40
|
+
sortable_attributes :name, :email
|
41
|
+
|
42
|
+
def index
|
43
|
+
@users = User.paginate :page => params[:page], :order => sort_order
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
Time-saving Shoulda macros for your tests:
|
49
|
+
|
50
|
+
class UsersControllerTest < ActionController::TestCase
|
51
|
+
|
52
|
+
context 'GET to index with sort and order params' do
|
53
|
+
setup do
|
54
|
+
5.times do |each|
|
55
|
+
Factory :user,
|
56
|
+
:name => "name #{each}",
|
57
|
+
:email => "email#{each}@example.com"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
should_sort_by :name
|
62
|
+
should_sort_by :email
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
And some sugar for your views:
|
68
|
+
|
69
|
+
%h1 Users
|
70
|
+
|
71
|
+
%table
|
72
|
+
%tr
|
73
|
+
= sortable_table_header :name => 'Name', :sort => 'name'
|
74
|
+
= sortable_table_header :name => 'E-mail', :sort => 'email'
|
75
|
+
|
76
|
+
- @users.each do |each|
|
77
|
+
%tr
|
78
|
+
%td= each.name
|
79
|
+
%td= each.email
|
80
|
+
|
81
|
+
Authors
|
82
|
+
-------
|
83
|
+
|
84
|
+
Dan Croak, Joe Ferris, and Boston.rb.
|
85
|
+
|
86
|
+
Copyright (c) 2008 Dan Croak, released under the MIT license
|
data/VERSION.yml
CHANGED
@@ -20,3 +20,9 @@ config.action_controller.allow_forgery_protection = false
|
|
20
20
|
# The :test delivery method accumulates sent emails in the
|
21
21
|
# ActionMailer::Base.deliveries array.
|
22
22
|
config.action_mailer.delivery_method = :test
|
23
|
+
|
24
|
+
require 'mocha'
|
25
|
+
require 'quietbacktrace'
|
26
|
+
require 'shoulda'
|
27
|
+
require 'factory_girl'
|
28
|
+
require 'redgreen'
|
@@ -690,3 +690,75 @@ Processing UsersController#index (for 0.0.0.0 at 2008-10-16 15:21:37) [GET]
|
|
690
690
|
Rendering template within layouts/users
|
691
691
|
Rendering users/index
|
692
692
|
Completed in 0.00504 (198 reqs/sec) | Rendering: 0.00305 (60%) | DB: 0.00258 (51%) | 200 OK [http://test.host/users?order=descending&sort=name]
|
693
|
+
[4;36;1mUser Create (0.000534)[0m [0;1mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name1', '2008-10-16 20:12:20', NULL, 1, 'email1@example.com', '2008-10-16 20:12:20')[0m
|
694
|
+
[4;35;1mUser Create (0.000111)[0m [0mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name2', '2008-10-16 20:12:20', NULL, 2, 'email2@example.com', '2008-10-16 20:12:20')[0m
|
695
|
+
[4;36;1mUser Load (0.000499)[0m [0;1mSELECT * FROM "users" [0m
|
696
|
+
|
697
|
+
|
698
|
+
Processing UsersController#index (for 0.0.0.0 at 2008-10-16 16:12:20) [GET]
|
699
|
+
Session ID:
|
700
|
+
Parameters: {"order"=>"ascending", "action"=>"index", "controller"=>"users", "sort"=>"age"}
|
701
|
+
[4;35;1mUser Load (0.001521)[0m [0mSELECT * FROM "users" ORDER BY age asc[0m
|
702
|
+
Rendering template within layouts/users
|
703
|
+
Rendering users/index
|
704
|
+
Completed in 0.04991 (20 reqs/sec) | Rendering: 0.04470 (89%) | DB: 0.00266 (5%) | 200 OK [http://test.host/users?order=ascending&sort=age]
|
705
|
+
[4;36;1mUser Create (0.000524)[0m [0;1mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name3', '2008-10-16 20:12:20', NULL, 3, 'email3@example.com', '2008-10-16 20:12:20')[0m
|
706
|
+
[4;35;1mUser Create (0.000182)[0m [0mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name4', '2008-10-16 20:12:20', NULL, 4, 'email4@example.com', '2008-10-16 20:12:20')[0m
|
707
|
+
[4;36;1mUser Load (0.000692)[0m [0;1mSELECT * FROM "users" [0m
|
708
|
+
|
709
|
+
|
710
|
+
Processing UsersController#index (for 0.0.0.0 at 2008-10-16 16:12:20) [GET]
|
711
|
+
Session ID:
|
712
|
+
Parameters: {"order"=>"descending", "action"=>"index", "controller"=>"users", "sort"=>"age"}
|
713
|
+
[4;35;1mUser Load (0.001342)[0m [0mSELECT * FROM "users" ORDER BY age desc[0m
|
714
|
+
Rendering template within layouts/users
|
715
|
+
Rendering users/index
|
716
|
+
Completed in 0.09649 (10 reqs/sec) | Rendering: 0.09439 (97%) | DB: 0.00274 (2%) | 200 OK [http://test.host/users?order=descending&sort=age]
|
717
|
+
[4;36;1mUser Create (0.000418)[0m [0;1mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name5', '2008-10-16 20:12:20', NULL, 5, 'email5@example.com', '2008-10-16 20:12:20')[0m
|
718
|
+
[4;35;1mUser Create (0.000117)[0m [0mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name6', '2008-10-16 20:12:20', NULL, 6, 'email6@example.com', '2008-10-16 20:12:20')[0m
|
719
|
+
[4;36;1mUser Load (0.000577)[0m [0;1mSELECT * FROM "users" [0m
|
720
|
+
|
721
|
+
|
722
|
+
Processing UsersController#index (for 0.0.0.0 at 2008-10-16 16:12:20) [GET]
|
723
|
+
Session ID:
|
724
|
+
Parameters: {"order"=>"ascending", "action"=>"index", "controller"=>"users", "sort"=>"email"}
|
725
|
+
[4;35;1mUser Load (0.001013)[0m [0mSELECT * FROM "users" ORDER BY users.email asc[0m
|
726
|
+
Rendering template within layouts/users
|
727
|
+
Rendering users/index
|
728
|
+
Completed in 0.00416 (240 reqs/sec) | Rendering: 0.00256 (61%) | DB: 0.00213 (51%) | 200 OK [http://test.host/users?order=ascending&sort=email]
|
729
|
+
[4;36;1mUser Create (0.000362)[0m [0;1mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name7', '2008-10-16 20:12:20', NULL, 7, 'email7@example.com', '2008-10-16 20:12:20')[0m
|
730
|
+
[4;35;1mUser Create (0.000112)[0m [0mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name8', '2008-10-16 20:12:20', NULL, 8, 'email8@example.com', '2008-10-16 20:12:20')[0m
|
731
|
+
[4;36;1mUser Load (0.000486)[0m [0;1mSELECT * FROM "users" [0m
|
732
|
+
|
733
|
+
|
734
|
+
Processing UsersController#index (for 0.0.0.0 at 2008-10-16 16:12:20) [GET]
|
735
|
+
Session ID:
|
736
|
+
Parameters: {"order"=>"descending", "action"=>"index", "controller"=>"users", "sort"=>"email"}
|
737
|
+
[4;35;1mUser Load (0.000859)[0m [0mSELECT * FROM "users" ORDER BY users.email desc[0m
|
738
|
+
Rendering template within layouts/users
|
739
|
+
Rendering users/index
|
740
|
+
Completed in 0.00385 (259 reqs/sec) | Rendering: 0.00238 (61%) | DB: 0.00182 (47%) | 200 OK [http://test.host/users?order=descending&sort=email]
|
741
|
+
[4;36;1mUser Create (0.000348)[0m [0;1mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name9', '2008-10-16 20:12:20', NULL, 9, 'email9@example.com', '2008-10-16 20:12:20')[0m
|
742
|
+
[4;35;1mUser Create (0.000116)[0m [0mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name10', '2008-10-16 20:12:20', NULL, 10, 'email10@example.com', '2008-10-16 20:12:20')[0m
|
743
|
+
[4;36;1mUser Load (0.000485)[0m [0;1mSELECT * FROM "users" [0m
|
744
|
+
|
745
|
+
|
746
|
+
Processing UsersController#index (for 0.0.0.0 at 2008-10-16 16:12:20) [GET]
|
747
|
+
Session ID:
|
748
|
+
Parameters: {"order"=>"ascending", "action"=>"index", "controller"=>"users", "sort"=>"name"}
|
749
|
+
[4;35;1mUser Load (0.000839)[0m [0mSELECT * FROM "users" ORDER BY name asc[0m
|
750
|
+
Rendering template within layouts/users
|
751
|
+
Rendering users/index
|
752
|
+
Completed in 0.00378 (264 reqs/sec) | Rendering: 0.00238 (62%) | DB: 0.00179 (47%) | 200 OK [http://test.host/users?order=ascending&sort=name]
|
753
|
+
[4;36;1mUser Create (0.000407)[0m [0;1mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name11', '2008-10-16 20:12:20', NULL, 11, 'email11@example.com', '2008-10-16 20:12:20')[0m
|
754
|
+
[4;35;1mUser Create (0.000150)[0m [0mINSERT INTO "users" ("name", "updated_at", "admin", "age", "email", "created_at") VALUES('name12', '2008-10-16 20:12:20', NULL, 12, 'email12@example.com', '2008-10-16 20:12:20')[0m
|
755
|
+
[4;36;1mUser Load (0.000521)[0m [0;1mSELECT * FROM "users" [0m
|
756
|
+
|
757
|
+
|
758
|
+
Processing UsersController#index (for 0.0.0.0 at 2008-10-16 16:12:20) [GET]
|
759
|
+
Session ID:
|
760
|
+
Parameters: {"order"=>"descending", "action"=>"index", "controller"=>"users", "sort"=>"name"}
|
761
|
+
[4;35;1mUser Load (0.000986)[0m [0mSELECT * FROM "users" ORDER BY name desc[0m
|
762
|
+
Rendering template within layouts/users
|
763
|
+
Rendering users/index
|
764
|
+
Completed in 0.00440 (227 reqs/sec) | Rendering: 0.00279 (63%) | DB: 0.00206 (46%) | 200 OK [http://test.host/users?order=descending&sort=name]
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# TODO Add this to your test_helper.rb
|
2
|
+
#require File.expand_path(File.dirname(__FILE__) + '/helper_testcase')
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class StubController < ApplicationController
|
6
|
+
def rescue_action(e) raise e end;
|
7
|
+
attr_accessor :request, :url
|
8
|
+
end
|
9
|
+
|
10
|
+
class HelperTestCase < Test::Unit::TestCase
|
11
|
+
|
12
|
+
# Add other helpers here if you need them
|
13
|
+
include ActionView::Helpers::ActiveRecordHelper
|
14
|
+
include ActionView::Helpers::TagHelper
|
15
|
+
include ActionView::Helpers::FormTagHelper
|
16
|
+
include ActionView::Helpers::FormOptionsHelper
|
17
|
+
include ActionView::Helpers::FormHelper
|
18
|
+
include ActionView::Helpers::UrlHelper
|
19
|
+
include ActionView::Helpers::AssetTagHelper
|
20
|
+
include ActionView::Helpers::PrototypeHelper
|
21
|
+
|
22
|
+
def setup
|
23
|
+
super
|
24
|
+
|
25
|
+
@request = ActionController::TestRequest.new
|
26
|
+
@controller = StubController.new
|
27
|
+
@controller.request = @request
|
28
|
+
|
29
|
+
# Fake url rewriter so we can test url_for
|
30
|
+
@controller.url = ActionController::UrlRewriter.new @request, {}
|
31
|
+
|
32
|
+
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_dummy
|
36
|
+
# do nothing - required by test/unit
|
37
|
+
end
|
38
|
+
end
|
@@ -3,17 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
|
3
3
|
require 'test_help'
|
4
4
|
require 'rubygems'
|
5
5
|
|
6
|
-
|
7
|
-
gem 'thoughtbot-quietbacktrace'
|
8
|
-
gem 'thoughtbot-shoulda'
|
9
|
-
gem 'thoughtbot-factory_girl'
|
10
|
-
gem 'redgreen'
|
11
|
-
|
12
|
-
require 'mocha'
|
13
|
-
require 'quietbacktrace'
|
14
|
-
require 'shoulda'
|
15
|
-
require 'factory_girl'
|
16
|
-
require 'redgreen'
|
6
|
+
require File.expand_path(File.dirname(__FILE__) + '/helper_testcase')
|
17
7
|
|
18
8
|
Dir[File.join(RAILS_ROOT, 'test', 'factories', '*.rb')].each do |file|
|
19
9
|
require file
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
|
3
|
+
class ApplicationHelperTest < HelperTestCase
|
4
|
+
|
5
|
+
include ApplicationHelper
|
6
|
+
|
7
|
+
context 'sortable_table_header' do
|
8
|
+
setup do
|
9
|
+
self.stubs(:params).returns({ :controller => :jobs, :action => :index, :sort => nil, :order => nil })
|
10
|
+
end
|
11
|
+
|
12
|
+
[:name, :sort].each do |param|
|
13
|
+
should "raise an error without default param #{param}" do
|
14
|
+
opts = { :name => 'name', :sort => 'sort' }
|
15
|
+
opts.delete param
|
16
|
+
assert_raise(ArgumentError) do
|
17
|
+
sortable_table_header opts
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with no params[:sort] or params[:order]' do
|
23
|
+
setup do
|
24
|
+
@html = sortable_table_header(:name => 'Title', :sort => 'title', :title => 'Sort by title')
|
25
|
+
end
|
26
|
+
|
27
|
+
should 'return a table header without a class attribute' do
|
28
|
+
assert @html.include?('<th>')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "without an :anchor" do
|
33
|
+
setup do
|
34
|
+
@html = sortable_table_header(:name => 'Title', :sort => 'title', :title => 'Sort by title')
|
35
|
+
end
|
36
|
+
|
37
|
+
should 'return a link that contains a url with no anchor' do
|
38
|
+
assert @html.match(/href="[^#]+?"/)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "with an :anchor" do
|
43
|
+
setup do
|
44
|
+
@html = sortable_table_header(:name => 'Title', :sort => 'title', :title => 'Sort by title', :anchor => 'search-results')
|
45
|
+
end
|
46
|
+
|
47
|
+
should 'return a link that contains a url with that anchor' do
|
48
|
+
assert @html.match(/href="[^"]*?#search-results"/)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2006 Geoffrey Grosenbach
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
= Helper Test Generator
|
2
|
+
|
3
|
+
Makes stubs so you can test helpers.
|
4
|
+
|
5
|
+
The helpers are placed in test/unit/helpers and will be run automatically when you run unit tests.
|
6
|
+
|
7
|
+
= Usage
|
8
|
+
|
9
|
+
Run the helper_test generator with the shortened name of the helper you want to test.
|
10
|
+
|
11
|
+
# For TaskHelper
|
12
|
+
./script/generate helper_test Task
|
13
|
+
|
14
|
+
Require the parent testcase class in your test_helper.rb
|
15
|
+
|
16
|
+
require File.expand_path(File.dirname(__FILE__) + '/helper_testcase')
|
17
|
+
|
18
|
+
The testcase includes common helpers, but you can add others if necessary.
|
19
|
+
|
20
|
+
= Examples
|
21
|
+
|
22
|
+
# Make a test for the BlogHelper
|
23
|
+
./script/generate helper_test Blog
|
24
|
+
|
25
|
+
# Make a test for Admin::UsersHelper
|
26
|
+
./script/generate helper_test Admin::Users
|
27
|
+
|
28
|
+
Sub-folders will be made, if necessary.
|
29
|
+
|
30
|
+
= Authors
|
31
|
+
|
32
|
+
* Test stub by Ryan Davis http://zenspider.com
|
33
|
+
* Generator by Geoffrey Grosenbach http://nubyonrails.com
|
data/test/rails_root/vendor/plugins/helper_test/generators/helper_test/helper_test_generator.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
class HelperTestGenerator < Rails::Generator::NamedBase
|
2
|
+
|
3
|
+
attr_reader :helper_class_name, :directory_slashes
|
4
|
+
|
5
|
+
def initialize(runtime_args, runtime_options = {})
|
6
|
+
@helper_class_name = Inflector.camelize(runtime_args.first)
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
def manifest
|
11
|
+
record do |m|
|
12
|
+
m.template 'helper_testcase.rb', 'test/helper_testcase.rb'
|
13
|
+
|
14
|
+
output_path = File.join('test/unit/helpers', "#{@helper_class_name.underscore}_helper_test.rb")
|
15
|
+
m.directory File.join(File.dirname(output_path))
|
16
|
+
|
17
|
+
# Make slashes relative to the test/unit/helpers folder
|
18
|
+
@directory_slashes = '/..' * (output_path.split('/').length - 3)
|
19
|
+
m.template 'helper_test.rb', File.join(output_path)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/test/rails_root/vendor/plugins/helper_test/generators/helper_test/templates/helper_testcase.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# TODO Add this to your test_helper.rb
|
2
|
+
#require File.expand_path(File.dirname(__FILE__) + '/helper_testcase')
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class StubController < ApplicationController
|
6
|
+
def rescue_action(e) raise e end;
|
7
|
+
attr_accessor :request, :url
|
8
|
+
end
|
9
|
+
|
10
|
+
class HelperTestCase < Test::Unit::TestCase
|
11
|
+
|
12
|
+
# Add other helpers here if you need them
|
13
|
+
include ActionView::Helpers::ActiveRecordHelper
|
14
|
+
include ActionView::Helpers::TagHelper
|
15
|
+
include ActionView::Helpers::FormTagHelper
|
16
|
+
include ActionView::Helpers::FormOptionsHelper
|
17
|
+
include ActionView::Helpers::FormHelper
|
18
|
+
include ActionView::Helpers::UrlHelper
|
19
|
+
include ActionView::Helpers::AssetTagHelper
|
20
|
+
include ActionView::Helpers::PrototypeHelper
|
21
|
+
|
22
|
+
def setup
|
23
|
+
super
|
24
|
+
|
25
|
+
@request = ActionController::TestRequest.new
|
26
|
+
@controller = StubController.new
|
27
|
+
@controller.request = @request
|
28
|
+
|
29
|
+
# Fake url rewriter so we can test url_for
|
30
|
+
@controller.url = ActionController::UrlRewriter.new @request, {}
|
31
|
+
|
32
|
+
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_dummy
|
36
|
+
# do nothing - required by test/unit
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dancroak-sortable_table
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Croak
|
@@ -26,7 +26,7 @@ extra_rdoc_files: []
|
|
26
26
|
files:
|
27
27
|
- MIT-LICENSE
|
28
28
|
- Rakefile
|
29
|
-
- README.
|
29
|
+
- README.textile
|
30
30
|
- VERSION.yml
|
31
31
|
- lib/sortable_table
|
32
32
|
- lib/sortable_table/app
|
@@ -122,16 +122,30 @@ files:
|
|
122
122
|
- test/rails_root/test/factories/user_factory.rb
|
123
123
|
- test/rails_root/test/functional
|
124
124
|
- test/rails_root/test/functional/users_controller_test.rb
|
125
|
+
- test/rails_root/test/helper_testcase.rb
|
125
126
|
- test/rails_root/test/test_helper.rb
|
127
|
+
- test/rails_root/test/unit
|
128
|
+
- test/rails_root/test/unit/helpers
|
129
|
+
- test/rails_root/test/unit/helpers/application_helper_test.rb
|
126
130
|
- test/rails_root/test/units
|
127
131
|
- test/rails_root/test/units/helpers
|
128
|
-
- test/rails_root/test/units/helpers/application_helper_test.rb
|
129
132
|
- test/rails_root/tmp
|
130
133
|
- test/rails_root/tmp/cache
|
131
134
|
- test/rails_root/tmp/pids
|
132
135
|
- test/rails_root/tmp/sessions
|
133
136
|
- test/rails_root/tmp/sockets
|
134
137
|
- test/rails_root/vendor
|
138
|
+
- test/rails_root/vendor/plugins
|
139
|
+
- test/rails_root/vendor/plugins/helper_test
|
140
|
+
- test/rails_root/vendor/plugins/helper_test/about.yml
|
141
|
+
- test/rails_root/vendor/plugins/helper_test/generators
|
142
|
+
- test/rails_root/vendor/plugins/helper_test/generators/helper_test
|
143
|
+
- test/rails_root/vendor/plugins/helper_test/generators/helper_test/helper_test_generator.rb
|
144
|
+
- test/rails_root/vendor/plugins/helper_test/generators/helper_test/templates
|
145
|
+
- test/rails_root/vendor/plugins/helper_test/generators/helper_test/templates/helper_test.rb
|
146
|
+
- test/rails_root/vendor/plugins/helper_test/generators/helper_test/templates/helper_testcase.rb
|
147
|
+
- test/rails_root/vendor/plugins/helper_test/MIT-LICENSE
|
148
|
+
- test/rails_root/vendor/plugins/helper_test/README
|
135
149
|
has_rdoc: false
|
136
150
|
homepage: http://github.com/dancroak/sortable_table
|
137
151
|
post_install_message:
|
data/README.markdown
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
Sortable Table
|
2
|
-
==============
|
3
|
-
|
4
|
-
Rails plugin to sort tables of ActiveRecord data.
|
5
|
-
|
6
|
-
Install
|
7
|
-
-------
|
8
|
-
|
9
|
-
script/plugin install git://github.com/dancroak/sortable_table.git
|
10
|
-
|
11
|
-
Conventions
|
12
|
-
-----------
|
13
|
-
|
14
|
-
params[:sort] and params[:order]
|
15
|
-
|
16
|
-
Examples
|
17
|
-
--------
|
18
|
-
|
19
|
-
Use the sortable_attributes macro to list the... sortable attributes.
|
20
|
-
|
21
|
-
Then, in your index action, pass the sort_order method to your usual
|
22
|
-
order parameter for will paginate or named scope call.
|
23
|
-
|
24
|
-
class UsersController < Admin::BaseController
|
25
|
-
|
26
|
-
sortable_attributes :name, :email
|
27
|
-
|
28
|
-
def index
|
29
|
-
@users = User.paginate :page => params[:page], :order => sort_order
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
Time-saving Shoulda macros for your tests:
|
35
|
-
|
36
|
-
class UsersControllerTest < ActionController::TestCase
|
37
|
-
|
38
|
-
context 'GET to index with sort and order params' do
|
39
|
-
setup do
|
40
|
-
5.times do |each|
|
41
|
-
Factory :user,
|
42
|
-
:name => "name #{each}",
|
43
|
-
:email => "email#{each}@example.com"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
should_sort_by :name
|
48
|
-
should_sort_by :email
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
And some sugar for your views:
|
54
|
-
|
55
|
-
%h1 Users
|
56
|
-
|
57
|
-
%table
|
58
|
-
%tr
|
59
|
-
= sortable_table_header 'Name', :sort => 'name'
|
60
|
-
= sortable_table_header 'E-mail', :sort => 'email'
|
61
|
-
|
62
|
-
- @users.each do |each|
|
63
|
-
%tr
|
64
|
-
%td= each.name
|
65
|
-
%td= each.email
|
66
|
-
|
67
|
-
Authors
|
68
|
-
-------
|
69
|
-
|
70
|
-
Dan Croak, Joe Ferris, and Boston.rb.
|
71
|
-
|
72
|
-
Copyright (c) 2008 Dan Croak, released under the MIT license
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# this needs way more tests
|
2
|
-
context 'sortable_table_header' do
|
3
|
-
setup do
|
4
|
-
self.stubs(:params).returns({ :controller => :jobs, :action => :index, :sort => nil, :order => nil })
|
5
|
-
end
|
6
|
-
|
7
|
-
[:name, :sort].each do |param|
|
8
|
-
should "raise an error without default param #{param}" do
|
9
|
-
opts = { :name => 'name', :sort => 'sort' }
|
10
|
-
opts.delete param
|
11
|
-
assert_raise(ArgumentError) do
|
12
|
-
sortable_table_header opts
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'with no params[:sort] or params[:order]' do
|
18
|
-
setup do
|
19
|
-
@html = sortable_table_header(:name => 'Title', :sort => 'title', :title => 'Sort by title')
|
20
|
-
end
|
21
|
-
|
22
|
-
should 'return a table header without a class attribute' do
|
23
|
-
assert @html.include?('<th>')
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context "without an :anchor" do
|
28
|
-
setup do
|
29
|
-
@html = sortable_table_header(:name => 'Title', :sort => 'title', :title => 'Sort by title')
|
30
|
-
end
|
31
|
-
|
32
|
-
should 'return a link that contains a url with no anchor' do
|
33
|
-
assert @html.match(/href="[^#]+?"/)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "with an :anchor" do
|
38
|
-
setup do
|
39
|
-
@html = sortable_table_header(:name => 'Title', :sort => 'title', :title => 'Sort by title', :anchor => 'search-results')
|
40
|
-
end
|
41
|
-
|
42
|
-
should 'return a link that contains a url with that anchor' do
|
43
|
-
assert @html.match(/href="[^"]*?#search-results"/)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|