simple_show 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bda67008a5f7214b1c1ebcfcce7bcc358ff62920
4
+ data.tar.gz: 60b9f8ece19da67fea73d5d891f247baf038dbc8
5
+ SHA512:
6
+ metadata.gz: 41ceb31d5349c3226378646a39aeb827de32c98aa88bda2ab27bc81c111b9f07a7d37caa1602fd66e112468e3e800647c750fac6e2d5ae80f917d0e12816df7c
7
+ data.tar.gz: c495af096bf0c3c4a98088cda34fed2fe3ca3292df0a0ed5e369dbcf787d718105cc779ba2adafaa8de82dba9e0aed9dbe3d43b99e11ea83bec05f6518d3bc00
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ *.swp
data/Gemfile CHANGED
@@ -1,10 +1,11 @@
1
- source "http://rubygems.org"
1
+ source 'http://rubygems.org'
2
2
 
3
3
  group :test do
4
- gem 'rake', '0.8.7'
4
+ gem 'rake', '10.4.2'
5
5
  gem 'rails', '3.1.3'
6
6
  gem 'sqlite3'
7
7
  gem 'nokogiri'
8
+ gem 'test-unit'
8
9
  end
9
10
 
10
11
  # Specify your gem's dependencies in simple_show.gemspec
@@ -39,10 +39,15 @@ In our show action we can then do this:
39
39
  <%= s.show :cash_in_wallet, :to_currency => true %>
40
40
  <%= s.show :height, :if => :tall %>
41
41
  <%= s.show :weight, :unless => :sensitive %>
42
+ <%= s.show :title, :unless_attr => :nil? %>
43
+ <%= s.show_collection :friends do |friend| %>
44
+ <%= friend.name %> - <%= friend.age %>
45
+ <% end %>
42
46
  <% end %>
43
47
 
44
48
  Which would generate (using the defaults) output like this, assuming that
45
- @johndor.tall returns false and @johndoe.sensitive returns true:
49
+ @johndoe.tall returns false, @johndoe.sensitive returns true, and
50
+ @johndoe.title is nil:
46
51
 
47
52
  <div class="simple_show person" id="person_123">
48
53
  <div class="show">
@@ -73,6 +78,13 @@ Which would generate (using the defaults) output like this, assuming that
73
78
  <label>Cash in wallet:</label>
74
79
  <span class="value">$123.45</span>
75
80
  </div>
81
+ <div class="show">
82
+ <label>Friends:</label>
83
+ <ul class="show_collection">
84
+ <li class="show_collection_item">Jim - 32</li>
85
+ <li class="show_collection_item">Tina - 23</li>
86
+ </ul>
87
+ </div>
76
88
  <br clear="all">
77
89
  </div>
78
90
 
@@ -84,7 +96,6 @@ if you don't want that BR tag then set SimpleShow.clear_on_close to false.
84
96
 
85
97
  == TODO:
86
98
 
87
- - Add support for associations.
88
99
  - Add options for booleans.
89
100
 
90
101
  == License:
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ Bundler::GemHelper.install_tasks
3
3
 
4
4
  require 'rake/testtask'
5
5
  Rake::TestTask.new(:test) do |test|
6
- test.libs << 'lib'
6
+ test.libs << 'lib'
7
7
  test.libs << 'test'
8
8
  test.pattern = 'test/**/test_*.rb'
9
9
  test.verbose = true
@@ -1,13 +1,12 @@
1
1
  module SimpleShow
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
- desc "Copy SimpleShow configuration"
4
+ desc 'Copy SimpleShow configuration'
5
5
  source_root File.expand_path('../templates', __FILE__)
6
6
 
7
7
  def copy_config
8
8
  directory 'config'
9
9
  end
10
-
11
10
  end
12
11
  end
13
12
  end
@@ -3,7 +3,6 @@ require 'simple_show/action_view_extensions/form_helper'
3
3
  require 'simple_show/base'
4
4
 
5
5
  module SimpleShow
6
-
7
6
  mattr_accessor :show_class
8
7
  @@show_class = :simple_show
9
8
 
@@ -37,18 +36,30 @@ module SimpleShow
37
36
  mattr_accessor :value_suffix
38
37
  @@value_suffix = nil
39
38
 
39
+ mattr_accessor :collection_tag
40
+ @@collection_tag = :ul
41
+
42
+ mattr_accessor :collection_class
43
+ @@collection_class = :show_collection
44
+
45
+ mattr_accessor :collection_item_tag
46
+ @@collection_item_tag = :li
47
+
48
+ mattr_accessor :collection_item_class
49
+ @@collection_item_class = :show_collection_item
50
+
40
51
  mattr_accessor :clear_on_close
