ferry 1.2.1 → 1.3.0

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.
@@ -0,0 +1,12 @@
1
+ dumper = Ferry::Dumper.new
2
+
3
+ Dir.chdir("spec") unless Dir.pwd.split('/').last == "spec"
4
+
5
+ describe "dumper" do
6
+ describe "sqlite3" do
7
+ end
8
+ describe "postgresql" do
9
+ end
10
+ describe "mysql2" do
11
+ end
12
+ end
@@ -2,171 +2,191 @@ exporter = Ferry::Exporter.new
2
2
 
3
3
  Dir.chdir("spec") unless Dir.pwd.split('/').last == "spec"
4
4
 
5
- describe("export functionality") do
6
- describe "#export" do
7
- describe "sqlite3 db" do
8
- before(:all) do
9
- connect("sqlite3")
10
- Contexts.setup
11
- end
12
- after(:all) do
13
- Contexts.teardown
14
- FileUtils.rm_rf('db')
15
- end
16
-
17
- it "should error if specified table does not exist" do
18
- expect{exporter.to_csv('sqlite3', 'cart')}.to raise_error
19
- end
5
+ # TODO: test db func expo
6
+ describe "exporting" do
7
+ describe "sqlite3 db" do
8
+ before(:all) do
9
+ connect("sqlite3")
10
+ Contexts.setup
11
+ end
12
+ after(:all) do
13
+ Contexts.teardown
14
+ FileUtils.rm_rf('db')
15
+ end
20
16
 
21
- describe "to_csv" do
22
- it "call should create a populated csv file" do
23
- exporter.to_csv('sqlite3', 'carts')
24
- file_path = File.expand_path("..",Dir.pwd) + "/spec/db/csv/sqlite3/carts.csv"
25
- expect(File).to exist(file_path)
26
- lines = CSV.read(file_path)
27
- expect(lines.length).to eql(27)
28
- expect(lines[0]).to eql(["id", "email"])
29
- expect(lines[1]).to eql(["1", "abby@example.com"])
30
- expect(lines[26]).to eql(["26", "zach@example.com"])
31
- end
32
- end
17
+ it "should error if specified table does not exist" do
18
+ expect{exporter.to_csv('sqlite3', 'cart')}.to raise_error
19
+ end
33
20
 
34
- describe "to_yaml" do
35
- it "call should create a populated yaml file" do
36
- exporter.to_yaml('sqlite3', 'carts')
37
- file_path = File.expand_path("..", Dir.pwd) + "/spec/db/yaml/sqlite3/carts.yml"
38
- expect(File).to exist(file_path)
39
- output = YAML.load_file(file_path)
40
- expect(output["carts"].length).to eql(2)
41
- expect(output["carts"].keys).to eql(["columns","records"])
42
- expect(output["carts"]["columns"]).to eql(["id","email"])
43
- expect(output["carts"]["records"][0]).to eql([1,"abby@example.com"])
44
- expect(output["carts"]["records"][25]).to eql([26,"zach@example.com"])
45
- end
21
+ describe "to_csv" do
22
+ it "call should create a populated csv file" do
23
+ exporter.to_csv('sqlite3', 'carts')
24
+ file_path = File.expand_path("..",Dir.pwd) + "/spec/db/csv/sqlite3/carts.csv"
25
+ expect(File).to exist(file_path)
26
+ lines = CSV.read(file_path)
27
+ expect(lines.length).to eql(27)
28
+ expect(lines[0]).to eql(["id", "email"])
29
+ expect(lines[1]).to eql(["1", "abby@example.com"])
30
+ expect(lines[26]).to eql(["26", "zach@example.com"])
46
31
  end
32
+ end
47
33
 
