ingestor 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/samples/books.xml ADDED
@@ -0,0 +1,32 @@
1
+ <?xml version="1.0"?>
2
+ <catalog>
3
+ <book id="bk101">
4
+ <author>Gambardella, Matthew</author>
5
+ <title>XML Developer's Guide</title>
6
+ <genre>Computer</genre>
7
+ <price>44.95</price>
8
+ <publish_date>2000-10-01</publish_date>
9
+ <description>An in-depth look at creating applications
10
+ with XML.</description>
11
+ </book>
12
+ <book id="bk102">
13
+ <author>Ralls, Kim</author>
14
+ <title>Midnight Rain</title>
15
+ <genre>Fantasy</genre>
16
+ <price>5.95</price>
17
+ <publish_date>2000-12-16</publish_date>
18
+ <description>A former architect battles corporate zombies,
19
+ an evil sorceress, and her own childhood to become queen
20
+ of the world.</description>
21
+ </book>
22
+ <book id="bk103">
23
+ <author>Corets, Eva</author>
24
+ <title>Maeve Ascendant</title>
25
+ <genre>Fantasy</genre>
26
+ <price>5.95</price>
27
+ <publish_date>2000-11-17</publish_date>
28
+ <description>After the collapse of a nanotechnology
29
+ society in England, the young survivors lay the
30
+ foundation for a new society.</description>
31
+ </book>
32
+ </catalog>
@@ -0,0 +1,30 @@
1
+ [
2
+ {
3
+ "color": "red",
4
+ "value": "#f00"
5
+ },
6
+ {
7
+ "color": "green",
8
+ "value": "#0f0"
9
+ },
10
+ {
11
+ "color": "blue",
12
+ "value": "#00f"
13
+ },
14
+ {
15
+ "color": "cyan",
16
+ "value": "#0ff"
17
+ },
18
+ {
19
+ "color": "magenta",
20
+ "value": "#f0f"
21
+ },
22
+ {
23
+ "color": "yellow",
24
+ "value": "#ff0"
25
+ },
26
+ {
27
+ "color": "black",
28
+ "value": "#000"
29
+ }
30
+ ]
data/samples/flags.txt ADDED
@@ -0,0 +1,12 @@
1
+ Country|Colors|Count|Secrets
2
+ El Salvador|blue,white|2|great at hand stands
3
+ Finland|blue,white|2|secret inventors of the macarena
4
+ Ukraine|blue,yellow|2|break dancing masters
5
+ United States|red,white,blue|3|cheese burgers
6
+ Australia|red,white,blue|3|sunburn magic powers
7
+ Fiji|red,white,blue|3|scrumptius water
8
+ Norway|red,white,blue|3|dah its cold
9
+ Canada|red,white|2|eh its cold
10
+ Japan|red,white|2|gukkon
11
+ China|red,yellow|2|only first world when you're looking
12
+ Germany|red,yellow,black|3|fat steamy wieners
@@ -0,0 +1,26 @@
1
+ {"people":
2
+ [
3
+ {
4
+ "firstName": "John",
5
+ "lastName": "Smith",
6
+ "age": 25,
7
+ "address": {
8
+ "streetAddress": "21 2nd Street",
9
+ "city": "New York",
10
+ "state": "NY",
11
+ "postalCode": 10021
12
+ }
13
+ },
14
+ {
15
+ "firstName": "John",
16
+ "lastName": "Smith",
17
+ "age": 25,
18
+ "address": {
19
+ "streetAddress": "21 2nd Street",
20
+ "city": "New York",
21
+ "state": "NY",
22
+ "postalCode": 10021
23
+ }
24
+ }
25
+ ]
26
+ }
@@ -0,0 +1,186 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.ian.com/affiliatecenter/include/V2/ChainList.zip
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - ! '*/*'
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ date:
20
+ - Fri, 04 Jan 2013 02:04:05 GMT
21
+ server:
22
+ - Apache/2.2.3 (CentOS)
23
+ set-cookie:
24
+ - TLTSID=043E0BF65613105671A98F190BA94A70; Path=/; Domain=.ian.com
25
+ - TLTUID=043E0BF65613105671A98F190BA94A70; Path=/; Domain=.ian.com; Expires=Fri,
26
+ 04-01-2023 02:04:05 GMT
27
+ hostname:
28
+ - TWEB01
29
+ last-modified:
30
+ - Thu, 03 Jan 2013 04:15:09 GMT
31
+ accept-ranges:
32
+ - bytes
33
+ content-length:
34
+ - '6444'
35
+ content-type:
36
+ - application/zip
37
+ body:
38
+ encoding: ASCII-8BIT
39
+ string: !binary |-
40
+ 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
183
+ AAAA2xgAAAAA
184
+ http_version: '1.1'
185
+ recorded_at: Fri, 04 Jan 2013 02:04:05 GMT
186
+ recorded_with: VCR 2.3.0
@@ -0,0 +1,114 @@
1
+ require 'spec_helper'
2
+ describe Ingestor::Dsl do
3
+ before :each do
4
+ @dsl = Ingestor::Dsl.new
5
+ end
6
+ it 'should be able to set the file path' do
7
+ @dsl.file = "file.txt"
8
+ @dsl.instance_variable_get("@file").should == "file.txt"
9
+ end
10
+
11
+ it 'should not expect a header by default' do
12
+ @dsl.options[:includes_header].should be(false)
13
+ end
14
+
15
+ it 'should have a default working directory' do
16
+ @dsl.options[:working_directory].should eq('/tmp/ingestor')
17
+ end
18
+
19
+ it 'should be able to specify a working directory' do
20
+ @dsl.working_directory '/tmp/other'
21
+ @dsl.options[:working_directory].should eq('/tmp/other')
22
+ end
23
+
24
+ it 'should be able to set if a header line is included' do
25
+ @dsl.includes_header(true)
26
+ @dsl.options[:includes_header].should be(true)
27
+ @dsl.includes_header(false)
28
+ @dsl.options[:includes_header].should be(false)
29
+ end
30
+
31
+ it 'should be able to mark a file as compressed' do
32
+ @dsl.compressed(true)
33
+ @dsl.options[:compressed].should be(true)
34
+
35
+ @dsl.compressed(false)
36
+ @dsl.options[:compressed].should be(false)
37
+ end
38
+
39
+ it 'should be able to specify the parser' do
40
+ @dsl.parser( :plain_text )
41
+ @dsl.options[:parser].should == :plain_text
42
+ end
43
+
44
+ it 'should be able to pass a block that finds or initializes the AR object' do
45
+ @dsl.finder {|values| }
46
+ @dsl.options[:finder].should be_kind_of(Proc)
47
+ end
48
+
49
+ it 'should be able to override the record processor' do
50
+ @dsl.processor {|values,record| }
51
+ @dsl.options[:processor].should be_kind_of(Proc)
52
+ end
53
+ it 'should be able to set a before record processor block' do
54
+ @dsl.before {|values| }
55
+ @dsl.options[:before].should be_kind_of(Proc)
56
+ end
57
+ it 'should be able to set an after record processor block' do
58
+ @dsl.after {|record| }
59
+ @dsl.options[:after].should be_kind_of(Proc)
60
+ end
61
+
62
+ it 'should raise an exception if the arity is incorrect for finder' do
63
+ lambda{
64
+ @dsl.finder{}
65
+ }.should raise_exception(Ingestor::Dsl::InvalidBlockSpecification)
66
+ end
67
+
68
+ it 'should raise an exception if the arity is incorrect for processor' do
69
+ lambda{
70
+ @dsl.processor{}
71
+ }.should raise_exception(Ingestor::Dsl::InvalidBlockSpecification)
72
+ end
73
+
74
+ it 'should raise an exception if the arity is incorrect for before' do
75
+ lambda{
76
+ @dsl.before{}
77
+ }.should raise_exception(Ingestor::Dsl::InvalidBlockSpecification)
78
+ end
79
+
80
+ it 'should raise an exception if the arity is incorrect for after' do
81
+ lambda{
82
+ @dsl.after{}
83
+ }.should raise_exception(Ingestor::Dsl::InvalidBlockSpecification)
84
+ end
85
+
86
+ it 'should raise an exception if the arity is incorrect for map_attributes' do
87
+ lambda{
88
+ @dsl.map_attributes{}
89
+ }.should raise_exception(Ingestor::Dsl::InvalidBlockSpecification)
90
+ end
91
+
92
+ it 'should be able to map out columns' do
93
+ @dsl.map_attributes do |values|
94
+ {
95
+ :id => values[0],
96
+ :name => values[1],
97
+ :color => values[2]
98
+ }
99
+ end
100
+ @dsl.options[:map_attributes].call([1,'Hat','Blue'])[:name].should eq('Hat')
101
+ end
102
+
103
+ it 'should be able to construct an Ingestor::Proxy' do
104
+ @dsl.finder{|values| Country.new}
105
+ @dsl.map_attributes do |values|
106
+ {
107
+ :name => values[0],
108
+ :colors => values[1],
109
+ :count => values[2]
110
+ }
111
+ end
112
+ @dsl.build.should be_kind_of(Ingestor::Proxy)
113
+ end
114
+ end
@@ -0,0 +1,5 @@
1
+
2
+ # require 'spec_helper'
3
+ # describe Ingestor::Parser::Csv do
4
+ # pending 'write it'
5
+ # end
@@ -0,0 +1,5 @@
1
+
2
+ # require 'spec_helper'
3
+ # describe Ingestor::Parser::Json do
4
+ # pending 'write it'
5
+ # end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+ describe Ingestor::Parser::PlainText do
3
+ describe '#delimiter' do
4
+ before do
5
+ @parser = Ingestor::Parser::PlainText.new(nil,nil)
6
+ end
7
+
8
+ it 'should allow the delimiter to be changed' do
9
+ @parser.options({
10
+ delimiter: ','
11
+ })
12
+ @parser.send(:process_line,"Chicken,Cats,Dogs").should eq ['Chicken', 'Cats', 'Dogs']
13
+ end
14
+
15
+ it 'should be able to change the line processor' do
16
+ @parser.options({
17
+ line_processor: lambda{|line|
18
+ ['Something','Else']
19
+ }
20
+ })
21
+ @parser.send(:process_line,"Blue,3&4").should eq ['Something','Else']
22
+ end
23
+ end
24
+ end