table_warnings 0.0.2 → 0.0.3

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.
@@ -1,3 +1,3 @@
1
1
  module TableWarnings
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,20 +1,22 @@
1
1
  module TableWarnings
2
2
  class Warning
3
3
  class Blank < Warning
4
- attr_reader :column_name
4
+ def column_name
5
+ @column_name.to_s
6
+ end
5
7
 
6
- def effective_column_names
7
- if column_name
8
- [column_name]
8
+ def columns_hash
9
+ if column_name.present?
10
+ table.columns_hash.slice column_name
9
11
  else
10
- table.column_names
12
+ table.columns_hash
11
13
  end
12
14
  end
13
15
 
14
16
  def messages
15
- effective_column_names.map do |c|
16
- if table.count(:conditions => { c => ''}) > 0 or table.count(:conditions => { c => nil }) > 0
17
- "There are blanks in the `#{c}` column."
17
+ columns_hash.map do |_, c|
18
+ if table.count(:conditions => { c.name => nil }) > 0 or (c.text? and table.count(:conditions => [ "TRIM(#{table.quoted_table_name}.#{c.name}) = ''"]) > 0)
19
+ "There are blanks in the `#{c.name}` column."
18
20
  end
19
21
  end
20
22
  end
@@ -13,21 +13,31 @@ class AutomobileFuelType < ActiveRecord::Base
13
13
  warn_unless_size_is 1..6
14
14
  end
15
15
 
16
- AutomobileMake.create! :name => '', :fuel_efficiency => nil, :fuel_efficiency_units => 'kilometres_per_litre'
17
- AutomobileMake.create! :name => 'Alfa Romeo', :fuel_efficiency => 10.4075, :fuel_efficiency_units => 'kilometres_per_litre'
18
-
19
- AutomobileFuelType.create! :name => 'gas'
20
- AutomobileFuelType.create! :name => 'diesel'
21
-
22
16
  class TestTableWarnings < Test::Unit::TestCase
23
- def test_warn_for_blanks_in_specific_columns
17
+ def setup
18
+ AutomobileMake.delete_all
19
+ AutomobileFuelType.delete_all
20
+ end
21
+
22
+ def test_001_warn_for_blanks_in_specific_columns
23
+ AutomobileMake.create! :name => ' ', :fuel_efficiency => nil, :fuel_efficiency_units => 'kilometres_per_litre'
24
+ AutomobileMake.create! :name => 'Alfa Romeo', :fuel_efficiency => 10.4075, :fuel_efficiency_units => 'kilometres_per_litre'
24
25
  assert AutomobileMake.table_warnings.one? { |w| w =~ /blanks in.*name.*column/ }
25
26
  assert AutomobileMake.table_warnings.one? { |w| w =~ /blanks in.*fuel_efficiency.*column/ }
26
27
  end
27
- def test_warn_of_size
28
+
29
+ def test_002_warn_of_size
30
+ assert_equal 0, AutomobileMake.count
28
31
  assert AutomobileMake.table_warnings.many? { |w| w =~ /expected.*size/ }
29
32
  end
30
- def test_warn_for_blanks_in_any_column
33
+
34
+ def test_003_warn_for_blanks_in_any_column
35
+ AutomobileFuelType.create! :name => 'gas'
31
36
  assert AutomobileFuelType.table_warnings.one? { |w| w =~ /blanks in.*code.*column/ }
32
37
  end
38
+
39
+ def test_004_dont_treat_0_as_blank
40
+ AutomobileMake.create! :name => 'Acme', :fuel_efficiency => 0
41
+ assert !AutomobileMake.table_warnings.any? { |w| w =~ /blanks in.*fuel_efficiency.*column/ }
42
+ end
33
43
  end
metadata CHANGED
@@ -1,77 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: table_warnings
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Seamus Abshere
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-02-18 00:00:00 -06:00
12
+ date: 2011-06-22 00:00:00.000000000 -05:00
19
13
  default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: fastercsv
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2155025560 !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
33
23
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: earth
37
24
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *2155025560
26
+ - !ruby/object:Gem::Dependency
27
+ name: earth
28
+ requirement: &2155025060 !ruby/object:Gem::Requirement
39
29
  none: false
40
- requirements:
41
- - - "="
42
- - !ruby/object:Gem::Version
43
- hash: 5
44
- segments:
45
- - 0
46
- - 3
47
- - 11
30
+ requirements:
31
+ - - =
32
+ - !ruby/object:Gem::Version
48
33
  version: 0.3.11
49
34
  type: :development
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: activerecord
53
35
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *2155025060
37
+ - !ruby/object:Gem::Dependency
38
+ name: activerecord
39
+ requirement: &2155024640 !ruby/object:Gem::Requirement
55
40
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
- version: "0"
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
63
45
  type: :runtime
64
- version_requirements: *id003
65
- description: Validate an entire [ActiveRecord] table, checking for things like blank rows or total number of rows
66
- email:
46
+ prerelease: false
47
+ version_requirements: *2155024640
48
+ description: Validate an entire [ActiveRecord] table, checking for things like blank
49
+ rows or total number of rows
50
+ email:
67
51
  - seamus@abshere.net
68
52
  executables: []
69
-
70
53
  extensions: []
71
-
72
54
  extra_rdoc_files: []
73
-
74
- files:
55
+ files:
75
56
  - .gitignore
76
57
  - Gemfile
77
58
  - README.rdoc
@@ -88,37 +69,29 @@ files:
88
69
  has_rdoc: true
89
70
  homepage: https://github.com/seamusabshere/table_warnings
90
71
  licenses: []
91
-
92
72
  post_install_message:
93
73
  rdoc_options: []
94
-
95
- require_paths:
74
+ require_paths:
96
75
  - lib
97
- required_ruby_version: !ruby/object:Gem::Requirement
76
+ required_ruby_version: !ruby/object:Gem::Requirement
98
77
  none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- hash: 3
103
- segments:
104
- - 0
105
- version: "0"
106
- required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
83
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- hash: 3
112
- segments:
113
- - 0
114
- version: "0"
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
115
88
  requirements: []
116
-
117
89
  rubyforge_project: table_warnings
118
- rubygems_version: 1.3.7
90
+ rubygems_version: 1.6.2
119
91
  signing_key:
120
92
  specification_version: 3
121
- summary: It's called validations to remind people of per-record validations, but it works on the table, and is meant to be used after a table is completely populated.
122
- test_files:
93
+ summary: It's called validations to remind people of per-record validations, but it
94
+ works on the table, and is meant to be used after a table is completely populated.
95
+ test_files:
123
96
  - test/helper.rb
124
97
  - test/test_table_warnings.rb