48
- describe "to_json" do
49
- it "should create a correctly formatted json file" do
50
- exporter.to_json('sqlite3', 'carts')
51
- file_path = File.expand_path("..", Dir.pwd) + "/spec/db/json/sqlite3/carts.json"
52
- file_content = File.read(file_path)
53
- expect(File).to exist(file_path)
54
- output = JSON.parse(file_content)
55
- expect(output.length).to eql(26)
56
- expect(output[0]["email"]).to eql("abby@example.com")
57
- expect(output[25]["email"]).to eql("zach@example.com")
58
- end
34
+ describe "to_yaml" do
35
+ it "call should create a populated yaml file" do
36
+ exporter.to_yaml('sqlite3', 'carts')
37
+ file_path = File.expand_path("..", Dir.pwd) + "/spec/db/yaml/sqlite3/carts.yml"
38
+ expect(File).to exist(file_path)
39
+ output = YAML.load_file(file_path)
40
+ expect(output["carts"].length).to eql(2)
41
+ expect(output["carts"].keys).to eql(["columns","records"])
42
+ expect(output["carts"]["columns"]).to eql(["id","email"])
43
+ expect(output["carts"]["records"][0]).to eql([1,"abby@example.com"])
44
+ expect(output["carts"]["records"][25]).to eql([26,"zach@example.com"])
59
45
  end
60
- end
61
-
62
- describe "postgresql db" do
63
- before(:all) do
64
- connect("postgresql")
65
- Contexts.setup
66
- end
67
- after(:all) do
68
- Contexts.teardown
69
- FileUtils.rm_rf('db')
70
- end
71
-
72
- it "should error if specified table does not exist" do
73
- expect{exporter.to_csv('postgresql', 'cart')}.to raise_error
46
+ end
47
+
48
+ describe "to_json" do
49
+ it "should create a correctly formatted json file" do
50
+ exporter.to_json('sqlite3', 'carts')
51
+ file_path = File.expand_path("..", Dir.pwd) + "/spec/db/json/sqlite3/carts.json"
52
+ file_content = File.read(file_path)
53
+ expect(File).to exist(file_path)
54
+ output = JSON.parse(file_content)
55
+ expect(output.length).to eql(26)
56
+ expect(output[0]["email"]).to eql("abby@example.com")
57
+ expect(output[25]["email"]).to eql("zach@example.com")
74
58
  end
59
+ end
60
+
61
+ # describe "export db dumps" do
62
+ # it "should be able to export a full sql dump to a file" do
63
+ # pending("waiting to be written")
64
+ # raise "so were failing for now"
65
+ # end
66
+ # end
67
+ end
68
+
69
+ describe "postgresql db" do
70
+ before(:all) do
71
+ connect("postgresql")
72
+ Contexts.setup
73
+ end
74
+ after(:all) do
75
+ Contexts.teardown
76
+ FileUtils.rm_rf('db')
77
+ end
75
78
 
76
- describe "to_csv" do
77
- it "call should create a populated csv file" do
78
- exporter.to_csv('postgresql', 'carts')
79
- file_path = File.expand_path("..",Dir.pwd) + "/spec/db/csv/postgresql/carts.csv"
80
- expect(File).to exist(file_path)
81
- lines = CSV.read(file_path)
82
- expect(lines.length).to eql(27)
83
- expect(lines[0]).to eql(["id", "email"])
84
- expect(lines[1]).to eql(["1", "abby@example.com"])
85
- expect(lines[26]).to eql(["26", "zach@example.com"])
86
- end
79
+ it "should error if specified table does not exist" do
80
+ expect{exporter.to_csv('postgresql', 'cart')}.to raise_error
81
+ end
82
+
83
+ describe "to_csv" do
84
+ it "call should create a populated csv file" do
85
+ exporter.to_csv('postgresql', 'carts')
86
+ file_path = File.expand_path("..",Dir.pwd) + "/spec/db/csv/postgresql/carts.csv"
87
+ expect(File).to exist(file_path)
88
+ lines = CSV.read(file_path)
89
+ expect(lines.length).to eql(27)
90
+ expect(lines[0]).to eql(["id", "email"])
91
+ expect(lines[1]).to eql(["1", "abby@example.com"])
92
+ expect(lines[26]).to eql(["26", "zach@example.com"])
87
93
  end
94
+ end
88
95
 
