link_to_action 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/denispeplin/link_to_action)
2
+ [![Build Status](https://secure.travis-ci.org/denispeplin/link_to_action.png)](http://travis-ci.org/denispeplin/link_to_action)
2
3
 
3
4
  # LinkToAction
4
5
 
@@ -26,17 +26,18 @@ module LinkToAction::Helpers
26
26
  class_default = LinkToAction.class_default
27
27
  class_action = LinkToAction.send("class_#{action}")
28
28
  end
29
- if options[:size]
30
- size_class = LinkToAction.send("size_class_#{options[:size]}")
31
- else
32
- size_class = LinkToAction.size_class_default
33
- end
34
- class_string = [class_default, class_action, size_class, options[:class]].compact.join(' ')
29
+ size = options.delete(:size) || 'default'
30
+ class_string = [ class_default, class_action, size_class(size),
31
+ options[:class] ].compact.join(' ')
35
32
  class_string unless class_string.blank?
36
33
  end
37
34
 
38
- def action_icon(action)
39
- [ LinkToAction.send("icon_#{action}"), LinkToAction.icons_size ].join(' ')
35
+ def size_class(size)
36
+ LinkToAction.send("size_class_#{size}")
37
+ end
38
+
39
+ def action_icon(action, icon, icon_size)
40
+ [ icon, icon_size ].compact.join(' ')
40
41
  end
41
42
 
42
43
  def link_to_action(action, object, options)
@@ -44,7 +45,9 @@ module LinkToAction::Helpers
44
45
  params = options.delete(:params) || {}
45
46
  params[:action] = action if [ :new, :edit ].include? action
46
47
  options[:class] = action_class(action, options)
47
- iilink_to action_icon(action), name, action_path(action, object, params),
48
+ icon = options.delete(:icon) || LinkToAction.send("icon_#{action}")
49
+ icon_size = options.delete(:icon_size) || LinkToAction.icons_size
50
+ iilink_to action_icon(action, icon, icon_size), name, action_path(action, object, params),
48
51
  options if cancan?(action, object)
49
52
  end
50
53
 
@@ -1,3 +1,3 @@
1
1
  module LinkToAction
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1,34 @@
1
+ LinkToAction.setup do |config|
2
+ # Use CanCan, default false
3
+ # config.use_cancan = false
4
+
5
+ # Add icons to links, default false
6
+ # config.use_icons = false
7
+
8
+ # Icons size, default 'large'
9
+ # config.icons_size = 'large'
10
+
11
+ # Icons for actions
12
+ # config.icon_new = 'plus'
13
+ # config.icon_edit = 'edit'
14
+ # config.icon_destroy = 'trash'
15
+ # config.icon_back = 'undo'
16
+
17
+ # Use classes, default false
18
+ # config.use_classes = false
19
+
20
+ # Classes by default are adopted to twitter-bootstrap
21
+ # config.class_default = 'btn'
22
+
23
+ # Classes for actions
24
+ # config.class_new = 'btn-primary'
25
+ # config.class_edit = nil
26
+ # config.class_destroy = 'btn-danger'
27
+ # config.class_back = nil
28
+
29
+ # Size can be set using class, by default is adopted to twitter-bootstrap
30
+ # config.size_class_default = nil
31
+ # config.size_class_large = 'btn-large'
32
+ # config.size_class_small = 'btn-small'
33
+ # config.size_class_mini = 'btn-mini'
34
+ end
data/test/helpers_test.rb CHANGED
@@ -1,15 +1,61 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class HelperTest < ActionView::TestCase
4
+ test 'link_to_new' do
5
+ assert_equal "<a href=\"/users/new\">New User</a>",
6
+ link_to_new(User)
7
+ end
8
+
9
+ test 'link_to_edit' do
10
+ assert_equal "<a href=\"/users/1/edit\">Edit User</a>", link_to_edit(@user)
11
+ end
12
+
13
+ test 'link_to_destroy' do
14
+ assert_equal "<a href=\"/users/1\" data-confirm=\"Are you sure?\" data-method=\"delete\" data-skip-pjax=\"true\" rel=\"nofollow\">Delete User</a>",
15
+ link_to_destroy(@user)
16
+ end
17
+
18
+ test 'link_to_destroy with cancan disallowed' do
19
+ swap LinkToAction, use_cancan: true do
20
+ assert_equal nil, link_to_destroy(@user)
21
+ end
22
+ end
23
+
4
24
  test 'link_to_back first time' do
5
25
  assert_equal "<a href=\"javascript:history.back()\">Back</a>",
6
26
  link_to_back
7
27
  end
8
28
 
9
- LinkToAction.use_classes
29
+ test 'link_to_back with size' do
30
+ assert_equal "<a href=\"javascript:history.back()\" class=\"btn-mini\">Back</a>",
31
+ link_to_back(size: :mini)
32
+ end
33
+
34
+ test 'link_to_back using icons' do
35
+ swap LinkToAction, use_icons: true do
36
+ assert_equal "<a href=\"javascript:history.back()\"><i class=\"icon-undo icon-large\"></i> Back</a>",
37
+ link_to_back
38
+ end
39
+ end
40
+
41
+ test 'link_to_back specifying icon' do
42
+ swap LinkToAction, use_icons: true do
43
+ assert_equal "<a href=\"javascript:history.back()\"><i class=\"icon-chevron-left icon-large\"></i> Back</a>",
44
+ link_to_back(icon: 'chevron-left')
45
+ end
46
+ end
47
+
48
+ test 'link_to_back specifying icon size' do
49
+ swap LinkToAction, use_icons: true do
50
+ assert_equal "<a href=\"javascript:history.back()\"><i class=\"icon-undo icon-small\"></i> Back</a>",
51
+ link_to_back(icon_size: :small)
52
+ end
53
+ end
54
+
10
55
  test 'link_to_back first time with classes' do
11
- LinkToAction.use_classes = true
12
- assert_equal "<a href=\"javascript:history.back()\" class=\"btn\">Back</a>",
13
- link_to_back
56
+ swap LinkToAction, use_classes: true do
57
+ assert_equal "<a href=\"javascript:history.back()\" class=\"btn\">Back</a>",
58
+ link_to_back
59
+ end
14
60
  end
15
61
  end
@@ -0,0 +1,15 @@
1
+ module MiscHelpers
2
+ # copy'n'paste from plataformatec/show_for
3
+ def swap(object, new_values)
4
+ old_values = {}
5
+ new_values.each do |key, value|
6
+ old_values[key] = object.send key
7
+ object.send :"#{key}=", value
8
+ end
9
+ yield
10
+ ensure
11
+ old_values.each do |key, value|
12
+ object.send :"#{key}=", value
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ require 'ostruct'
2
+
3
+ class User < Struct.new(:id, :name)
4
+ extend ActiveModel::Naming
5
+ end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
1
4
  # Configure Rails Environment
2
5
  ENV["RAILS_ENV"] = "test"
3
6
 
@@ -18,4 +21,28 @@ end
18
21
 
19
22
  class ActionView::TestCase
20
23
  include LinkToAction::Helpers
21
- end
24
+ include MiscHelpers
25
+
26
+ def new_user_path
27
+ '/users/new'
28
+ end
29
+
30
+ def edit_user_path(user)
31
+ # user.id == ?
32
+ "/users/#{1}/edit"
33
+ end
34
+
35
+ def user_path(user)
36
+ "/users/1"
37
+ end
38
+
39
+ def can?(object, ability)
40
+ false
41
+ end
42
+
43
+ setup :setup_new_user
44
+
45
+ def setup_new_user(options={})
46
+ @user = User.new(id: 1, name: 'username')
47
+ end
48
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: link_to_action
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-02 00:00:00.000000000 Z
12
+ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &11110280 !ruby/object:Gem::Requirement
16
+ requirement: &11166740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
21
  version: 3.2.8
22
- type: :runtime
22
+ type: :development
23
23
  prerelease: false
24
- version_requirements: *11110280
24
+ version_requirements: *11166740
25
25
  - !ruby/object:Gem::Dependency
26
- name: cancan
27
- requirement: &11108820 !ruby/object:Gem::Requirement
26
+ name: simplecov
27
+ requirement: &11164580 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *11108820
35
+ version_requirements: *11164580
36
36
  description: link_to for specific actions
37
37
  email:
38
38
  - denis.peplin@gmail.com
@@ -51,6 +51,8 @@ files:
51
51
  - LICENSE
52
52
  - Rakefile
53
53
  - README.md
54
+ - test/support/models.rb
55
+ - test/support/misc_helpers.rb
54
56
  - test/helpers_test.rb
55
57
  - test/test_helper.rb
56
58
  - test/dummy/README.rdoc
@@ -63,6 +65,7 @@ files:
63
65
  - test/dummy/config/boot.rb
64
66
  - test/dummy/config/application.rb
65
67
  - test/dummy/config/initializers/secret_token.rb
68
+ - test/dummy/config/initializers/link_to_action.rb
66
69
  - test/dummy/config/initializers/session_store.rb
67
70
  - test/dummy/config/initializers/backtrace_silencers.rb
68
71
  - test/dummy/config/initializers/inflections.rb
@@ -97,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
97
100
  version: '0'
98
101
  segments:
99
102
  - 0
100
- hash: -3319132714830636292
103
+ hash: 2755617306880632693
101
104
  required_rubygems_version: !ruby/object:Gem::Requirement
102
105
  none: false
103
106
  requirements:
@@ -106,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
109
  version: '0'
107
110
  segments:
108
111
  - 0
109
- hash: -3319132714830636292
112
+ hash: 2755617306880632693
110
113
  requirements: []
111
114
  rubyforge_project:
112
115
  rubygems_version: 1.8.11
@@ -114,6 +117,8 @@ signing_key:
114
117
  specification_version: 3
115
118
  summary: Links to actions
116
119
  test_files:
120
+ - test/support/models.rb
121
+ - test/support/misc_helpers.rb
117
122
  - test/helpers_test.rb
118
123
  - test/test_helper.rb
119
124
  - test/dummy/README.rdoc
@@ -126,6 +131,7 @@ test_files:
126
131
  - test/dummy/config/boot.rb
127
132
  - test/dummy/config/application.rb
128
133
  - test/dummy/config/initializers/secret_token.rb
134
+ - test/dummy/config/initializers/link_to_action.rb
129
135
  - test/dummy/config/initializers/session_store.rb
130
136
  - test/dummy/config/initializers/backtrace_silencers.rb
131
137
  - test/dummy/config/initializers/inflections.rb