table_warnings 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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