41
52
  @@clear_on_close = true
42
53
 
43
54
  mattr_accessor :helpers
44
55
  @@helpers = {
45
- :to_currency => :number_to_currency,
46
- :to_human => :number_to_human,
47
- :to_human_size => :number_to_human_size,
48
- :to_percentage => :number_to_percentage,
49
- :to_phone => :number_to_phone,
50
- :with_delimiter => :number_with_delimiter,
51
- :with_precision => :number_with_precision
56
+ to_currency: :number_to_currency,
57
+ to_human: :number_to_human,
58
+ to_human_size: :number_to_human_size,
59
+ to_percentage: :number_to_percentage,
60
+ to_phone: :number_to_phone,
61
+ with_delimiter: :number_with_delimiter,
62
+ with_precision: :number_with_precision
52
63
  }
53
64
 
54
65
  # Default way to setup SimpleShow. Run rails generate simple_show:install
@@ -56,5 +67,4 @@ module SimpleShow
56
67
  def self.setup
57
68
  yield self
58
69
  end
59
-
60
70
  end
@@ -2,20 +2,19 @@ module SimpleShow
2
2
  module ActionViewExtensions
3
3
  module FormHelper
4
4
  def simple_show_for(record, options = {}, &block)
5
- raise ArgumentError, "Missing block" unless block_given?
5
+ fail ArgumentError, 'Missing block' unless block_given?
6
6
 
7
7
  options[:html] ||= {}
8
8
  options[:html][:id] ||= dom_id(record)
9
9
  options[:html][:class] = "#{SimpleShow.show_class} #{dom_class(record)} #{options[:html][:class]}".strip
10
10
 
11
11
  output = capture(SimpleShow::Base.new(self, record, options), &block)
12
- output.concat content_tag(:div, '', :class => 'clear') if SimpleShow.clear_on_close
12
+ output.concat content_tag(:div, '', class: 'clear') if SimpleShow.clear_on_close
13
13
 
14
- content_tag(:div, output, :id => options[:html][:id], :class => options[:html][:class])
14
+ content_tag(:div, output, id: options[:html][:id], class: options[:html][:class])
15
15
  end
16
16
  end
17
17
  end
18
18
  end
19
19
 
20
20
  ActionView::Base.send :include, SimpleShow::ActionViewExtensions::FormHelper
21
-
@@ -7,42 +7,43 @@ module SimpleShow
7
7
  end
8
8
 
9
9
  def show(attr, options = {}, &block)
10
- if options.key? :if
11
- case options[:if]
12
- when Symbol
13
- options[:if] = @record.send(options[:if])
14
- when Proc
15
- options[:if] = options[:if].call
16
- end
17
- return nil if options[:if] == false
18
- end
19
- if options.key? :unless
20
- case options[:unless]
21
- when Symbol
22
- options[:unless] = @record.send(options[:unless])
23
- when Proc
24
- options[:unless] = options[:unless].call
25
- end
26
- return nil unless options[:unless] == false
27
- end
10
+ return nil if skip?(attr, options)
28
11
 
29
12
  output = label(attr, options, &block)
30
13
  output += value(attr, options, &block)
31
14
 
32
- if SimpleShow.wrapper_tag.nil?
33
- output
34
- else
35
- @binding.content_tag(SimpleShow.wrapper_tag, output, :class => SimpleShow.wrapper_class)
15
+ wrap_output(SimpleShow.wrapper_tag, SimpleShow.wrapper_class, output)
16
+ end
17
+
18
+ def show_collection(attr, options = {}, &block)
19
+ return nil if skip?(attr, options)
20
+
21
+ output = label(attr, options, &block)
22
+
23
+ value = wrap_output(SimpleShow.collection_tag, SimpleShow.collection_class) do
24
+ @record.send(attr).map do |attr_item|
25
+ wrap_output(SimpleShow.collection_item_tag, SimpleShow.collection_item_class) do
26
+ block_given? ? @binding.capture(attr_item, &block) : attr_item
27
+ end
28
+ end.join.html_safe
36
29
  end
30
+
31
+ output += value
32
+
33
+ wrap_output(SimpleShow.wrapper_tag, SimpleShow.wrapper_class, output)
37
34
  end
38
35
 
39
36
  def label(attr, options = {}, &block)
40
- @binding.content_tag(SimpleShow.label_tag, :class => SimpleShow.label_class) do
41
- [SimpleShow.label_prefix, options[:label] || @record.class.human_attribute_name(attr), SimpleShow.label_suffix].compact.join
42
- end
37
+ return nil if skip?(attr, options)
38
+
39
+ output = [SimpleShow.label_prefix, options[:label] || @record.class.human_attribute_name(attr), SimpleShow.label_suffix].compact.join
40
+
41
+ wrap_output(SimpleShow.label_tag, SimpleShow.label_class, output)
43
42
  end
