link_to_action 0.1.1 → 0.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/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