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
051a6efd
Commit
051a6efd
authored
Jan 17, 2013
by
Ivan Chepurnyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
! Fix constraints to make proper constraints validation
parent
fee5cb31
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
357 additions
and
46 deletions
+357
-46
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Abstract.php
...nity/EcomDev/PHPUnitTest/Test/Lib/Constraint/Abstract.php
+77
-0
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node.php
...y/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node.php
+78
-0
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node/providers/testConstructorAccepts.yaml
...straint/Config/Node/providers/testConstructorAccepts.yaml
+18
-0
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node/providers/testEqualsXml.yaml
...t/Lib/Constraint/Config/Node/providers/testEqualsXml.yaml
+43
-0
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node/providers/testEqualsXmlFailure.yaml
...onstraint/Config/Node/providers/testEqualsXmlFailure.yaml
+30
-0
lib/EcomDev/PHPUnit/Constraint/Abstract.php
lib/EcomDev/PHPUnit/Constraint/Abstract.php
+68
-12
lib/EcomDev/PHPUnit/Constraint/Config/Abstract.php
lib/EcomDev/PHPUnit/Constraint/Config/Abstract.php
+21
-2
lib/EcomDev/PHPUnit/Constraint/Config/Layout.php
lib/EcomDev/PHPUnit/Constraint/Config/Layout.php
+15
-6
lib/EcomDev/PHPUnit/Constraint/Config/Module.php
lib/EcomDev/PHPUnit/Constraint/Config/Module.php
+1
-3
lib/EcomDev/PHPUnit/Constraint/Config/Node.php
lib/EcomDev/PHPUnit/Constraint/Config/Node.php
+6
-23
No files found.
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Abstract.php
0 → 100644
View file @
051a6efd
<?php
class
EcomDev_PHPUnitTest_Test_Lib_Constraint_Abstract
extends
PHPUnit_Framework_TestCase
{
/**
* Test compare values functionality for constraint
*
* @param mixed $expectedValue
* @param mixed $actualValue
* @param bool $expectedResult
*
* @dataProvider dataProviderForCompareValues
*/
public
function
testCompareValues
(
$expectedValue
,
$actualValue
,
$expectedResult
)
{
/**
* @var $constraint EcomDev_PHPUnit_Constraint_Abstract
*/
$constraint
=
$this
->
getMockForAbstractClass
(
'EcomDev_PHPUnit_Constraint_Abstract'
,
array
(),
''
,
false
);
$this
->
assertSame
(
$expectedResult
,
$constraint
->
compareValues
(
$expectedValue
,
$actualValue
)
);
if
(
!
$expectedResult
)
{
$this
->
assertAttributeInstanceOf
(
'PHPUnit_Framework_ComparisonFailure'
,
'_comparisonFailure'
,
$constraint
);
}
}
/**
* Data provider for checking compare values functionality
*
* @return array
*/
public
function
dataProviderForCompareValues
()
{
return
array
(
array
(
array
(
'value1'
,
'value2'
,
'value3'
),
array
(
'value1'
,
'value2'
,
'value3'
),
true
),
array
(
array
(
'value1'
,
'value2'
,
'value3'
),
array
(
'value1'
,
'value1'
,
'value3'
),
false
),
array
(
array
(
'value1'
,
0
,
'value3'
),
array
(
'value1'
,
'value1'
,
'value3'
),
false
),
array
(
'1'
,
1
,
true
),
array
(
'0'
,
0
,
true
),
array
(
'1'
,
0
,
false
),
array
(
''
,
0
,
false
)
);
}
}
\ No newline at end of file
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node.php
0 → 100644
View file @
051a6efd
<?php
class
EcomDev_PHPUnitTest_Test_Lib_Constraint_Config_Node
extends
EcomDev_PHPUnit_Test_Case
{
/**
* Creates constraint instance
*
* @param $nodePath
* @param $type
* @param $value
*
* @return EcomDev_PHPUnit_Constraint_Config_Node
*/
protected
function
_getConstraint
(
$nodePath
,
$type
,
$value
)
{
return
new
EcomDev_PHPUnit_Constraint_Config_Node
(
$nodePath
,
$type
,
$value
);
}
/**
* Test constructor of the node,
*
* @param mixed $expectedValue
* @param string $type
*
* @dataProvider dataProvider
*/
public
function
testConstructorAccepts
(
$expectedValue
,
$type
)
{
$constraint
=
$this
->
_getConstraint
(
'some/dummy/path'
,
$type
,
$expectedValue
);
$this
->
assertAttributeEquals
(
$expectedValue
,
'_expectedValue'
,
$constraint
);
}
/**
* Tests that particular value equals xml
*
* @param string $actualValue
* @param string $expectedValue
* @dataProvider dataProvider
*/
public
function
testEqualsXml
(
$actualValue
,
$expectedValue
)
{
$actualValue
=
new
SimpleXMLElement
(
$actualValue
);
$expectedValue
=
new
SimpleXMLElement
(
$expectedValue
);
$constraint
=
$this
->
_getConstraint
(
'some/dummy/path'
,
EcomDev_PHPUnit_Constraint_Config_Node
::
TYPE_EQUALS_XML
,
$expectedValue
);
$this
->
assertTrue
(
$constraint
->
evaluate
(
$actualValue
,
''
,
true
));
$this
->
assertAttributeEmpty
(
'_comparisonFailure'
,
$constraint
);
}
/**
* Tests that particular value equals xml
*
* @param string $actualValue
* @param string $expectedValue
* @dataProvider dataProvider
*/
public
function
testEqualsXmlFailure
(
$actualValue
,
$expectedValue
)
{
$actualValue
=
new
SimpleXMLElement
(
$actualValue
);
$expectedValue
=
new
SimpleXMLElement
(
$expectedValue
);
$constraint
=
$this
->
_getConstraint
(
'some/dummy/path'
,
EcomDev_PHPUnit_Constraint_Config_Node
::
TYPE_EQUALS_XML
,
$expectedValue
);
$this
->
assertFalse
(
$constraint
->
evaluate
(
$actualValue
,
''
,
true
));
$this
->
assertAttributeNotEmpty
(
'_comparisonFailure'
,
$constraint
);
$this
->
assertAttributeInstanceOf
(
'PHPUnit_Framework_ComparisonFailure'
,
'_comparisonFailure'
,
$constraint
);
}
}
\ No newline at end of file
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node/providers/testConstructorAccepts.yaml
0 → 100644
View file @
051a6efd
-
-
1
-
equals_string
-
-
'
0'
-
equals_string
-
-
0.01
-
equals_string
-
-
"
0.01"
-
equals_decimal
-
-
"
0"
-
equals_decimal
-
-
"
100.0123"
-
equals_decimal
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node/providers/testEqualsXml.yaml
0 → 100644
View file @
051a6efd
-
actual
:
|
<config>
<value>1</value>
<value>2</value>
</config>
expected
:
|
<config>
<value>1</value>
<value>2</value>
</config>
-
actual
:
|
<config>
<value>1</value>
<value>2</value>
</config>
expected
:
|
<config>
<value>1</value>
<value>2</value>
</config>
-
actual
:
|
<config>
<value>1</value>
<value>2</value>
<more_nested><value>1</value><value>2</value></more_nested>
</config>
expected
:
|
<config>
<value>1</value>
<value>2</value>
<more_nested>
<value>1</value>
<value>2</value>
</more_nested>
</config>
\ No newline at end of file
app/code/community/EcomDev/PHPUnitTest/Test/Lib/Constraint/Config/Node/providers/testEqualsXmlFailure.yaml
0 → 100644
View file @
051a6efd
-
actual
:
|
<config>
<value>1</value>
<value>2</value>
</config>
expected
:
|
<config>
<value>2</value>
<value>3</value>
</config>
-
actual
:
|
<config>
<value>1</value>
<value>2</value>
<more_nested>
<value>1</value>
<value>2</value>
</more_nested>
</config>
expected
:
|
<config>
<value>1</value>
<value>2</value>
<more_nested>
<value>1</value>
<value>1</value>
</more_nested>
</config>
\ No newline at end of file
lib/EcomDev/PHPUnit/Constraint/Abstract.php
View file @
051a6efd
...
...
@@ -20,7 +20,6 @@
* Abstract constraint for EcomDev_PHPUnit constraints
* Contains flexible constaint types implementation
*
* @todo refactor failures for being 100% compatible with PHPUnit 3.6
*/
abstract
class
EcomDev_PHPUnit_Constraint_Abstract
extends
PHPUnit_Framework_Constraint
...
...
@@ -74,12 +73,21 @@ abstract class EcomDev_PHPUnit_Constraint_Abstract
*/
protected
$_useActualValue
=
false
;
/**
* Comparison failure for nice failure messages
*
* @var PHPUnit_Framework_ComparisonFailure
*/
protected
$_comparisonFailure
=
null
;
/**
* Abstract cnstraint constructor,
* provides unified interface for working with multiple types of evalation
*
* @param string $type
* @param mixed $expectedValue
* @param mixed $expectedValue
*
* @throws PHPUnit_Framework_Exception
*/
public
function
__construct
(
$type
,
$expectedValue
=
null
)
{
...
...
@@ -98,7 +106,7 @@ abstract class EcomDev_PHPUnit_Constraint_Abstract
if
(
isset
(
$this
->
_expectedValueValidation
[
$type
]))
{
$expectedValueType
=
(
isset
(
$this
->
_expectedValueValidation
[
$type
][
2
])
?
isset
(
$this
->
_expectedValueValidation
[
$type
][
2
])
:
$this
->
_expectedValueValidation
[
$type
][
2
]
:
''
);
// Mandatory check
...
...
@@ -186,17 +194,9 @@ abstract class EcomDev_PHPUnit_Constraint_Abstract
$failureDescription
=
sprintf
(
'Failed asserting that %s'
,
$this
->
failureDescription
(
$other
));
if
(
in_array
(
$this
->
_type
,
$this
->
_typesWithDiff
))
{
$actual
=
$this
->
getActualValue
(
$other
);
$expected
=
$this
->
getExpectedValue
();
throw
new
EcomDev_PHPUnit_Constraint_Exception
(
$failureDescription
,
new
PHPUnit_Framework_ComparisonFailure
(
$expected
,
$actual
,
$this
->
exportAsString
(
$expected
),
$this
->
exportAsString
(
$actual
)
),
$this
->
getComparisonFailure
(
$this
->
getExpectedValue
(),
$this
->
getActualValue
(
$other
)),
$description
);
}
else
{
...
...
@@ -278,4 +278,60 @@ abstract class EcomDev_PHPUnit_Constraint_Abstract
return
PHPUnit_Util_Type
::
export
(
$value
);
}
}
/**
* Compares two values by using correct comparator for two types
*
* @param mixed $expectedValue
* @param mixed $actualValue
* @return bool
*/
public
function
compareValues
(
$expectedValue
,
$actualValue
)
{
$comparatorFactory
=
PHPUnit_Framework_ComparatorFactory
::
getDefaultInstance
();
try
{
$comparator
=
$comparatorFactory
->
getComparatorFor
(
$expectedValue
,
$actualValue
);
$comparator
->
assertEquals
(
$expectedValue
,
$actualValue
);
}
catch
(
PHPUnit_Framework_ComparisonFailure
$f
)
{
$this
->
_comparisonFailure
=
$f
;
return
false
;
}
return
true
;
}
/**
* Retrieve comparison failure exception.
*
* Is used for generation of the failure messages
*
* @param mixed $actualValue
* @param mixed $expectedValue
*
* @return PHPUnit_Framework_ComparisonFailure
*/
public
function
getComparisonFailure
(
$actualValue
,
$expectedValue
)
{
if
(
$this
->
_comparisonFailure
!==
null
)
{
$failure
=
$this
->
_comparisonFailure
;
$this
->
_comparisonFailure
=
null
;
return
$failure
;
}
return
new
PHPUnit_Framework_ComparisonFailure
(
$expectedValue
,
$actualValue
,
$this
->
exportAsString
(
$expectedValue
),
$this
->
exportAsString
(
$actualValue
)
);
}
}
lib/EcomDev/PHPUnit/Constraint/Config/Abstract.php
View file @
051a6efd
...
...
@@ -86,7 +86,7 @@ abstract class EcomDev_PHPUnit_Constraint_Config_Abstract
protected
function
getActualValue
(
$other
=
null
)
{
if
(
!
$this
->
_useActualValue
&&
$other
->
hasChildren
())
{
return
$
other
->
asNiceXml
(
);
return
$
this
->
getXmlAsDom
(
$this
->
_expectedValue
);
}
elseif
(
!
$this
->
_useActualValue
)
{
return
(
string
)
$other
;
}
...
...
@@ -102,9 +102,28 @@ abstract class EcomDev_PHPUnit_Constraint_Config_Abstract
protected
function
getExpectedValue
()
{
if
(
$this
->
_expectedValue
instanceof
Varien_Simplexml_Element
)
{
return
$this
->
_expectedValue
->
asNiceXml
(
);
return
$this
->
getXmlAsDom
(
$this
->
_expectedValue
);
}
return
parent
::
getExpectedValue
();
}
/**
* Converts xml to dom object
*
* @param $xmlValue
* @return DOMDocument
*/
protected
function
getXmlAsDom
(
$xmlValue
)
{
if
(
$xmlValue
instanceof
SimpleXMLElement
)
{
$xmlValue
=
$xmlValue
->
asXML
();
}
$domValue
=
new
DOMDocument
;
$domValue
->
preserveWhiteSpace
=
FALSE
;
$domValue
->
loadXML
(
$xmlValue
);
return
$domValue
;
}
}
\ No newline at end of file
lib/EcomDev/PHPUnit/Constraint/Config/Layout.php
View file @
051a6efd
...
...
@@ -90,6 +90,7 @@ class EcomDev_PHPUnit_Constraint_Config_Layout
);
$this
->
_typesWithDiff
[]
=
self
::
TYPE_LAYOUT_FILE
;
$this
->
_typesWithDiff
[]
=
self
::
TYPE_LAYOUT_DEFINITION
;
$nodePath
=
sprintf
(
self
::
XML_PATH_LAYOUT
,
$area
);
...
...
@@ -131,7 +132,18 @@ class EcomDev_PHPUnit_Constraint_Config_Layout
}
}
return
false
;
if
(
$this
->
_layoutUpdate
===
null
)
{
$this
->
_layoutUpdate
=
'your_module'
;
}
$expected
=
clone
$other
;
$expected
->
addChild
(
$this
->
_layoutUpdate
)
->
addChild
(
'file'
,
htmlspecialchars
(
$this
->
_expectedValue
));
return
$this
->
compareValues
(
$this
->
getXmlAsDom
(
$expected
),
$this
->
getXmlAsDom
(
$other
)
);
}
/**
...
...
@@ -156,15 +168,12 @@ class EcomDev_PHPUnit_Constraint_Config_Layout
* @param Varien_Simplexml_Element $other
* @return boolean
*/
protected
function
evaluateLayoutFile
(
$other
)
protected
function
evaluateLayoutFile
()
{
$assertion
=
self
::
getDesignPackageModel
()
->
getLayoutFileAssertion
(
$this
->
_expectedValue
,
$this
->
_area
,
$this
->
_designPackage
,
$this
->
_theme
);
$this
->
setActualValue
(
$assertion
[
'actual'
]);
$this
->
_expectedValue
=
$assertion
[
'expected'
];
return
$this
->
_actualValue
===
$this
->
_expectedValue
;
return
$this
->
compareValues
(
$assertion
[
'expected'
],
$assertion
[
'actual'
]);
}
/**
...
...
lib/EcomDev/PHPUnit/Constraint/Config/Module.php
View file @
051a6efd
...
...
@@ -99,9 +99,7 @@ class EcomDev_PHPUnit_Constraint_Config_Module
*/
protected
function
evaluateCodePool
(
$other
)
{
$this
->
setActualValue
((
string
)
$other
->
codePool
);
return
$this
->
_actualValue
===
$this
->
_expectedValue
;
return
$this
->
compareValues
(
$this
->
_expectedValue
,
(
string
)
$other
->
codePool
);
}
/**
...
...
lib/EcomDev/PHPUnit/Constraint/Config/Node.php
View file @
051a6efd
...
...
@@ -43,7 +43,7 @@ class EcomDev_PHPUnit_Constraint_Config_Node
public
function
__construct
(
$nodePath
,
$type
,
$expectedValue
=
null
)
{
$this
->
_expectedValueValidation
+=
array
(
self
::
TYPE_EQUALS_STRING
=>
array
(
true
,
'is_s
tring'
,
'string
'
),
self
::
TYPE_EQUALS_STRING
=>
array
(
true
,
'is_s
calar'
,
'scalar
'
),
self
::
TYPE_EQUALS_NUMBER
=>
array
(
true
,
'is_numeric'
,
'numeric'
),
self
::
TYPE_LESS_THAN
=>
array
(
true
,
'is_numeric'
,
'numeric'
),
self
::
TYPE_GREATER_THAN
=>
array
(
true
,
'is_numeric'
,
'numeric'
),
...
...
@@ -68,7 +68,7 @@ class EcomDev_PHPUnit_Constraint_Config_Node
*/
protected
function
evaluateEqualsString
(
$other
)
{
return
(
string
)
$other
===
$this
->
_expectedValue
;
return
$this
->
compareValues
(
$this
->
_expectedValue
,
(
string
)
$other
)
;
}
/**
...
...
@@ -88,7 +88,7 @@ class EcomDev_PHPUnit_Constraint_Config_Node
*/
protected
function
evaluateEqualsNumber
(
$other
)
{
return
(
float
)
$other
==
$this
->
_expectedValue
;
return
$this
->
compareValues
(
$this
->
_expectedValue
,
(
float
)
$other
)
;
}
/**
...
...
@@ -171,27 +171,10 @@ class EcomDev_PHPUnit_Constraint_Config_Node
*/
protected
function
evaluateEqualsXml
(
$other
)
{
// Normalize expected XML for matching appropriate xml structure without
// whitespaces, etc
if
(
!
$this
->
_expectedValue
instanceof
Varien_Simplexml_Element
)
{
try
{
if
(
$other
instanceof
SimpleXMLElement
)
{
$other
=
$other
->
asXML
();
}
$expectedXml
=
new
Varien_Simplexml_Element
(
$this
->
_expectedValue
);
}
catch
(
Exception
$e
)
{
throw
new
RuntimeException
(
sprintf
(
'Expected value is not an xml string for node %s, passed expected value: %s, parsing error: %s'
,
$this
->
_nodePath
,
PHPUnit_Util_Type
::
export
(
$this
->
_expectedValue
),
$e
->
getMessage
()
));
}
$expectedValue
=
$this
->
getXmlAsDom
(
$this
->
_expectedValue
);
$other
=
$this
->
getXmlAsDom
(
$other
);
$this
->
_expectedValue
=
$expectedXml
;
}
return
$this
->
_expectedValue
->
asNiceXml
()
==
$other
->
asNiceXml
();
return
$this
->
compareValues
(
$expectedValue
,
$other
);
}
...
...
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