diff options
author | diosmosis <diosmosis@users.noreply.github.com> | 2019-11-18 10:08:16 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-18 10:08:16 +0300 |
commit | 60009312a44f1aa728a0f9f6f7e0a8a59068544d (patch) | |
tree | 2b037e8abdf08ed024946a6a841757162ea9443f /tests | |
parent | 12011166e3934f1d76f2d183a63cfe2ff9bde8e6 (diff) |
Add product name, product category, product sku, product price segments (#15144)
* Add product category segment.
* Fix productCategory action, add productName, productSku, productPrice segments.
* Hide productCategory1...5 segments in UI/API.
* fix tests
* Do not select conversion items that are deleted in segments + fix bug in ecommerce item insert (do not fail whole insert if one duplicate primary key is found).
* update expected files
* Fix unit test.
Diffstat (limited to 'tests')
4 files changed, 80 insertions, 5 deletions
diff --git a/tests/PHPUnit/Fixtures/TwoSitesEcommerceOrderWithItems.php b/tests/PHPUnit/Fixtures/TwoSitesEcommerceOrderWithItems.php index 85753eacb1..9c24915796 100644 --- a/tests/PHPUnit/Fixtures/TwoSitesEcommerceOrderWithItems.php +++ b/tests/PHPUnit/Fixtures/TwoSitesEcommerceOrderWithItems.php @@ -114,6 +114,15 @@ class TwoSitesEcommerceOrderWithItems extends Fixture $t->setCustomVariable(3, 'VisitorName', 'Great name!', 'visit'); $t->addEcommerceItem($sku = 'SKU VERY nice indeed', $name = 'PRODUCT name', $category = 'Electronics & Cameras', $price = 500, $quantity = 1); $t->addEcommerceItem($sku = 'SKU VERY nice indeed', $name = 'PRODUCT name', $category = 'Electronics & Cameras', $price = 500, $quantity = 2); + $t->addEcommerceItem($sku = 'SKU VERY nice indeed REMOVED', $name = 'PRODUCT name REMOVED', $category = 'Electronics & Cameras REMOVED', $price = 300, $quantity = 1); + $t->addEcommerceItem($sku = 'SKU WILL BE DELETED', $name = 'BLABLA DELETED', $category = '', $price = 5000000, $quantity = 20); + self::checkResponse($t->doTrackEcommerceCartUpdate($grandTotal = 1300)); + + // REMOVE FROM CART + $t->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(1.95)->getDatetime()); + $t->setCustomVariable(3, 'VisitorName', 'Great name!', 'visit'); + $t->addEcommerceItem($sku = 'SKU VERY nice indeed', $name = 'PRODUCT name', $category = 'Electronics & Cameras', $price = 500, $quantity = 1); + $t->addEcommerceItem($sku = 'SKU VERY nice indeed', $name = 'PRODUCT name', $category = 'Electronics & Cameras', $price = 500, $quantity = 2); $t->addEcommerceItem($sku = 'SKU WILL BE DELETED', $name = 'BLABLA DELETED', $category = '', $price = 5000000, $quantity = 20); self::checkResponse($t->doTrackEcommerceCartUpdate($grandTotal = 1000)); diff --git a/tests/PHPUnit/Integration/Tracker/ModelTest.php b/tests/PHPUnit/Integration/Tracker/ModelTest.php index 7023cd502f..b14c066afc 100644 --- a/tests/PHPUnit/Integration/Tracker/ModelTest.php +++ b/tests/PHPUnit/Integration/Tracker/ModelTest.php @@ -124,7 +124,7 @@ class ModelTest extends IntegrationTestCase public function test_createEcommerceItems_shouldNotFail_IfWritingSameItemTwice() { - $item = array(array( + $item = array( 'idsite' => '1', 'idvisitor' => 'test', 'server_time' => '2014-01-01 00:00:00', @@ -140,9 +140,44 @@ class ModelTest extends IntegrationTestCase 'price' => '10.00', 'quantity' => '1', 'deleted' => '0' - )); - $this->model->createEcommerceItems($item); - $this->model->createEcommerceItems($item); + ); + $item2 = [ + 'idsite' => '1', + 'idvisitor' => 'test', + 'server_time' => '2014-01-01 00:00:00', + 'idvisit' => '1', + 'idorder' => '12', + 'idaction_sku' => '2', + 'idaction_name' => '2', + 'idaction_category' => '3', + 'idaction_category2' => '4', + 'idaction_category3' => '5', + 'idaction_category4' => '6', + 'idaction_category5' => '7', + 'price' => '20.00', + 'quantity' => '1', + 'deleted' => '0' + ]; + $this->model->createEcommerceItems([$item]); + $this->model->createEcommerceItems([$item, $item2]); + + $itemsInDb = Db::fetchAll("SELECT idsite, HEX(idvisitor) as idvisitor, idorder, idaction_sku FROM " . Common::prefixTable('log_conversion_item')); + $expectedItemsInDb = [ + [ + 'idsite' => '1', + 'idvisitor' => '7465737400000000', + 'idorder' => '12', + 'idaction_sku' => '1', + ], + [ + 'idsite' => '1', + 'idvisitor' => '7465737400000000', + 'idorder' => '12', + 'idaction_sku' => '2', + ], + ]; + + $this->assertEquals($expectedItemsInDb, $itemsInDb); } private function assertLogActionTableContainsTestAction($idaction) diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml index df3871e875..f9dd89dce7 100644 --- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml +++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml @@ -723,4 +723,35 @@ <name>Order ID</name> <segment>orderId</segment> </row> + <row> + <type>metric</type> + <category>Ecommerce</category> + <name>Product Price</name> + <segment>productPrice</segment> + </row> + <row> + <type>dimension</type> + <category>Ecommerce</category> + <name>Product Category</name> + <segment>productCategory</segment> + <unionOfSegments> + <row>productCategory1</row> + <row>productCategory2</row> + <row>productCategory3</row> + <row>productCategory4</row> + <row>productCategory5</row> + </unionOfSegments> + </row> + <row> + <type>dimension</type> + <category>Ecommerce</category> + <name>Product Name</name> + <segment>productName</segment> + </row> + <row> + <type>dimension</type> + <category>Ecommerce</category> + <name>Product SKU</name> + <segment>productSku</segment> + </row> </result>
\ No newline at end of file diff --git a/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php b/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php index bc476d30bf..0e2d305aff 100644 --- a/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php +++ b/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php @@ -261,7 +261,7 @@ class JoinGeneratorTest extends \PHPUnit_Framework_TestCase $expected .= 'LEFT JOIN log_link_visit_action AS log_link_visit_action ON log_link_visit_action.idaction_url = log_action.idaction '; $expected .= 'LEFT JOIN log_visit AS log_visit ON log_visit.idvisit = log_link_visit_action.idvisit '; $expected .= 'LEFT JOIN log_conversion AS log_conversion ON log_conversion.idvisit = log_link_visit_action.idvisit '; - $expected .= 'LEFT JOIN log_conversion_item AS log_conversion_item ON log_conversion_item.idvisit = log_link_visit_action.idvisit'; + $expected .= 'LEFT JOIN log_conversion_item AS log_conversion_item ON log_conversion_item.idvisit = log_link_visit_action.idvisit AND `log_conversion_item`.deleted = 0'; $this->assertEquals($expected, $generator->getJoinString()); } |