Source of file CsvBulkLoaderSourceTest.php
Size: 3,349 Bytes - Last Modified: 2021-12-24T05:16:49+00:00
/var/www/docs.ssmods.com/process/src/tests/CsvBulkLoaderSourceTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | <?php namespace ilateral\SilverStripe\ImportExport\Tests; use SilverStripe\Dev\SapphireTest; use ilateral\SilverStripe\ImportExport\BulkLoader\Sources\CsvBulkLoaderSource; class CsvBulkLoaderSourceTest extends SapphireTest { public function testConfiguration() { $source = new CsvBulkLoaderSource(); $source->setFilePath("asdf.csv") ->setFieldDelimiter("|") ->setFieldEnclosure(":") ->setHasHeader(false); $this->assertEquals("asdf.csv", $source->getFilePath()); $this->assertEquals("|", $source->getFieldDelimiter()); $this->assertEquals(":", $source->getFieldEnclosure()); $this->assertEquals(false, $source->getHasHeader()); } public function testNoHeaderFile() { $source = new CsvBulkLoaderSource(); $source->setFilePath(dirname(__FILE__)."/fixtures/Players.csv") ->setHasHeader(false); $rowassertions = array( array("John", "He's a good guy", "ignored", "31/01/1988", "1"), array("Jane", "She is awesome.\\nSo awesome that she gets multiple rows and \\\"escaped\\\" strings in her biography", "ignored", "31/01/1982", "0"), array("Jamie","Pretty old\, with an escaped comma","ignored","31/01/1882","1"), array("Järg","Unicode FTW","ignored","31/06/1982","1"), //empty rows are skipped by default array("","nobio missing data","ignored") ); $iterator = $source->getIterator(); $count = 0; foreach ($iterator as $record) { $this->assertEquals( $rowassertions[$count], $record, "Row $count is valid" ); $count++; } } /** * @group testme */ public function testWithHeaderFile() { $source = new CsvBulkLoaderSource(); $source->setFilePath(dirname(__FILE__)."/fixtures/Players_WithHeader.csv") ->setHasHeader(true); $rowassertions = array( array("FirstName"=>"John", "Biography"=>"He's a good guy", "Ignore"=>"ignored", "Birthday"=>"31/01/1988", "IsRegistered"=>"1"), array("FirstName"=>"Jane", "Biography"=>"She is awesome.\\nSo awesome that she gets multiple rows and \\\"escaped\\\" strings in her biography", "Ignore"=>"ignored", "Birthday"=>"31/01/1982", "IsRegistered"=>"0"), array("FirstName"=>"Jamie","Biography"=>"Pretty old\, with an escaped comma","Ignore"=>"ignored","Birthday"=>"31/01/1882","IsRegistered"=>"1"), array("FirstName"=>"Järg","Biography"=>"Unicode FTW","Ignore"=>"ignored","Birthday"=>"31/06/1982","IsRegistered"=>"1"), //empty rows are skipped by default array("FirstName"=>"","Biography"=>"nobio missing data","Ignore"=>"ignored") ); $iterator = $source->getIterator(); $count = 0; foreach ($iterator as $record) { $this->assertEquals( $rowassertions[$count], $record, "Row $count is valid" ); $count++; } //assert header is correct $this->assertEquals( $source->getFirstRow(), array("FirstName", "Biography", "Ignore", "Birthday", "IsRegistered") ); } } |