|
6 | 6 | use Yajra\SQLLoader\SQLLoader;
|
7 | 7 | use Yajra\SQLLoader\TnsBuilder;
|
8 | 8 |
|
9 |
| -use function PHPUnit\Framework\assertInstanceOf; |
10 |
| -use function PHPUnit\Framework\assertStringContainsString; |
11 |
| - |
12 | 9 | test('it throws an error on invalid/non-existent file', function () {
|
13 | 10 | $loader = new SQLLoader(['skip=1', 'load=2']);
|
14 | 11 | $loader->inFile('file.dat');
|
15 | 12 | })->throws(InvalidArgumentException::class, 'File [file.dat] does not exist.');
|
16 | 13 |
|
17 | 14 | test('it can create an instance and build the command', function () {
|
18 |
| - assertInstanceOf(SQLLoader::class, SQLLoader::make()); |
| 15 | + expect(SQLLoader::make())->toBeInstanceOf(SQLLoader::class); |
19 | 16 |
|
20 | 17 | $file = __DIR__.'/../data/users.dat';
|
21 | 18 |
|
|
24 | 21 | ->as('users.ctl')
|
25 | 22 | ->into('users', ['id', 'name', 'email']);
|
26 | 23 |
|
27 |
| - assertInstanceOf(SQLLoader::class, $loader); |
| 24 | + expect($loader)->toBeInstanceOf(SQLLoader::class); |
28 | 25 |
|
29 | 26 | $controlFile = $loader->buildControlFile();
|
30 |
| - assertStringContainsString('OPTIONS(skip=1, load=2)', $controlFile); |
31 |
| - assertStringContainsString("INFILE '{$file}'", $controlFile); |
32 |
| - assertStringContainsString("BADFILE 'users.bad'", $controlFile); |
33 |
| - assertStringContainsString("DISCARDFILE 'users.dis'", $controlFile); |
34 |
| - assertStringContainsString('DISCARDMAX 1', $controlFile); |
35 |
| - assertStringContainsString('APPEND', $controlFile); |
36 |
| - assertStringContainsString('INTO TABLE users', $controlFile); |
37 |
| - assertStringContainsString("FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'", $controlFile); |
38 |
| - assertStringContainsString('(', $controlFile); |
39 |
| - assertStringContainsString(' id,', $controlFile); |
40 |
| - assertStringContainsString(' name,', $controlFile); |
41 |
| - assertStringContainsString(' email', $controlFile); |
42 |
| - assertStringContainsString(')', $controlFile); |
| 27 | + |
| 28 | + expect($controlFile)->toBeString() |
| 29 | + ->toContain('OPTIONS(skip=1, load=2)') |
| 30 | + ->toContain("INFILE '{$file}'") |
| 31 | + ->toContain("BADFILE 'users.bad'") |
| 32 | + ->toContain("DISCARDFILE 'users.dis'") |
| 33 | + ->toContain('DISCARDMAX 1') |
| 34 | + ->toContain('APPEND') |
| 35 | + ->toContain('INTO TABLE users') |
| 36 | + ->toContain("FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'") |
| 37 | + ->toContain('(') |
| 38 | + ->toContain(' id,') |
| 39 | + ->toContain(' name,') |
| 40 | + ->toContain(' email') |
| 41 | + ->toContain(')'); |
43 | 42 | });
|
44 | 43 |
|
45 | 44 | test('sqlldr process is invoked', function () {
|
|
134 | 133 | ->execute();
|
135 | 134 |
|
136 | 135 | $controlFile = $loader->buildControlFile();
|
137 |
| - assertStringContainsString("\"NAME\",\n", $controlFile); |
138 |
| - assertStringContainsString("\"EMAIL\",\n", $controlFile); |
139 |
| - assertStringContainsString('"PHONE" FILLER', $controlFile); |
140 |
| - assertStringContainsString('"CREATED_AT" DATE', $controlFile); |
| 136 | + |
| 137 | + expect($controlFile)->toBeString() |
| 138 | + ->toContain("INFILE '".__DIR__.'/../data/filler.dat') |
| 139 | + ->toContain('INTO TABLE users') |
| 140 | + ->toContain('FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\'') |
| 141 | + ->toContain('TRAILING NULLCOLS') |
| 142 | + ->toContain('(') |
| 143 | + ->toContain('"NAME",') |
| 144 | + ->toContain('"EMAIL",') |
| 145 | + ->toContain('"PHONE" FILLER', $controlFile) |
| 146 | + ->toContain('"CREATED_AT" DATE') |
| 147 | + ->toContain(')'); |
141 | 148 | });
|
142 | 149 |
|
143 | 150 | test('it can detect BOOLEAN columns and set the default value if empty', function () {
|
|
151 | 158 | ->execute();
|
152 | 159 |
|
153 | 160 | $controlFile = $loader->buildControlFile();
|
154 |
| - assertStringContainsString("\"NAME\",\n", $controlFile); |
155 |
| - assertStringContainsString("\"EMAIL\",\n", $controlFile); |
156 |
| - assertStringContainsString('"PHONE" FILLER', $controlFile); |
157 |
| - assertStringContainsString('"CREATED_AT" DATE', $controlFile); |
158 |
| - assertStringContainsString("\"IS_ACTIVE\" \"DECODE(:is_active, '', '1', :is_active)\"", $controlFile); |
| 161 | + |
| 162 | + expect($controlFile)->toBeString() |
| 163 | + ->toContain('"NAME"') |
| 164 | + ->toContain('"EMAIL"') |
| 165 | + ->toContain('"PHONE" FILLER') |
| 166 | + ->toContain('"CREATED_AT" DATE') |
| 167 | + ->toContain('"IS_ACTIVE" "DECODE(:is_active, \'\', \'1\', :is_active)"'); |
159 | 168 | });
|
160 | 169 |
|
161 | 170 | test('it can detect BOOLEAN columns and set the default value to 0 if no default was defined', function () {
|
|
169 | 178 | ->execute();
|
170 | 179 |
|
171 | 180 | $controlFile = $loader->buildControlFile();
|
172 |
| - assertStringContainsString("\"NAME\",\n", $controlFile); |
173 |
| - assertStringContainsString("\"EMAIL\",\n", $controlFile); |
174 |
| - assertStringContainsString('"PHONE" FILLER', $controlFile); |
175 |
| - assertStringContainsString('"CREATED_AT" DATE', $controlFile); |
176 |
| - assertStringContainsString("\"IS_ACTIVE\" \"DECODE(:is_active, '', '0', :is_active)\"", $controlFile); |
| 181 | + |
| 182 | + expect($controlFile)->toBeString() |
| 183 | + ->toContain('"NAME"') |
| 184 | + ->toContain('"EMAIL"') |
| 185 | + ->toContain('"PHONE" FILLER') |
| 186 | + ->toContain('"CREATED_AT" DATE') |
| 187 | + ->toContain('"IS_ACTIVE" "DECODE(:is_active, \'\', \'0\', :is_active)"'); |
177 | 188 | });
|
178 | 189 |
|
179 | 190 | test('it accepts withHeader on input file with wildcard', function () {
|
|
188 | 199 | ->execute();
|
189 | 200 |
|
190 | 201 | $controlFile = $loader->buildControlFile();
|
191 |
| - assertStringContainsString("INFILE '{$path}'", $controlFile); |
192 |
| - assertStringContainsString('INTO TABLE users', $controlFile); |
193 |
| - assertStringContainsString('FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\'', $controlFile); |
194 |
| - assertStringContainsString('TRAILING NULLCOLS', $controlFile); |
195 |
| - assertStringContainsString('(', $controlFile); |
196 |
| - assertStringContainsString('"NAME",', $controlFile); |
197 |
| - assertStringContainsString('"EMAIL"', $controlFile); |
198 |
| - assertStringContainsString(')', $controlFile); |
| 202 | + |
| 203 | + expect($controlFile)->toBeString() |
| 204 | + ->toContain("INFILE '{$path}'") |
| 205 | + ->toContain('INTO TABLE users') |
| 206 | + ->toContain('FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\'') |
| 207 | + ->toContain('TRAILING NULLCOLS') |
| 208 | + ->toContain('(') |
| 209 | + ->toContain('"NAME",') |
| 210 | + ->toContain('"EMAIL"') |
| 211 | + ->toContain(')'); |
199 | 212 | });
|
0 commit comments