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:
@@ -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"] = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user