/** * @covers sAdmin::sGetCountryStateTranslation */ public function testsGetCountryStateTranslation() { // Backup existing data and inject demo data $existingData = Shopware()->Db()->fetchRow("\n SELECT * FROM s_core_translations\n WHERE objecttype = 'config_country_states' AND objectlanguage = 1\n "); $demoData = array('objectkey' => 1, 'objectlanguage' => 1, 'objecttype' => 'config_country_states', 'objectdata' => 'a:2:{i:24;a:1:{s:4:"name";s:10:"California";}i:23;a:1:{s:4:"name";s:18:"Arkansas (english)";}}'); if ($existingData) { Shopware()->Db()->update('s_core_translations', $demoData, 'id = ' . $existingData['id']); } else { Shopware()->Db()->insert('s_core_translations', $demoData); } // Test with default shop, return empty array $this->assertCount(0, $this->module->sGetCountryStateTranslation()); // Hack the current system shop, so we can properly test this Shopware()->Shop()->setDefault(false); $result = $this->module->sGetCountryStateTranslation(); $this->assertCount(2, $result); $this->assertArrayHasKey(23, $result); $this->assertArrayHasKey(24, $result); $this->assertArrayHasKey('name', $result[23]); $this->assertArrayHasKey('name', $result[24]); $this->assertEquals('Arkansas (english)', $result[23]['name']); $this->assertEquals('California', $result[24]['name']); // Create a stub of a Shop for fallback. $stub = $this->getMockBuilder('\\Shopware\\Models\\Shop\\Shop')->setMethods(array('getId'))->disableOriginalConstructor()->getMock(); $stub->expects($this->any())->method('getId')->will($this->returnValue(10000)); Shopware()->Shop()->setFallback($stub); Shopware()->Db()->insert('s_core_translations', array('objectkey' => 1, 'objectlanguage' => 10000, 'objecttype' => 'config_country_states', 'objectdata' => 'a:1:{i:2;a:1:{s:4:"name";s:13:"asdfasfdasdfa";}}')); // Test with fallback $result = $this->module->sGetCountryStateTranslation(); $this->assertCount(3, $result); $this->assertArrayHasKey(2, $result); $this->assertArrayHasKey(23, $result); $this->assertArrayHasKey(24, $result); $this->assertArrayHasKey('name', $result[2]); $this->assertArrayHasKey('name', $result[23]); $this->assertArrayHasKey('name', $result[24]); $this->assertEquals('asdfasfdasdfa', $result[2]['name']); $this->assertEquals('Arkansas (english)', $result[23]['name']); $this->assertEquals('California', $result[24]['name']); // If backup data exists, restore it if ($existingData) { $existingDataId = $existingData['id']; unset($existingData['id']); Shopware()->Db()->update('s_core_translations', $existingData, 'id = ' . $existingDataId); } Shopware()->Db()->delete('s_core_translations', 'objectlanguage = 10000'); }
/** * @covers sAdmin::sGetCountryStateTranslation */ public function testsGetCountryStateTranslation() { // Backup existing data and inject demo data $existingData = Shopware()->Db()->fetchRow("\n SELECT * FROM s_core_translations\n WHERE objecttype = 'config_country_states' AND objectlanguage = 1\n "); $demoData = array('objectkey' => 1, 'objectlanguage' => 1, 'objecttype' => 'config_country_states', 'objectdata' => serialize(array(24 => array('name' => 'California'), 23 => array('name' => 'Arkansas (english)')))); if ($existingData) { Shopware()->Db()->update('s_core_translations', $demoData, 'id = ' . $existingData['id']); } else { Shopware()->Db()->insert('s_core_translations', $demoData); } // Test with default shop, return empty array $this->assertCount(0, $this->module->sGetCountryStateTranslation()); // Hack the current system shop, so we can properly test this Shopware()->Shop()->setDefault(false); $result = $this->module->sGetCountryStateTranslation(); $this->assertCount(2, $result); $this->assertArrayHasKey(23, $result); $this->assertArrayHasKey(24, $result); $this->assertArrayHasKey('name', $result[23]); $this->assertArrayHasKey('name', $result[24]); $this->assertEquals('Arkansas (english)', $result[23]['name']); $this->assertEquals('California', $result[24]['name']); // Create a stub of a Shop for fallback. $shopFallbackId = Shopware()->Container()->get('shopware_storefront.context_service')->getShopContext()->getShop()->getFallbackId(); Shopware()->Container()->get('shopware_storefront.context_service')->getShopContext()->getShop()->setFallbackId(10000); Shopware()->Db()->insert('s_core_translations', array('objectkey' => 1, 'objectlanguage' => 10000, 'objecttype' => 'config_country_states', 'objectdata' => serialize(array(2 => array('name' => 'asdfasfdasdfa'))))); // Test with fallback $result = $this->module->sGetCountryStateTranslation(); $this->assertCount(3, $result); $this->assertArrayHasKey(2, $result); $this->assertArrayHasKey(23, $result); $this->assertArrayHasKey(24, $result); $this->assertArrayHasKey('name', $result[2]); $this->assertArrayHasKey('name', $result[23]); $this->assertArrayHasKey('name', $result[24]); $this->assertEquals('asdfasfdasdfa', $result[2]['name']); $this->assertEquals('Arkansas (english)', $result[23]['name']); $this->assertEquals('California', $result[24]['name']); // If backup data exists, restore it if ($existingData) { $existingDataId = $existingData['id']; unset($existingData['id']); Shopware()->Db()->update('s_core_translations', $existingData, 'id = ' . $existingDataId); } Shopware()->Db()->delete('s_core_translations', 'objectlanguage = 10000'); Shopware()->Container()->get('shopware_storefront.context_service')->getShopContext()->getShop()->setFallbackId($shopFallbackId); }