44
43
 
45
44
  def value(attr, options = {}, &block)
45
+ return nil if skip?(attr, options)
46
+
46
47
  if block_given?
47
48
  value = yield(@record)
48
49
  else
@@ -63,15 +64,66 @@ module SimpleShow
63
64
  end
64
65
  end
65
66
 
67
+ output = [SimpleShow.value_prefix, value, SimpleShow.value_suffix].compact.join.html_safe
66
68
  field_type = @record.class.columns_hash[attr.to_s].instance_variable_get(:@type)
67
- @binding.content_tag(SimpleShow.value_tag, :class => [SimpleShow.value_class, field_type].compact) do
68
- [SimpleShow.value_prefix, value, SimpleShow.value_suffix].compact.join.html_safe
69
- end
69
+ html_class = [SimpleShow.value_class, field_type].compact
70
+
71
+ wrap_output(SimpleShow.value_tag, html_class, output)
70
72
  end
71
73
 
72
74
  def object
73
75
  @record
74
76
  end
75
77
 
78
+ private
79
+
80
+ def wrap_output(tag, html_class, output=nil, &block)
81
+ output = yield if block_given?
82
+ if tag.nil?
83
+ output
84
+ else
85
+ @binding.content_tag(tag, output, :class => html_class)
86
+ end
87
+ end
88
+
89
+ def skip?(attr, options)
90
+ if options.key? :if
91
+ case options[:if]
92
+ when Symbol
93
+ options[:if] = @record.send(options[:if])
94
+ when Proc
95
+ options[:if] = options[:if].call
96
+ end
97
+ return true if options[:if] == false
98
+ end
99
+
100
+ if options.key? :unless
101
+ case options[:unless]
102
+ when Symbol
103
+ options[:unless] = @record.send(options[:unless])
104
+ when Proc
105
+ options[:unless] = options[:unless].call
106
+ end
107
+ return true unless options[:unless] == false
108
+ end
109
+
110
+ if options.key? :if_attr
111
+ case options[:if_attr]
112
+ when Symbol
113
+ options[:if_attr] = @record.send(attr).send(options[:if_attr])
114
+ end
115
+ return true if options[:if_attr] == false
116
+ end
117
+
118
+ if options.key? :unless_attr
119
+ case options[:unless_attr]
120
+ when Symbol
121
+ options[:unless_attr] = @record.send(attr).send(options[:unless_attr])
122
+ end
123
+ return true unless options[:unless_attr] == false
124
+ end
125
+
126
+ return false
127
+ end
76
128
  end
77
129
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleShow
2
- VERSION = "0.1.1"
2
+ VERSION = '1.0.0'
3
3
  end
@@ -1,23 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "simple_show/version"
2
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
+ require 'simple_show/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "simple_show"
6
+ s.name = 'simple_show'
7
7
  s.version = SimpleShow::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["Philip Hallstrom"]
10
- s.email = ["philip@pjkh.com"]
11
- s.homepage = ""
12
- s.summary = %q{SimpleShow is to #show what SimpleForm is to #edit}
13
- s.description = %q{SimpleShow is to #show what SimpleForm is to #edit}
14
- s.license = "MIT"
9
+ s.authors = ['Philip Hallstrom']
10
+ s.email = ['philip@pjkh.com']
11
+ s.homepage = ''
12
+ s.summary = 'SimpleShow is to #show what SimpleForm is to #edit'
13
+ s.description = 'SimpleShow is to #show what SimpleForm is to #edit'
14
+ s.license = 'MIT'
15
15
 
16
- s.rubyforge_project = "simple_show"
16
+ s.rubyforge_project = 'simple_show'
17
17
 
18
18
  s.files = `git ls-files`.split("\n")
19
19
  s.files = s.files.delete_if { |path| path =~ /\.rvmrc/ }
20
20
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
- s.require_paths = ["lib"]
21
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
22
+ s.require_paths = ['lib']
23
23
  end
@@ -0,0 +1,128 @@
1
+ def test_skip(method, field1, field2, label1, label2)
2
+ first_label = field1.to_s.titleize
3
+
4
+ test ':if => true/false' do
5
+ doc = Nokogiri::HTML.fragment(
6
+ simple_show_for(@philip) do |s|
7
+ o = ActiveSupport::SafeBuffer.new
8
+ o += s.send(method, field1, if: true)
9
+ o += s.send(method, field2, if: false)
10
+ o
11
+ end
12
+ )
13
+ assert_equal [label1], doc.css('label').map(&:text)
14
+ end
15
+
16
+ test ':if => :record_method' do
17
+ def @philip.method_returning_true
18
+ true
19
+ end
20
+ def @philip.method_returning_false
21
+ false
22
+ end
23
+ doc = Nokogiri::HTML.fragment(
24
+ simple_show_for(@philip) do |s|
25
+ o = ActiveSupport::SafeBuffer.new
26
+ o += s.send(method, field1, if: :method_returning_true)
27
+ o += s.send(method, field2, if: :method_returning_false)
28
+ o
29
+ end
30
+ )
31
+ assert_equal [label1], doc.css('label').map(&:text)
32
+ end
33
+
34
+ test ':if => {lambda}' do
35
+ doc = Nokogiri::HTML.fragment(
36
+ simple_show_for(@philip) do |s|
37
+ o = ActiveSupport::SafeBuffer.new
38
+ o += s.send(method, field1, if: -> { true })
39
+ o += s.send(method, field2, if: -> { false })
40
+ o
41
+ end
42
+ )
43
+ assert_equal [label1], doc.css('label').map(&:text)
44
+ end
45
+
46
+ test ':unless => true/false' do
47
+ doc = Nokogiri::HTML.fragment(
48
+ simple_show_for(@philip) do |s|
49
+ o = ActiveSupport::SafeBuffer.new
50
+ o += s.send(method, field1, unless: true)
51
+ o += s.send(method, field2, unless: false)
52
+ o
53
+ end
54
+ )
55
+ assert_equal [label2], doc.css('label').map(&:text)
56
+ end
57
+
58
+ test ':unless => :record_method' do
59
+ def @philip.method_returning_true
60
+ true
61
+ end
62
+ def @philip.method_returning_false
63
+ false
64
+ end
65
+ doc = Nokogiri::HTML.fragment(
66
+ simple_show_for(@philip) do |s|
67
+ o = ActiveSupport::SafeBuffer.new
68
+ o += s.send(method, field1, unless: :method_returning_true)
69
+ o += s.send(method, field2, unless: :method_returning_false)
70
+ o
71
+ end
72
+ )
73
+ assert_equal [label2], doc.css('label').map(&:text)
74
+ end
75
+
76
+ test ':unless => {lambda}' do
77
+ doc = Nokogiri::HTML.fragment(
78
+ simple_show_for(@philip) do |s|
79
+ o = ActiveSupport::SafeBuffer.new
80
+ o += s.send(method, field1, unless: -> { true })
81
+ o += s.send(method, field2, unless: -> { false })
82
+ o
83
+ end
84
+ )
85
+ assert_equal [label2], doc.css('label').map(&:text)
86
+ end
87
+
88
+ test ':if_attr => :record_method' do
89
+ field1_attr = @philip.send(field1)
90
+ def field1_attr.method_returning_true
91
+ true
92
+ end
93
+ field2_attr = @philip.send(field2)
94
+ def field2_attr.method_returning_false
95
+ false
96
+ end
97
+ doc = Nokogiri::HTML.fragment(
98
+ simple_show_for(@philip) do |s|
99
+ o = ActiveSupport::SafeBuffer.new
100
+ o += s.send(method, field1, if_attr: :method_returning_true)
101
+ o += s.send(method, field2, if_attr: :method_returning_false)
102
+ o
103
+ end
104
+ )
105
+ assert_equal [label1], doc.css('label').map(&:text)
106
+ end
107
+
108
+ test ':unless_attr => :record_method' do
109
+ field1_attr = @philip.send(field1)
110
+ def field1_attr.method_returning_true
111
+ true
112
+ end
113
+ field2_attr = @philip.send(field2)
114
+ def field2_attr.method_returning_false
115
+ false
116
+ end
117
+ doc = Nokogiri::HTML.fragment(
118
+ simple_show_for(@philip) do |s|
119
+ o = ActiveSupport::SafeBuffer.new
120
+ o += s.send(method, field1, unless_attr: :method_returning_true)
121
+ o += s.send(method, field2, unless_attr: :method_returning_false)
122
+ o
123
+ end
124
+ )
125
+ assert_equal [label2], doc.css('label').map(&:text)
126
+ end
127
+ end
128
+
@@ -16,17 +16,32 @@ require 'simple_show'
16
16
 
17
17
  ################################################################################
18
18
 
19
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
19
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
20
20
  ActiveRecord::Migration.verbose = false
21
21
 
22
- ActiveRecord::Schema.define(:version => 1) do
22
+ ActiveRecord::Schema.define(version: 1) do
23
23
  create_table :golfers do |t|
24
24
  t.column :name, :string
25
25
  t.column :phone, :string
26
26
  t.column :email, :string
27
27
  t.column :born_on, :date
28
28
  t.column :is_left_handed, :boolean
29
- t.column :handicap, :decimal, :scale => 3, :precision => 1
29
+ t.column :handicap, :decimal, scale: 3, precision: 1
30
+ t.timestamps
31
+ end
32
+
33
+ create_table :rounds do |t|
34
+ t.references :golfer
35
+
36
+ t.column :name, :string
37
+ t.column :score, :integer
38
+ t.timestamps
39
+ end
40
+
41
+ create_table :clubs do |t|
42
+ t.references :golfer
43
+
44
+ t.column :name, :string
30
45
  t.timestamps
31
46
  end
32
47
  end
@@ -38,6 +53,24 @@ end
38
53
  ################################################################################
39
54
 
40
55
  class Golfer < ActiveRecord::Base
56
+ has_many :clubs
57
+ has_many :rounds
58
+ end
59
+
60
+ class Round < ActiveRecord::Base
61
+ belongs_to :golfer
62
+
63
+ def to_s
64
+ name
65
+ end
66
+ end
67
+
68
+ class Club < ActiveRecord::Base
69
+ belongs_to :golfer
70
+
71
+ def to_s
72
+ name
73
+ end
41
74
  end
42
75
 
43
76
  ################################################################################
@@ -46,14 +79,13 @@ module ActionView
46
79
  module Helpers
47
80
  module TagHelper
48
81
  def piglatin(str)
49
- str[1..-1] + str[0,1] + 'ay'
82
+ str[1..-1] + str[0, 1] + 'ay'
50
83
  end
51
84
  end
52
85
  end
53
86
  end
54
-
55
- ################################################################################
56
87
 
88
+ ################################################################################
57
89
 
58
90
  class SimpleShowTestCase < ActiveSupport::TestCase
59
91
  include SimpleShow::ActionViewExtensions::FormHelper
@@ -65,13 +97,22 @@ class SimpleShowTestCase < ActiveSupport::TestCase
65
97
 
66
98
  def setup
67
99
  @philip = Golfer.create!(
68
- :name => 'Philip Hallstrom',
69
- :phone => '3604801209',
70
- :email => 'philip@pjkh.com',
71
- :born_on => Date.civil(1974, 5, 24),
72
- :is_left_handed => true,
73
- :handicap => 6.5
100
+ name: 'Philip Hallstrom',
101
+ phone: '3604801209',
102
+ email: 'philip@pjkh.com',
103
+ born_on: Date.civil(1974, 5, 24),
104
+ is_left_handed: true,
105
+ handicap: 6.5
106
+ )
107
+ @round1 = Round.create!(
108
+ name: 'Round 1',
109
+ score: 72,
110
+ golfer: @philip
111
+ )
112
+ @round2 = Round.create!(
113
+ name: 'Round 2',
114
+ score: 68,
115
+ golfer: @philip
74
116
  )
75
117
  end
76
118
  end
77
-
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class SimpleShowTest < SimpleShowTestCase
4
-
5
4
  test 'setup block yields self' do
6
5
  SimpleShow.setup do |config|
7
6
  assert_equal SimpleShow, config
@@ -9,18 +8,21 @@ class SimpleShowTest < SimpleShowTestCase
9
8
  end
10
9
 
11
10
  test 'default configuration' do
12
- assert_equal :simple_show , SimpleShow.show_class
13
- assert_equal :div , SimpleShow.wrapper_tag
14
- assert_equal :show , SimpleShow.wrapper_class
15
- assert_equal :label , SimpleShow.label_tag
16
- assert_equal nil , SimpleShow.label_class
17
- assert_equal nil , SimpleShow.label_prefix
18
- assert_equal ':' , SimpleShow.label_suffix
19
- assert_equal :span , SimpleShow.value_tag
20
- assert_equal :value , SimpleShow.value_class
21
- assert_equal nil , SimpleShow.value_prefix
22
- assert_equal nil , SimpleShow.value_suffix
23
- assert_equal true , SimpleShow.clear_on_close
11
+ assert_equal :simple_show, SimpleShow.show_class
12
+ assert_equal :div, SimpleShow.wrapper_tag
13
+ assert_equal :show, SimpleShow.wrapper_class
14
+ assert_equal :label, SimpleShow.label_tag
15
+ assert_equal nil, SimpleShow.label_class
16
+ assert_equal nil, SimpleShow.label_prefix
17
+ assert_equal ':', SimpleShow.label_suffix
18
+ assert_equal :span, SimpleShow.value_tag
19
+ assert_equal :value, SimpleShow.value_class
20
+ assert_equal nil, SimpleShow.value_prefix
21
+ assert_equal nil, SimpleShow.value_suffix
22
+ assert_equal :ul, SimpleShow.collection_tag
23
+ assert_equal :show_collection, SimpleShow.collection_class
24
+ assert_equal :li, SimpleShow.collection_item_tag
25
+ assert_equal :show_collection_item, SimpleShow.collection_item_class
26
+ assert_equal true, SimpleShow.clear_on_close
24
27
  end
25
-
26
28
  end
@@ -1,40 +1,38 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class SimpleShowForTest < SimpleShowTestCase
4
-
5
4
  test 'simple_show_for raises error without a block' do
6
5
  assert_raise ArgumentError do
7
- simple_show_for
6
+ simple_show_for
8
7
  end
9
8
  end
10
9
 
11
10
  test 'html wrapper includes the correct id and class' do
12
- doc = Nokogiri::HTML.fragment(simple_show_for(@philip) do |s|
11
+ doc = Nokogiri::HTML.fragment(simple_show_for(@philip) do |_s|
13
12
  ''
14
13
  end)
15
- assert_equal %w[simple_show golfer], doc.at('div').attr('class').split(/\s+/)
14
+ assert_equal %w(simple_show golfer), doc.at('div').attr('class').split(/\s+/)
16
15
  assert_equal "golfer_#{@philip.id}", doc.at('div').attr('id')
17
16
  end
18
17
 
19
18
  test 'last tag is a BR that clears all when enabled' do
20
- clear_on_close = SimpleShow::clear_on_close
21
- SimpleShow::clear_on_close = true
22
- doc = Nokogiri::HTML.fragment(simple_show_for(@philip) do |s|
19
+ clear_on_close = SimpleShow.clear_on_close
20
+ SimpleShow.clear_on_close = true
21
+ doc = Nokogiri::HTML.fragment(simple_show_for(@philip) do |_s|
23
22
  ''
24
23
  end)
25
- SimpleShow::clear_on_close = clear_on_close
24
+ SimpleShow.clear_on_close = clear_on_close
26
25
  assert_equal 'div', doc.at('div').elements.last.name
27
26
  assert_equal 'clear', doc.at('div').elements.last.attr('class')
28
27
  end
29
28
 
30
29
  test 'last tag is not a div/clear when disabled' do
31
- clear_on_close = SimpleShow::clear_on_close
32
- SimpleShow::clear_on_close = false
33
- doc = Nokogiri::HTML.fragment(simple_show_for(@philip) do |s|
30
+ clear_on_close = SimpleShow.clear_on_close
31
+ SimpleShow.clear_on_close = false
32
+ doc = Nokogiri::HTML.fragment(simple_show_for(@philip) do |_s|
34
33
  ''
35
34
  end)
36
35
  assert_not_equal 'clear', doc.at('div').elements.last.try(:attr, 'class')
37
- SimpleShow::clear_on_close = clear_on_close
36
+ SimpleShow.clear_on_close = clear_on_close
38
37
  end
39
-
40
38
  end
@@ -1,18 +1,16 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class SimpleShowLabelTest < SimpleShowTestCase
4
-
5
4
  test 'labels and label overrides' do
6
5
  doc = Nokogiri::HTML.fragment(
7
- simple_show_for(@philip) do |s|
6
+ simple_show_for(@philip) do |s|
8
7
  o = ActiveSupport::SafeBuffer.new
9
8
  o += s.show :name
10
- o += s.show :phone, :label => 'Cell Phone'
9
+ o += s.show :phone, label: 'Cell Phone'
11
10
  o
12
11
  end
13
12
  )
14
13
  assert_equal 'Name:', doc.css('label').first.text
15
14
  assert_equal 'Cell Phone:', doc.css('label').last.text
16
15
  end
17
-
18
16
  end
@@ -1,83 +1,7 @@
1
1
  require 'test_helper'
2
+ require 'skip_helper'
2
3
 
3
4
  class SimpleShowShowTest < SimpleShowTestCase
4
-
5
- test ':if => true/false' do
6
- doc = Nokogiri::HTML.fragment(
7
- simple_show_for(@philip) do |s|
8
- o = ActiveSupport::SafeBuffer.new
9
- o += s.show :name, :if => true
10
- o += s.show :phone, :if => false
11
- o
12
- end
13
- )
14
- assert_equal ['Name:'], doc.css('label').map(&:text)
15
- end
16
-
17
- test ':if => :record_method' do
18
- def @philip.method_returning_true; true; end
19
- def @philip.method_returning_false; false; end
20
- doc = Nokogiri::HTML.fragment(
21
- simple_show_for(@philip) do |s|
22
- o = ActiveSupport::SafeBuffer.new
23
- o += s.show :name, :if => :method_returning_true
24
- o += s.show :phone, :if => :method_returning_false
25
- o
26
- end
27
- )
28
- assert_equal ['Name:'], doc.css('label').map(&:text)
29
- end
30
-
31
- test ':if => {lambda}' do
32
- doc = Nokogiri::HTML.fragment(
33
- simple_show_for(@philip) do |s|
34
- o = ActiveSupport::SafeBuffer.new
35
- o += s.show :name, :if => lambda { true }
36
- o += s.show :phone, :if => lambda { false }
37
- o
38
- end
39
- )
40
- assert_equal ['Name:'], doc.css('label').map(&:text)
41
- end
42
-
43
- test ':unless => true/false' do
44
- doc = Nokogiri::HTML.fragment(
45
- simple_show_for(@philip) do |s|
46
- o = ActiveSupport::SafeBuffer.new
47
- o += s.show :name, :unless => true
48
- o += s.show :phone, :unless => false
49
- o
50
- end
51
- )
52
- assert_equal ['Phone:'], doc.css('label').map(&:text)
53
- end
54
-
55
- test ':unless => :record_method' do
56
- def @philip.method_returning_true; true; end
57
- def @philip.method_returning_false; false; end
58
- doc = Nokogiri::HTML.fragment(
59
- simple_show_for(@philip) do |s|
60
- o = ActiveSupport::SafeBuffer.new
61
- o += s.show :name, :unless => :method_returning_true
62
- o += s.show :phone, :unless => :method_returning_false
63
- o
64
- end
65
- )
66
- assert_equal ['Phone:'], doc.css('label').map(&:text)
67
- end
68
-
69
- test ':unless => {lambda}' do
70
- doc = Nokogiri::HTML.fragment(
71
- simple_show_for(@philip) do |s|
72
- o = ActiveSupport::SafeBuffer.new
73
- o += s.show :name, :unless => lambda { true }
74
- o += s.show :phone, :unless => lambda { false }
75
- o
76
- end
77
- )
78
- assert_equal ['Phone:'], doc.css('label').map(&:text)
79
- end
80
-
81
-
82
-
5
+ test_skip(:show, :name, :phone, 'Name:', 'Phone:')
83
6
  end
7
+
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+ require 'skip_helper'
3
+
4
+ class SimpleShowShowCollectionTest < SimpleShowTestCase
5
+ test_skip(:show_collection, :rounds, :clubs, 'Rounds:', 'Clubs:')
6
+
7
+ test 'default display works' do
8
+ doc = Nokogiri::HTML.fragment(
9
+ simple_show_for(@philip) do |s|
10
+ o = ActiveSupport::SafeBuffer.new
11
+ o += s.show :name
12
+ o += s.show_collection :rounds
13
+ o
14
+ end
15
+ )
16
+ assert_equal 'Rounds:', doc.css('label').last.text
17
+ assert_equal [@round1, @round2].map(&:to_s).sort, doc.css('.show_collection_item').map(&:text).sort
18
+ end
19
+
20
+ test 'block display works' do
21
+ doc = Nokogiri::HTML.fragment(
22
+ simple_show_for(@philip) do |s|
23
+ o = ActiveSupport::SafeBuffer.new
24
+ o += s.show :name
25
+ o += s.show_collection :rounds do |round|
26
+ nested_o = ActiveSupport::SafeBuffer.new
27
+ nested_o += "#{round} - #{round.score}"
28
+ nested_o
29
+ end
30
+ o
31
+ end
32
+ )
33
+ assert_equal 'Rounds:', doc.css('label').last.text
34
+ assert_equal [@round1, @round2].map{|r| "#{r} - #{r.score}" }.sort, doc.css('.show_collection_item').map(&:text).sort
35
+ end
36
+ end
@@ -1,31 +1,31 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class SimpleShowValueTest < SimpleShowTestCase
4
-
5
4
  def setup
6
5
  super
7
6
  SimpleShow.setup do |config|
8
7
  config.helpers[:to_piglatin] = :piglatin
9
8
  end
10
9
  @doc = Nokogiri::HTML.fragment(
11
- simple_show_for(@philip) do |s|
10
+ simple_show_for(@philip) do |s|
12
11
  o = ActiveSupport::SafeBuffer.new
13
12
  o += s.show :name
14
- o += s.show(:email) {|o| o.email.upcase }
15
- o += s.show :phone, :value => '867-5309'
16
- o += s.show :born_on, :format => '%B %d'
17
- o += s.show :born_on, :format => :mmddyy
18
- o += s.show(:html) {|o| '<b>html</b>' }
19
- o += s.show :handicap, :format => '%.3f'
20
- o += s.show :name, :format => '%20s'
21
- o += s.show :to_currency, :value => '12345.67', :to_currency => true
22
- o += s.show :with_delimeter, :value => '12345.67', :with_delimiter => true
23
- o += s.show :with_delimeter, :value => '12345.67', :with_delimiter => {:delimiter => ' '}
24
- o += s.show :custom_helper, :value => 'piglatin', :to_piglatin => true
13
+ o += s.show(:email) { |o| o.email.upcase }
14
+ o += s.show :phone, value: '867-5309'
15
+ o += s.show :born_on, format: '%B %d'
16
+ o += s.show :born_on, format: :mmddyy
17
+ o += s.show(:html) { |_o| '<b>html</b>' }
18
+ o += s.show :handicap, format: '%.3f'
19
+ o += s.show :name, format: '%20s'
20
+ o += s.show :to_currency, value: '12345.67', to_currency: true
21
+ o += s.show :with_delimeter, value: '12345.67', with_delimiter: true
22
+ o += s.show :with_delimeter, value: '12345.67', with_delimiter: { delimiter: ' ' }
23
+ o += s.show :custom_helper, value: 'piglatin', to_piglatin: true
25
24
  o
26
25
  end
27
26
  )
28
27
  end
28
+
29
29
  test 'css class for data types' do
30
30
  assert @doc.css('span.value')[0].attr('class').split(/\s+/).include?('string') # :name
31
31
  assert @doc.css('span.value')[6].attr('class').split(/\s+/).include?('decimal') # :handicap
@@ -64,5 +64,4 @@ class SimpleShowValueTest < SimpleShowTestCase
64
64
  test 'custom helpers' do
65
65
  assert_equal 'iglatinpay', @doc.css('span.value')[11].text
66
66
  end
67
-
68
67
  end
metadata CHANGED
@@ -1,34 +1,23 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: simple_show
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Philip Hallstrom
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2013-09-30 00:00:00 Z
11
+ date: 2015-05-04 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
- description: "SimpleShow is to #show what SimpleForm is to #edit"
22
- email:
13
+ description: 'SimpleShow is to #show what SimpleForm is to #edit'
14
+ email:
23
15
  - philip@pjkh.com
24
16
  executables: []
25
-
26
17
  extensions: []
27
-
28
18
  extra_rdoc_files: []
29
-
30
- files:
31
- - .gitignore
19
+ files:
20
+ - ".gitignore"
32
21
  - Gemfile
33
22
  - README.rdoc
34
23
  - Rakefile
@@ -40,49 +29,44 @@ files:
40
29
  - lib/simple_show/base.rb
41
30
  - lib/simple_show/version.rb
42
31
  - simple_show.gemspec
32
+ - test/skip_helper.rb
43
33
  - test/test_helper.rb
44
34
  - test/test_simple_show.rb
45
35
  - test/test_simple_show_for.rb
46
36
  - test/test_simple_show_label.rb
47
37
  - test/test_simple_show_show.rb
38
+ - test/test_simple_show_show_collection.rb
48
39
  - test/test_simple_show_value.rb
49
- homepage: ""
50
- licenses:
40
+ homepage: ''
41
+ licenses:
51
42
  - MIT
43
+ metadata: {}
52
44
  post_install_message:
53
45
  rdoc_options: []
54
-
55
- require_paths:
46
+ require_paths:
56
47
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
60
50
  - - ">="
61
- - !ruby/object:Gem::Version
62
- hash: 3
63
- segments:
64
- - 0
65
- version: "0"
66
- required_rubygems_version: !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
69
55
  - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
75
58
  requirements: []
76
-
77
59
  rubyforge_project: simple_show
78
- rubygems_version: 1.8.24
60
+ rubygems_version: 2.4.3
79
61
  signing_key:
80
- specification_version: 3
81
- summary: "SimpleShow is to #show what SimpleForm is to #edit"
82
- test_files:
62
+ specification_version: 4
63
+ summary: 'SimpleShow is to #show what SimpleForm is to #edit'
64
+ test_files:
65
+ - test/skip_helper.rb
83
66
  - test/test_helper.rb
84
67
  - test/test_simple_show.rb
85
68
  - test/test_simple_show_for.rb
86
69
  - test/test_simple_show_label.rb
87
70
  - test/test_simple_show_show.rb
71
+ - test/test_simple_show_show_collection.rb
88
72
  - test/test_simple_show_value.rb