89
- describe "to_yaml" do
90
- it "call should create a populated yaml file" do
91
- exporter.to_yaml('postgresql', 'carts')
92
- file_path = File.expand_path("..",Dir.pwd) + "/spec/db/yaml/postgresql/carts.yml"
93
- expect(File).to exist(file_path)
94
- output = YAML.load_file(file_path)
95
- expect(output["carts"].length).to eql(2)
96
- expect(output["carts"].keys).to eql(["columns","records"])
97
- expect(output["carts"]["columns"]).to eql(["id","email"])
98
- expect(output["carts"]["records"][0]).to eql(["1","abby@example.com"])
99
- expect(output["carts"]["records"][25]).to eql(["26","zach@example.com"])
100
- end
96
+ describe "to_yaml" do
97
+ it "call should create a populated yaml file" do
98
+ exporter.to_yaml('postgresql', 'carts')
99
+ file_path = File.expand_path("..",Dir.pwd) + "/spec/db/yaml/postgresql/carts.yml"
100
+ expect(File).to exist(file_path)
101
+ output = YAML.load_file(file_path)
102
+ expect(output["carts"].length).to eql(2)
103
+ expect(output["carts"].keys).to eql(["columns","records"])
104
+ expect(output["carts"]["columns"]).to eql(["id","email"])
105
+ expect(output["carts"]["records"][0]).to eql(["1","abby@example.com"])
106
+ expect(output["carts"]["records"][25]).to eql(["26","zach@example.com"])
101
107
  end
108
+ end
102
109
 
103
- describe "to_json" do
104
- it "should create a correctly formatted json file" do
105
- exporter.to_json('postgresql', 'carts')
106
- file_path = File.expand_path("..", Dir.pwd) + "/spec/db/json/postgresql/carts.json"
107
- file_content = File.read(file_path)
108
- expect(File).to exist(file_path)
109
- output = JSON.parse(file_content)
110
- expect(output.length).to eql(26)
111
- expect(output[0]["email"]).to eql("abby@example.com")
112
- expect(output[25]["email"]).to eql("zach@example.com")
113
- end
110
+ describe "to_json" do
111
+ it "should create a correctly formatted json file" do
112
+ exporter.to_json('postgresql', 'carts')
113
+ file_path = File.expand_path("..", Dir.pwd) + "/spec/db/json/postgresql/carts.json"
114
+ file_content = File.read(file_path)
115
+ expect(File).to exist(file_path)
116
+ output = JSON.parse(file_content)
117
+ expect(output.length).to eql(26)
118
+ expect(output[0]["email"]).to eql("abby@example.com")
119
+ expect(output[25]["email"]).to eql("zach@example.com")
114
120
  end
115
121
  end
116
122
 
117
- describe "mysql2 db" do
118
- before(:all) do
119
- connect("mysql2")
120
- Contexts.setup
121
- end
122
- after(:all) do
123
- Contexts.teardown
124
- FileUtils.rm_rf('db')
125
- end
123
+ # describe "export db dumps" do
124
+ # it "should be able to export a full sql dump to a file" do
125
+ # pending("waiting to be written")
126
+ # raise "so were failing for now"
127
+ # end
128
+ # end
129
+ end
126
130
 
127
- it "should error if specified table does not exist" do
128
- expect{exporter.to_csv('mysql2', 'cart')}.to raise_error
129
- end
131
+ describe "mysql2 db" do
132
+ before(:all) do
133
+ connect("mysql2")
134
+ Contexts.setup
135
+ end
136
+ after(:all) do
137
+ Contexts.teardown
138
+ FileUtils.rm_rf('db')
139
+ end
140
+
141
+ it "should error if specified table does not exist" do
142
+ expect{exporter.to_csv('mysql2', 'cart')}.to raise_error
143
+ end
130
144
 
131
- describe "to_csv" do
132
- it "call should create a populated csv file" do
133
- exporter.to_csv('mysql2', 'carts')
134
- file_path = File.expand_path("..",Dir.pwd) + "/spec/db/csv/mysql2/carts.csv"
135
- expect(File).to exist(file_path)
136
- lines = CSV.read(file_path)
137
- expect(lines.length).to eql(27)
138
- expect(lines[0]).to eql(["id", "email"])
139
- expect(lines[1]).to eql(["1", "abby@example.com"])
140
- expect(lines[26]).to eql(["26", "zach@example.com"])
141
- end
145
+ describe "to_csv" do
146
+ it "call should create a populated csv file" do
147
+ exporter.to_csv('mysql2', 'carts')
148
+ file_path = File.expand_path("..",Dir.pwd) + "/spec/db/csv/mysql2/carts.csv"
149
+ expect(File).to exist(file_path)
150
+ lines = CSV.read(file_path)
151
+ expect(lines.length).to eql(27)
152
+ expect(lines[0]).to eql(["id", "email"])
153
+ expect(lines[1]).to eql(["1", "abby@example.com"])
154
+ expect(lines[26]).to eql(["26", "zach@example.com"])
142
155
  end
156
+ end
143
157
 
144
- describe "to_yaml" do
145
- it "call should create a populated yaml file" do
146
- exporter.to_yaml('mysql2', 'carts')
147
- file_path = File.expand_path("..",Dir.pwd) + "/spec/db/yaml/mysql2/carts.yml"
148
- expect(File).to exist(file_path)
149
- output = YAML.load_file(file_path)
150
- expect(output["carts"].length).to eql(2)
151
- expect(output["carts"].keys).to eql(["columns","records"])
152
- expect(output["carts"]["columns"]).to eql(["id","email"])
153
- expect(output["carts"]["records"][0]).to eql([1,"abby@example.com"])
154
- expect(output["carts"]["records"][25]).to eql([26,"zach@example.com"])
155
- end
158
+ describe "to_yaml" do
159
+ it "call should create a populated yaml file" do
160
+ exporter.to_yaml('mysql2', 'carts')
161
+ file_path = File.expand_path("..",Dir.pwd) + "/spec/db/yaml/mysql2/carts.yml"
162
+ expect(File).to exist(file_path)
163
+ output = YAML.load_file(file_path)
164
+ expect(output["carts"].length).to eql(2)
165
+ expect(output["carts"].keys).to eql(["columns","records"])
166
+ expect(output["carts"]["columns"]).to eql(["id","email"])
167
+ expect(output["carts"]["records"][0]).to eql([1,"abby@example.com"])
168
+ expect(output["carts"]["records"][25]).to eql([26,"zach@example.com"])
156
169
  end
170
+ end
157
171
 
158
- describe "to_json" do
159
- it "should create a correctly formatted json file" do
160
- exporter.to_json('mysql2', 'carts')
161
- file_path = File.expand_path("..", Dir.pwd) + "/spec/db/json/mysql2/carts.json"
162
- file_content = File.read(file_path)
163
- expect(File).to exist(file_path)
164
- output = JSON.parse(file_content)
165
- expect(output.length).to eql(26)
166
- expect(output[0]["email"]).to eql("abby@example.com")
167
- expect(output[25]["email"]).to eql("zach@example.com")
168
- end
172
+ describe "to_json" do
173
+ it "should create a correctly formatted json file" do
174
+ exporter.to_json('mysql2', 'carts')
175
+ file_path = File.expand_path("..", Dir.pwd) + "/spec/db/json/mysql2/carts.json"
176
+ file_content = File.read(file_path)
177
+ expect(File).to exist(file_path)
178
+ output = JSON.parse(file_content)
179
+ expect(output.length).to eql(26)
180
+ expect(output[0]["email"]).to eql("abby@example.com")
181
+ expect(output[25]["email"]).to eql("zach@example.com")
169
182
  end
170
183
  end
184
+
185
+ # describe "export db dumps" do
186
+ # it "should be able to export a full sql dump to a file" do
187
+ # pending("waiting to be written")
188
+ # raise "so were failing for now"
189
+ # end
190
+ # end
171
191
  end
172
192
  end
@@ -2,8 +2,9 @@ importer = Ferry::Importer.new
2
2
 
3
3
  Dir.chdir("spec") unless Dir.pwd.split('/').last == "spec"
4
4
 
5
- describe "#import" do
6
-
5
+ # TODO: import json tests - will need sample json file
6
+ # TODO: import db things - will need sample db file
7
+ describe "import" do
7
8
  describe "sqlite3 db" do
8
9
 
9
10
  before(:all) do
@@ -18,7 +19,7 @@ describe "#import" do
18
19
 
19
20
  it "should import a valid csv into ActiveRecord" do
20
21
  import_path = File.expand_path("..",Dir.pwd) + "/spec/support/categories_import.csv"
21
- importer.import("sqlite3", "categories", import_path)
22
+ importer.import_csv("sqlite3", "categories", import_path)
22
23
  expect(Category.all.length).to eql(146)
23
24
  expect(Category.find_by(id: 42).name).to eql("outdoor decor")
24
25
  expect(Category.find_by(id: 42).description).to eql("Pellentesque magna odio, blandit in nisi fringilla, commodo.")
@@ -27,29 +28,41 @@ describe "#import" do
27
28
  expect(Category.find_by(id: 9).name).to eql("boys' clothing")
28
29
  end
29
30
 
30
- #SQL INSERT tests
31
31
  it "should error if given a non-csv file" do
32
- expect{importer.import("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/categories_import.xml")}.to raise_error
32
+ expect{importer.import_csv("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/categories_import.xml")}.to raise_error
33
33
  end
34
34
 
35
35
  it "should error if file does not exist" do
36
- expect{importer.import("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/invalid.csv")}.to raise_error
36
+ expect{importer.import_csv("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/invalid.csv")}.to raise_error
37
37
  end
38
38
 
39
39
  it "should error if invalid table name" do
40
- expect{importer.import("sqlite3", "category", File.expand_path("..",Dir.pwd) + "/spec/support/categories_import.csv")}.to raise_error
40
+ expect{importer.import_csv("sqlite3", "category", File.expand_path("..",Dir.pwd) + "/spec/support/categories_import.csv")}.to raise_error
41
41
  end
42
42
 
43
43
  it "should error if columns are invalid" do
44
- expect{importer.import("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/categories_invalid_col.csv")}.to raise_error
44
+ expect{importer.import_csv("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/categories_invalid_col.csv")}.to raise_error
45
45
  end
46
46
 
47
47
  it "should error if values do not meet db constraints" do
48
- expect{importer.import("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/categories_null_name.csv")}.to raise_error
48
+ expect{importer.import_csv("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/categories_null_name.csv")}.to raise_error
49
+ expect{importer.import_csv("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/categories_repeat_id.csv")}.to raise_error
50
+ end
49
51
 
50
- expect{importer.import("sqlite3", "categories", File.expand_path("..",Dir.pwd) + "/spec/support/categories_repeat_id.csv")}.to raise_error
52
+ it "should be able to import a json file into ActiveRecord" do
53
+ import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_import.json"
54
+ importer.import_json("sqlite3", "carts", import_path)
55
+ expect(Cart.find_by(id: 42).email).to eql("Albert@example.com")
56
+ expect(Cart.find_by(id: 542).email).to eql("Agustu@example.com")
57
+ expect(Cart.find_by(id: 1042).email).to eql("Smith@example.com")
58
+ expect(Cart.find_by(id: 1542).email).to eql("Kare@example.com")
59
+ expect(Cart.find_by(id: 2042).email).to eql("Yolanda@example.com")
51
60
  end
52
61
 
62
+ # it "should be able to import a full sql dump" do
63
+ # pending("waiting to be written")
64
+ # raise "so were failing for now"
65
+ # end
53
66
  end
54
67
 
55
68
  describe "mass insert tests (sqlite)" do
@@ -65,8 +78,9 @@ describe "#import" do
65
78
  end
66
79
 
67
80
  it "should be able to import > 500 records" do
68
- import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_import.csv" #2100 records
69
- importer.import("sqlite3", "carts", import_path)
81
+ import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_import.csv"
82
+ importer.import_csv("sqlite3", "carts", import_path)
83
+ expect(Cart.all.length).to eql(2126)
70
84
  expect(Cart.find_by(id: 42).email).to eql("Albert@example.com")
71
85
  expect(Cart.find_by(id: 542).email).to eql("Agustu@example.com")
72
86
  expect(Cart.find_by(id: 1042).email).to eql("Smith@example.com")
@@ -75,33 +89,32 @@ describe "#import" do
75
89
  end
76
90
 
77
91
  it "should not commit import if any record errors" do
78
- import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_invalid.csv" #2100 records, last one is invalid
79
- expect{importer.import("sqlite3", "carts", import_path)}.to raise_error
92
+ import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_invalid.csv"
93
+ expect{importer.import_csv("sqlite3", "carts", import_path)}.to raise_error
80
94
  expect(Cart.find_by(id: 42)).to eql(nil)
81
95
  expect(Cart.find_by(id: 542)).to eql(nil)
82
96
  expect(Cart.find_by(id: 1042)).to eql(nil)
83
97
  expect(Cart.find_by(id: 1542)).to eql(nil)
84
98
  expect(Cart.find_by(id: 2042)).to eql(nil)
85
99
  end
86
-
87
100
  end
88
101
 
89
102
  describe "postgresql db" do
90
103
 
91
- before(:all) do
104
+ before(:each) do
92
105
  connect("postgresql")
93
- # requires you to have a ferry_test db in pg
94
106
  Contexts.setup
95
107
  end
96
108
 
97
- after(:all) do
109
+ after(:each) do
98
110
  Contexts.teardown
99
- Category.delete_all
111
+ Category.delete_all
112
+ Cart.delete_all
100
113
  end
101
114
 
102
115
  it "should import a valid csv into ActiveRecord" do
103
116
  import_path = File.expand_path("..",Dir.pwd) + "/spec/support/categories_import.csv"
104
- importer.import("postgresql", "categories", import_path)
117
+ importer.import_csv("postgresql", "categories", import_path)
105
118
  expect(Category.all.length).to eql(146)
106
119
  expect(Category.find_by(id: 42).name).to eql("outdoor decor")
107
120
  expect(Category.find_by(id: 42).description).to eql("Pellentesque magna odio, blandit in nisi fringilla, commodo.")
@@ -110,10 +123,23 @@ describe "#import" do
110
123
  expect(Category.find_by(id: 9).name).to eql("boys' clothing")
111
124
  end
112
125
 
126
+ it "should be able to import a json file correctly" do
127
+ import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_import.json"
128
+ importer.import_json("sqlite3", "carts", import_path)
129
+ expect(Cart.find_by(id: 42).email).to eql("Albert@example.com")
130
+ expect(Cart.find_by(id: 542).email).to eql("Agustu@example.com")
131
+ expect(Cart.find_by(id: 1042).email).to eql("Smith@example.com")
132
+ expect(Cart.find_by(id: 1542).email).to eql("Kare@example.com")
133
+ expect(Cart.find_by(id: 2042).email).to eql("Yolanda@example.com")
134
+ end
135
+
136
+ # it "should be able to import a full sql dump" do
137
+ # pending("waiting to be written")
138
+ # raise "so were failing for now"
139
+ # end
113
140
  end
114
141
 
115
142
  describe "mass insert tests (postgresql)" do
116
-
117
143
  before(:each) do
118
144
  connect("postgresql")
119
145
  Contexts.setup
@@ -124,44 +150,32 @@ describe "#import" do
124
150
  Cart.delete_all
125
151
  end
126
152
 
127
- it "should be able to import >500 records" do
128
- import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_import.csv" #2100 records
129
- importer.import("sqlite3", "carts", import_path)
130
- expect(Cart.find_by(id: 42).email).to eql("Albert@example.com")
131
- expect(Cart.find_by(id: 542).email).to eql("Agustu@example.com")
132
- expect(Cart.find_by(id: 1042).email).to eql("Smith@example.com")
133
- expect(Cart.find_by(id: 1542).email).to eql("Kare@example.com")
134
- expect(Cart.find_by(id: 2042).email).to eql("Yolanda@example.com")
135
- end
136
-
137
153
  it "should not commit import if any record errors" do
138
- import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_invalid.csv" #2100 records, last one is invalid
139
- expect{importer.import("sqlite3", "carts", import_path)}.to raise_error
154
+ import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_invalid.csv"
155
+ expect{importer.import_csv("sqlite3", "carts", import_path)}.to raise_error
140
156
  expect(Cart.find_by(id: 42)).to eql(nil)
