Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
EcomDev_PHPUnit
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Open
EcomDev_PHPUnit
Commits
ccf93cc0
Commit
ccf93cc0
authored
Jul 31, 2013
by
Ivan Chepurnyi
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #120 from aligent/feature/attribute_fixture_loader
Re-enable Attribute fixture loader
parents
66923042
40a66db2
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
233 additions
and
5 deletions
+233
-5
app/code/community/EcomDev/PHPUnit/Model/Fixture.php
app/code/community/EcomDev/PHPUnit/Model/Fixture.php
+2
-0
app/code/community/EcomDev/PHPUnit/Model/Fixture/Processor/Attributes.php
...ty/EcomDev/PHPUnit/Model/Fixture/Processor/Attributes.php
+144
-0
app/code/community/EcomDev/PHPUnit/Model/Mysql4/Fixture/Attribute/Abstract.php
...omDev/PHPUnit/Model/Mysql4/Fixture/Attribute/Abstract.php
+79
-1
app/code/community/EcomDev/PHPUnit/Model/Mysql4/Fixture/Eav/Catalog/Product.php
...mDev/PHPUnit/Model/Mysql4/Fixture/Eav/Catalog/Product.php
+5
-1
app/code/community/EcomDev/PHPUnit/Test/Case/Controller.php
app/code/community/EcomDev/PHPUnit/Test/Case/Controller.php
+1
-1
app/code/community/EcomDev/PHPUnit/etc/config.xml
app/code/community/EcomDev/PHPUnit/etc/config.xml
+2
-2
No files found.
app/code/community/EcomDev/PHPUnit/Model/Fixture.php
View file @
ccf93cc0
...
@@ -36,6 +36,8 @@ class EcomDev_PHPUnit_Model_Fixture
...
@@ -36,6 +36,8 @@ class EcomDev_PHPUnit_Model_Fixture
// Configuration path for attribute loaders
// Configuration path for attribute loaders
const
XML_PATH_FIXTURE_ATTRIBUTE_LOADERS
=
'phpunit/suite/fixture/attribute'
;
const
XML_PATH_FIXTURE_ATTRIBUTE_LOADERS
=
'phpunit/suite/fixture/attribute'
;
// Default attribute loader class alias
const
DEFAULT_ATTRIBUTE_LOADER_CLASS
=
'ecomdev_phpunit/fixture_attribute_default'
;
// Default eav loader class node in loaders configuration
// Default eav loader class node in loaders configuration
/* @deprecated since 0.3.0 */
/* @deprecated since 0.3.0 */
...
...
app/code/community/EcomDev/PHPUnit/Model/Fixture/Processor/Attributes.php
0 → 100644
View file @
ccf93cc0
<?php
/**
* PHP Unit test suite for Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
* @category EcomDev
* @package EcomDev_PHPUnit
* @copyright Copyright (c) 2013 EcomDev BV (http://www.ecomdev.org)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @author Ivan Chepurnyi <ivan.chepurnyi@ecomdev.org>
* @author Steve Rice <srice@endertech.com>
* @author Jonathan Day <jonathan@aligent.com.au>
*/
class
EcomDev_PHPUnit_Model_Fixture_Processor_Attributes
extends
Mage_Core_Model_Abstract
implements
EcomDev_PHPUnit_Model_Fixture_Processor_Interface
{
const
STORAGE_KEY
=
'entities'
;
// Configuration path for attribute loaders
const
XML_PATH_FIXTURE_ATTRIBUTE_LOADERS
=
'phpunit/suite/fixture/attribute'
;
// Default attribute loader class node in loaders configuration
const
DEFAULT_ATTRIBUTE_LOADER_NODE
=
'default'
;
// Default attribute loader class alias
const
DEFAULT_ATTRIBUTE_LOADER_CLASS
=
'ecomdev_phpunit/fixture_attribute_default'
;
/**
* Initialize fixture resource model
*/
protected
function
_construct
()
{
$this
->
_init
(
'ecomdev_phpunit/fixture'
);
}
/**
* Does nothing
*
* @param EcomDev_PHPUnit_Model_Fixture_Interface $fixture
* @return EcomDev_PHPUnit_Model_Fixture_Processor_Attributes
*/
public
function
initialize
(
EcomDev_PHPUnit_Model_Fixture_Interface
$fixture
)
{
return
$this
;
}
/**
* Retrieves attribute loader for a particular attribute type
*
* @param string $entityType
* @return EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
*/
protected
function
_getAttributeLoader
(
$entityType
)
{
$loaders
=
Mage
::
getConfig
()
->
getNode
(
self
::
XML_PATH_FIXTURE_ATTRIBUTE_LOADERS
);
if
(
isset
(
$loaders
->
$entityType
))
{
$classAlias
=
(
string
)
$loaders
->
$entityType
;
}
elseif
(
isset
(
$loaders
->
{
self
::
DEFAULT_ATTRIBUTE_LOADER_NODE
}))
{
$classAlias
=
(
string
)
$loaders
->
{
self
::
DEFAULT_ATTRIBUTE_LOADER_NODE
};
}
else
{
$classAlias
=
self
::
DEFAULT_ATTRIBUTE_LOADER_CLASS
;
}
return
Mage
::
getResourceSingleton
(
$classAlias
);
}
/**
* Apply attribute records from fixture file
*
* @param array $data
* @param string $key
* @param EcomDev_PHPUnit_Model_Fixture_Interface $fixture
*
* @return EcomDev_PHPUnit_Model_Fixture_Processor_Attributes
*/
public
function
apply
(
array
$data
,
$key
,
EcomDev_PHPUnit_Model_Fixture_Interface
$fixture
)
{
$attributeLoaders
=
array
();
$this
->
getResource
()
->
beginTransaction
();
foreach
(
$data
as
$entityType
=>
$values
)
{
$attributeLoaders
[]
=
$this
->
_getAttributeLoader
(
$entityType
)
->
setFixture
(
$fixture
)
->
setOptions
(
$fixture
->
getOptions
())
->
loadAttribute
(
$entityType
,
$values
);
}
$this
->
getResource
()
->
commit
();
foreach
(
$attributeLoaders
as
$attributeLoader
){
$attributeLoader
->
runRequiredIndexers
();
}
$fixture
->
setStorageData
(
self
::
STORAGE_KEY
,
array_keys
(
$data
));
return
$this
;
}
/**
* Discard applied attribute records
*
* @param array[] $data
* @param string $key
* @param EcomDev_PHPUnit_Model_Fixture_Interface $fixture
*
* @return EcomDev_PHPUnit_Model_Fixture_Processor_Attributes
*/
public
function
discard
(
array
$data
,
$key
,
EcomDev_PHPUnit_Model_Fixture_Interface
$fixture
)
{
$ignoreCleanUp
=
array
();
// Ignore cleaning of entities if shared fixture loaded something for them
if
(
$fixture
->
isScopeLocal
()
&&
$fixture
->
getStorageData
(
self
::
STORAGE_KEY
,
EcomDev_PHPUnit_Model_Fixture_Interface
::
SCOPE_SHARED
))
{
$ignoreCleanUp
=
$fixture
->
getStorageData
(
self
::
STORAGE_KEY
,
EcomDev_PHPUnit_Model_Fixture_Interface
::
SCOPE_SHARED
);
}
$this
->
getResource
()
->
beginTransaction
();
foreach
(
array_keys
(
$data
)
as
$entityType
)
{
if
(
in_array
(
$entityType
,
$ignoreCleanUp
))
{
continue
;
}
$this
->
_getAttributeLoader
(
$entityType
)
->
cleanAttributes
(
$entityType
,
$data
);
}
$this
->
getResource
()
->
commit
();
EcomDev_PHPUnit_Test_Case_Util
::
replaceRegistry
(
'_singleton/eav/config'
,
null
);
//clean out the EAV cache
return
$this
;
}
}
\ No newline at end of file
app/code/community/EcomDev/PHPUnit/Model/Mysql4/Fixture/Attribute/Abstract.php
View file @
ccf93cc0
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @author Ivan Chepurnyi <ivan.chepurnyi@ecomdev.org>
* @author Ivan Chepurnyi <ivan.chepurnyi@ecomdev.org>
* @author Steve Rice <srice@endertech.com>
* @author Steve Rice <srice@endertech.com>
* @author Jonathan Day <jonathan@aligent.com.au>
*/
*/
abstract
class
EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
abstract
class
EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
...
@@ -22,6 +23,69 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
...
@@ -22,6 +23,69 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
{
{
protected
$_setupModel
=
'Mage_Eav_Model_Entity_Setup'
;
protected
$_setupModel
=
'Mage_Eav_Model_Entity_Setup'
;
/**
* List of indexers required to build
*
* @var array
*/
protected
$_requiredIndexers
=
array
(
'catalog_product_attribute'
,
);
/**
* Original list of indexers required to build
*
* @var array
*/
protected
$_originalIndexers
=
array
();
/**
* Retrieve required indexers for re-building
*
* @return array
*/
public
function
getRequiredIndexers
()
{
return
$this
->
_requiredIndexers
;
}
/**
* Run required indexers and reset to original required indexers
*
* @return EcomDev_PHPUnit_Model_Mysql4_Fixture_Eav_Abstract
*/
public
function
runRequiredIndexers
()
{
if
(
empty
(
$this
->
_options
[
'doNotIndexAll'
]))
{
$indexer
=
Mage
::
getSingleton
(
'index/indexer'
);
foreach
(
$this
->
getRequiredIndexers
()
as
$indexerCode
)
{
if
(
empty
(
$this
->
_options
[
'doNotIndex'
])
||
!
in_array
(
$indexerCode
,
$this
->
_options
[
'doNotIndex'
]))
{
$indexer
->
getProcessByCode
(
$indexerCode
)
->
reindexAll
();
}
}
}
// Restoring original required indexers for making tests isolated
$this
->
_requiredIndexers
=
$this
->
_originalIndexers
;
return
$this
;
}
/**
* Add indexer by specific code to required indexers list
*
* @param string $code
* @return EcomDev_PHPUnit_Model_Mysql4_Fixture_Eav_Abstract
*/
public
function
addRequiredIndexer
(
$code
)
{
if
(
!
in_array
(
$code
,
$this
->
_requiredIndexers
))
{
$this
->
_requiredIndexers
[]
=
$code
;
}
return
$this
;
}
/**
/**
* @param string $entityType
* @param string $entityType
* @return array
* @return array
...
@@ -69,6 +133,8 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
...
@@ -69,6 +133,8 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
/** @var $eavSetupModel Mage_Eav_Model_Entity_Setup */
/** @var $eavSetupModel Mage_Eav_Model_Entity_Setup */
$eavSetupModel
->
addAttribute
(
$entityTypeModel
->
getEntityTypeCode
(),
$value
[
'attribute_code'
],
$value
);
$eavSetupModel
->
addAttribute
(
$entityTypeModel
->
getEntityTypeCode
(),
$value
[
'attribute_code'
],
$value
);
}
}
return
$this
;
}
}
/**
/**
...
@@ -79,12 +145,22 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
...
@@ -79,12 +145,22 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
* @return EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
* @return EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
* @throws EcomDev_PHPUnit_Model_Mysql4_Fixture_Exception
* @throws EcomDev_PHPUnit_Model_Mysql4_Fixture_Exception
*/
*/
public
function
cleanAttributes
(
$entityType
,
array
$attribute
Code
s
)
public
function
cleanAttributes
(
$entityType
,
array
$attributes
)
{
{
$eavSetup
=
new
Mage_Eav_Model_Entity_Setup
(
'core_setup'
);
$eavSetup
=
new
Mage_Eav_Model_Entity_Setup
(
'core_setup'
);
try
{
try
{
if
(
empty
(
$attributes
))
{
throw
new
Exception
(
'Attribute array cannot be empty'
);
}
else
{
$attributeCodes
=
array
();
foreach
(
$attributes
[
$entityType
]
as
$attribute
){
$attributeCodes
[]
=
$attribute
[
'attribute_code'
];
}
}
//delete entry from eav/attribute and allow FK cascade to delete all related values
//delete entry from eav/attribute and allow FK cascade to delete all related values
//TODO: check if the attribute != is_user_defined (ie system), then *only* delete the attribute option values, not attribute definition
$this
->
_getWriteAdapter
()
$this
->
_getWriteAdapter
()
->
delete
(
->
delete
(
$this
->
getTable
(
'eav/attribute'
),
$this
->
getTable
(
'eav/attribute'
),
...
@@ -101,6 +177,8 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
...
@@ -101,6 +177,8 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Attribute_Abstract
);
);
}
}
$this
->
resetAttributesAutoIncrement
();
return
$this
;
return
$this
;
}
}
...
...
app/code/community/EcomDev/PHPUnit/Model/Mysql4/Fixture/Eav/Catalog/Product.php
View file @
ccf93cc0
...
@@ -95,7 +95,11 @@ class EcomDev_PHPUnit_Model_Mysql4_Fixture_Eav_Catalog_Product extends EcomDev_P
...
@@ -95,7 +95,11 @@ class EcomDev_PHPUnit_Model_Mysql4_Fixture_Eav_Catalog_Product extends EcomDev_P
$records
=
array
();
$records
=
array
();
$attributeCodes
=
$entityTypeModel
->
getAttributeCollection
();
$attributeCodes
=
$entityTypeModel
->
getAttributeCollection
();
foreach
(
$row
[
'super_attributes'
]
as
$attributeCode
)
{
foreach
(
$row
[
'super_attributes'
]
as
$attributeCode
)
{
$attributeId
=
$attributeCodes
->
getItemByColumnValue
(
'attribute_code'
,
$attributeCode
)
->
getId
();
$attribute
=
$attributeCodes
->
getItemByColumnValue
(
'attribute_code'
,
$attributeCode
);
if
(
!
$attribute
){
throw
new
Exception
(
'Super attribute not found with code: '
.
$attributeCode
);
}
$attributeId
=
$attribute
->
getId
();
$records
[]
=
array
(
$records
[]
=
array
(
'product_id'
=>
$row
[
$this
->
_getEntityIdField
(
$entityTypeModel
)],
'product_id'
=>
$row
[
$this
->
_getEntityIdField
(
$entityTypeModel
)],
'attribute_id'
=>
$attributeId
'attribute_id'
=>
$attributeId
...
...
app/code/community/EcomDev/PHPUnit/Test/Case/Controller.php
View file @
ccf93cc0
...
@@ -1808,7 +1808,7 @@ abstract class EcomDev_PHPUnit_Test_Case_Controller extends EcomDev_PHPUnit_Test
...
@@ -1808,7 +1808,7 @@ abstract class EcomDev_PHPUnit_Test_Case_Controller extends EcomDev_PHPUnit_Test
array
(
$this
,
'deleteCookieCallback'
)
array
(
$this
,
'deleteCookieCallback'
)
));
));
$this
->
replaceByMock
(
'
singleton
'
,
'core/cookie'
,
$cookie
);
$this
->
replaceByMock
(
'
model
'
,
'core/cookie'
,
$cookie
);
return
$this
;
return
$this
;
}
}
...
...
app/code/community/EcomDev/PHPUnit/etc/config.xml
View file @
ccf93cc0
...
@@ -94,6 +94,7 @@
...
@@ -94,6 +94,7 @@
<config>
ecomdev_phpunit/fixture_processor_config
</config>
<config>
ecomdev_phpunit/fixture_processor_config
</config>
<config_xml>
ecomdev_phpunit/fixture_processor_config
</config_xml>
<config_xml>
ecomdev_phpunit/fixture_processor_config
</config_xml>
<cache_options>
ecomdev_phpunit/fixture_processor_cache
</cache_options>
<cache_options>
ecomdev_phpunit/fixture_processor_cache
</cache_options>
<attributes>
ecomdev_phpunit/fixture_processor_attributes
</attributes>
<eav>
ecomdev_phpunit/fixture_processor_eav
</eav>
<eav>
ecomdev_phpunit/fixture_processor_eav
</eav>
<tables>
ecomdev_phpunit/fixture_processor_tables
</tables>
<tables>
ecomdev_phpunit/fixture_processor_tables
</tables>
<vfs>
ecomdev_phpunit/fixture_processor_vfs
</vfs>
<vfs>
ecomdev_phpunit/fixture_processor_vfs
</vfs>
...
@@ -102,10 +103,9 @@
...
@@ -102,10 +103,9 @@
<!-- Fixture loaders for EAV attributes
<!-- Fixture loaders for EAV attributes
Default can be used but does not support extra attribute table configuration -->
Default can be used but does not support extra attribute table configuration -->
<default>
ecomdev_phpunit/fixture_attribute_default
</default>
<default>
ecomdev_phpunit/fixture_attribute_default
</default>
<!--<catalog_product>ecomdev_phpunit/fixture_attribute_catalog_product</catalog_product>-->
</attribute>
</attribute>
<eav>
<eav>
<!-- Here goes the list of fixture loaders for EAV
<!-- Here goes the list of fixture loaders for EAV
entities
If no fixture loader is specified for entity, then default will be used
If no fixture loader is specified for entity, then default will be used
-->
-->
<default>
ecomdev_phpunit/fixture_eav_default
</default>
<default>
ecomdev_phpunit/fixture_eav_default
</default>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment