Add document tests and use left join instead of inner join for documents

modifié:         core/lib/Thelia/ImportExport/Export/Type/ContentExport.php
	modifié:         core/lib/Thelia/Tests/ImportExport/Export/ContentExportTest.php
This commit is contained in:
Benjamin Perche
2014-08-04 11:40:16 +02:00
parent 018ddb642b
commit 83db209adf
2 changed files with 64 additions and 4 deletions

View File

@@ -103,18 +103,20 @@ class ContentExport extends ExportHandler implements
->useContentImageQuery("content_image_join", Criteria::LEFT_JOIN)
->addAsColumn("content_IMAGES", "GROUP_CONCAT(DISTINCT `content_image_join`.FILE)")
->addSelectColumn("content_IMAGES")
->groupByContentId()
->endUse()
->_endif()
->_if($this->isDocumentExport())
->useContentDocumentQuery()
->addAsColumn("content_DOCUMENTS", "GROUP_CONCAT(DISTINCT ".ContentDocumentTableMap::FILE.")")
->useContentDocumentQuery("content_document_join", Criteria::LEFT_JOIN)
->addAsColumn("content_DOCUMENTS", "GROUP_CONCAT(DISTINCT `content_document_join`.FILE)")
->addSelectColumn("content_DOCUMENTS")
->groupByContentId()
->endUse()
->_endif()
->useContentFolderQuery(null, Criteria::LEFT_JOIN)
->useFolderQuery(null, Criteria::LEFT_JOIN)
->_if($this->isDocumentExport())
->useFolderDocumentQuery()
->useFolderDocumentQuery(null, Criteria::LEFT_JOIN)
->addAsColumn("folder_DOCUMENTS", "GROUP_CONCAT(DISTINCT ".FolderDocumentTableMap::FILE.")")
->addSelectColumn("folder_DOCUMENTS")
->endUse()
@@ -159,6 +161,7 @@ class ContentExport extends ExportHandler implements
->addAsColumn("url_URL", RewritingUrlTableMap::URL)
->groupBy(ContentTableMap::ID)
->groupBy("folder_ID")
->orderById()
;
return $query;
@@ -202,7 +205,7 @@ class ContentExport extends ExportHandler implements
}
if (isset($line["content_DOCUMENTS"])) {
$line["content_IMAGES"] = "";
$line["content_DOCUMENTS"] = "";
}
}
}

View File

@@ -14,13 +14,17 @@ namespace Thelia\Tests\ImportExport\Export;
use Symfony\Component\DependencyInjection\Container;
use Thelia\Core\Translation\Translator;
use Thelia\ImportExport\Export\Type\ContentExport;
use Thelia\Model\ContentDocumentQuery;
use Thelia\Model\ContentFolderQuery;
use Thelia\Model\ContentImageQuery;
use Thelia\Model\ContentQuery;
use Thelia\Model\FolderDocumentQuery;
use Thelia\Model\FolderImageQuery;
use Thelia\Model\FolderQuery;
use Thelia\Model\Lang;
use Thelia\Model\Map\ContentDocumentTableMap;
use Thelia\Model\Map\ContentImageTableMap;
use Thelia\Model\Map\FolderDocumentTableMap;
use Thelia\Model\Map\FolderImageTableMap;
use Thelia\Model\Map\FolderTableMap;
@@ -157,4 +161,57 @@ class ContentExportTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($folderImages, $data[$i]["folder_images"]);
}
}
public function testQueryDocument()
{
$data = $this->handler
->setDocumentExport(true)
->buildData($this->lang)
->getData()
;
$max = count($data);
if ($max > 50) {
$max = 50;
}
for ($i = 0; $i < $max; ++$i) {
$documents = ContentDocumentQuery::create()
->filterByContentId($data[$i]["id"])
->select(ContentDocumentTableMap::FILE)
->find()
->toArray()
;
$documentsString = implode(",", $documents);
if (empty($data[$i]["content_documents"])) {
$j = 1;
while ($data[$i-$j]["id"] === $data[$i]["id"]) {
if (!empty($data[$i - $j++]["content_documents"])) {
$data[$i]["content_documents"] = $data[$i-$j+1]["content_documents"];
break;
}
}
}
$this->assertEquals($documentsString, $data[$i]["content_documents"]);
$folderDocuments = FolderDocumentQuery::create()
->useFolderQuery()
->useContentFolderQuery()
->filterByContentId($data[$i]["id"])
->filterByFolderId($data[$i]["folder_id"])
->endUse()
->endUse()
->select(FolderDocumentTableMap::FILE)
->find()
->toArray()
;
$folderDocuments = implode(",", $folderDocuments);
$this->assertEquals($folderDocuments, $data[$i]["folder_documents"]);
}
}
}