141
157
  expect(Cart.find_by(id: 542)).to eql(nil)
142
158
  expect(Cart.find_by(id: 1042)).to eql(nil)
143
159
  expect(Cart.find_by(id: 1542)).to eql(nil)
144
160
  expect(Cart.find_by(id: 2042)).to eql(nil)
145
161
  end
146
-
147
162
  end
148
163
 
149
164
  describe "mysql2 db" do
150
-
151
165
  before(:all) do
152
166
  connect("mysql2")
153
- # requires you to have a ferry_test db in pg
154
167
  Contexts.setup
155
168
  end
156
169
 
157
170
  after(:all) do
158
171
  Contexts.teardown
159
172
  Category.delete_all
173
+ Cart.delete_all
160
174
  end
161
175
 
162
176
  it "should import a valid csv values into ActiveRecord" do
163
177
  import_path = File.expand_path("..",Dir.pwd) + "/spec/support/categories_import.csv"
164
- importer.import("mysql2", "categories", import_path)
178
+ importer.import_csv("mysql2", "categories", import_path)
165
179
  expect(Category.all.length).to eql(146)
166
180
  expect(Category.find_by(id: 42).name).to eql("outdoor decor")
167
181
  expect(Category.find_by(id: 42).description).to eql("Pellentesque magna odio, blandit in nisi fringilla, commodo.")
@@ -170,10 +184,23 @@ describe "#import" do
170
184
  expect(Category.find_by(id: 9).name).to eql("boys' clothing")
171
185
  end
172
186
 
187
+ it "should be able to import a json file correctly" do
188
+ import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_import.json"
189
+ importer.import_json("sqlite3", "carts", import_path)
190
+ expect(Cart.find_by(id: 42).email).to eql("Albert@example.com")
191
+ expect(Cart.find_by(id: 542).email).to eql("Agustu@example.com")
192
+ expect(Cart.find_by(id: 1042).email).to eql("Smith@example.com")
193
+ expect(Cart.find_by(id: 1542).email).to eql("Kare@example.com")
194
+ expect(Cart.find_by(id: 2042).email).to eql("Yolanda@example.com")
195
+ end
196
+
197
+ # it "should be able to import a full sql dump" do
198
+ # pending("waiting to be written")
199
+ # raise "so were failing for now"
200
+ # end
173
201
  end
174
202
 
175
203
  describe "mass insert tests (mysql2)" do
176
-
177
204
  before(:each) do
178
205
  connect("mysql2")
179
206
  Contexts.setup
@@ -185,25 +212,13 @@ describe "#import" do
185
212
  end
186
213
 
187
214
  it "should be able to import >500 records" do
188
- import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_import.csv" #2100 records
189
- importer.import("sqlite3", "carts", import_path)
215
+ import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_import.csv"
216
+ importer.import_csv("sqlite3", "carts", import_path)
190
217
  expect(Cart.find_by(id: 42).email).to eql("Albert@example.com")
191
218
  expect(Cart.find_by(id: 542).email).to eql("Agustu@example.com")
192
219
  expect(Cart.find_by(id: 1042).email).to eql("Smith@example.com")
193
220
  expect(Cart.find_by(id: 1542).email).to eql("Kare@example.com")
194
221
  expect(Cart.find_by(id: 2042).email).to eql("Yolanda@example.com")
195
222
  end
196
-
197
- it "should not commit import if any record errors" do
198
- import_path = File.expand_path("..",Dir.pwd) + "/spec/support/emails_invalid.csv" #2100 records, last one is invalid
199
- expect{importer.import("sqlite3", "carts", import_path)}.to raise_error
200
- expect(Cart.find_by(id: 42)).to eql(nil)
201
- expect(Cart.find_by(id: 542)).to eql(nil)
202
- expect(Cart.find_by(id: 1042)).to eql(nil)
203
- expect(Cart.find_by(id: 1542)).to eql(nil)
204
- expect(Cart.find_by(id: 2042)).to eql(nil)
205
- end
206
-
207
223
  end
208
-
209
224
  end