theman 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/spec/theman_spec.rb DELETED
@@ -1,212 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Theman::Agency, "instance object" do
4
- before do
5
- @instance = ::Theman::Agency.new.instance
6
- end
7
-
8
- it "should superclass active record" do
9
- @instance.superclass.should == ActiveRecord::Base
10
- end
11
-
12
- it "should have connection" do
13
- @instance.connection.class.should == ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
14
- end
15
-
16
- it "should have a table name" do
17
- @instance.table_name.should match /agent[0-9]{10}/
18
- end
19
-
20
- it "should have an ispect method" do
21
- @instance.inspect.should match /Agent/
22
- end
23
- end
24
-
25
- describe Theman::Agency, "instance methods" do
26
- it "should downcase and symbolize" do
27
- Theman::Agency.new.symbolize("STRANGE NAME").should == :strange_name
28
- end
29
- end
30
-
31
- describe Theman::Agency, "basic" do
32
- before do
33
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_one.csv'))
34
- @agent = ::Theman::Agency.new @csv
35
- @instance = @agent.instance
36
- end
37
-
38
- it "should have all the records from the csv" do
39
- @instance.count.should == 4
40
- end
41
- end
42
-
43
- describe Theman::Agency, "sed chomp" do
44
- before do
45
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_two.csv'))
46
- @agent = ::Theman::Agency.new @csv do |agent|
47
- agent.seds "-n -e :a -e '1,15!{P;N;D;};N;ba'"
48
- end
49
- @instance = @agent.instance
50
- end
51
-
52
- it "should have all the records from the csv" do
53
- @instance.count.should == 5
54
- end
55
- end
56
-
57
- describe Theman::Agency, "data types" do
58
- before do
59
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_one.csv'))
60
- @agent = ::Theman::Agency.new @csv do |agent|
61
- agent.nulls /"N"/, /"UNKNOWN"/, /""/
62
- agent.table do |t|
63
- t.date :col_date
64
- t.boolean :col_four
65
- t.float :col_five
66
- end
67
- end
68
- @instance = @agent.instance
69
- end
70
-
71
- it "should create date col" do
72
- @instance.first.col_date.class.should == Date
73
- end
74
-
75
- it "should create boolean col" do
76
- @instance.where(:col_four => true).count.should == 2
77
- end
78
-
79
- it "should create float col" do
80
- @instance.where("col_five > 10.0").count.should == 2
81
- end
82
-
83
- it "should have an array of nulls" do
84
- @agent.nulls_to_sed.should == ["-e 's/\"N\"//g'", "-e 's/\"UNKNOWN\"//g'", "-e 's/\"\"//g'"]
85
- end
86
-
87
- it "should have nulls not strings" do
88
- @instance.where(:col_two => nil).count.should == 2
89
- @instance.where(:col_three => nil).count.should == 2
90
- end
91
- end
92
-
93
- describe Theman::Agency, "european date styles" do
94
- before do
95
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_three.csv'))
96
- @agent = ::Theman::Agency.new @csv do |smith|
97
- smith.datestyle 'European'
98
- smith.table do |t|
99
- t.date :col_date
100
- end
101
- end
102
- @instance = @agent.instance
103
- end
104
-
105
- it "should have correct date" do
106
- date = @instance.first.col_date
107
- date.day.should == 25
108
- date.month.should == 12
109
- end
110
- end
111
-
112
- describe Theman::Agency, "US date styles" do
113
- before do
114
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_four.csv'))
115
- @agent = ::Theman::Agency.new @csv do |smith|
116
- smith.datestyle 'US'
117
- smith.table do |t|
118
- t.date :col_date
119
- end
120
- end
121
- @instance = @agent.instance
122
- end
123
-
124
- it "should have correct date" do
125
- date = @instance.first.col_date
126
- date.day.should == 25
127
- date.month.should == 12
128
- end
129
- end
130
-
131
- describe Theman::Agency, "ISO date styles" do
132
- before do
133
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_five.csv'))
134
- @agent = ::Theman::Agency.new @csv do |smith|
135
- smith.datestyle 'ISO'
136
- smith.table do |t|
137
- t.date :col_date
138
- end
139
- end
140
- @instance = @agent.instance
141
- end
142
-
143
- it "should have correct date" do
144
- date = @instance.first.col_date
145
- date.day.should == 25
146
- date.month.should == 12
147
- end
148
- end
149
-
150
- describe Theman::Agency, "procedural" do
151
- before do
152
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_two.csv'))
153
- end
154
-
155
- it "should be able to be called procedural" do
156
- smith = ::Theman::Agency.new
157
- smith.stream @csv
158
- smith.datestyle "European"
159
- smith.seds "-n -e :a -e '1,15!{P;N;D;};N;ba'"
160
- smith.nulls /"XXXX"/
161
- smith.date :date
162
- smith.create_table
163
- smith.pipe_it
164
- my_model = smith.instance
165
- my_model.first.date.class.should == Date
166
- my_model.first.org_code.class.should == NilClass
167
- my_model.count.should == 5
168
- end
169
- end
170
-
171
- describe Theman::Agency, "create table" do
172
- before do
173
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_one.csv'))
174
- @agent = ::Theman::Agency.new @csv do |agent|
175
- agent.nulls /"N"/, /"UNKNOWN"/, /""/
176
- agent.table do |t|
177
- t.string :col_two, :limit => 50
178
- end
179
- end
180
- @instance = @agent.instance
181
- end
182
-
183
- it "should have" do
184
- @instance.first.col_two.should == "some \\text\\"
185
- end
186
- end
187
-
188
- describe Theman::Agency, "add primary key" do
189
- before do
190
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_one.csv'))
191
- @agent = ::Theman::Agency.new @csv, ActiveRecord::Base, :primary_key => true
192
- @instance = @agent.instance
193
- end
194
-
195
- it "should have serial primary key" do
196
- @instance.first.agents_pkey.should == 1
197
- end
198
- end
199
-
200
- describe Theman::Agency, "delimiters" do
201
- before do
202
- @csv = File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec', 'fixtures', 'temp_six.txt'))
203
- @agent = ::Theman::Agency.new @csv do |agent|
204
- agent.delimiter "|"
205
- end
206
- @instance = @agent.instance
207
- end
208
-
209
- it "should have imported pipe delimited txt file" do
210
- @instance.count.should == 4
211
- end
212
- end