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.
- data/lib/table_warnings/version.rb +1 -1
- data/lib/table_warnings/warning/blank.rb +10 -8
- data/test/test_table_warnings.rb +19 -9
- metadata +49 -76
@@ -1,20 +1,22 @@
|
|
1
1
|
module TableWarnings
|
2
2
|
class Warning
|
3
3
|
class Blank < Warning
|
4
|
-
|
4
|
+
def column_name
|
5
|
+
@column_name.to_s
|
6
|
+
end
|
5
7
|
|
6
|
-
def
|
7
|
-
if column_name
|
8
|
-
|
8
|
+
def columns_hash
|
9
|
+
if column_name.present?
|
10
|
+
table.columns_hash.slice column_name
|
9
11
|
else
|
10
|
-
table.
|
12
|
+
table.columns_hash
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
14
16
|
def messages
|
15
|
-
|
16
|
-
if table.count(:conditions => { c =>
|
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
|
data/test/test_table_warnings.rb
CHANGED
@@ -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
|
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
|
-
|
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
|
-
|
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
|
-
|
5
|
-
prerelease:
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
version: "0"
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
63
45
|
type: :runtime
|
64
|
-
|
65
|
-
|
66
|
-
|
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
|
-
|
103
|
-
|
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
|
-
|
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.
|
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
|
122
|
-
|
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
|