forked from aimeos/aimeos-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
StandardTest.php
128 lines (95 loc) · 3.51 KB
/
StandardTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
namespace Aimeos\Client\Html\Email\Watch\Html;
/**
* @copyright Metaways Infosystems GmbH, 2014
* @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
* @copyright Aimeos (aimeos.org), 2015
*/
class StandardTest extends \PHPUnit_Framework_TestCase
{
private static $productItems;
private static $customerItem;
private $object;
private $context;
private $emailMock;
public static function setUpBeforeClass()
{
$context = \TestHelperHtml::getContext();
$manager = \Aimeos\MShop\Customer\Manager\Factory::createManager( $context );
$search = $manager->createSearch();
$search->setConditions( $search->compare( '==', 'customer.code', 'UTC001' ) );
$result = $manager->searchItems( $search );
if( ( self::$customerItem = reset( $result ) ) === false ) {
throw new \Exception( 'No customer found' );
}
$manager = \Aimeos\MShop\Product\Manager\Factory::createManager( $context );
$search = $manager->createSearch();
$search->setConditions( $search->compare( '==', 'product.code', array( 'CNC', 'CNE' ) ) );
foreach( $manager->searchItems( $search, array( 'text', 'price', 'media' ) ) as $id => $product )
{
$prices = $product->getRefItems( 'price', 'default', 'default' );
self::$productItems[$id]['price'] = reset( $prices );
self::$productItems[$id]['item'] = $product;
}
}
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*
* @access protected
*/
protected function setUp()
{
$this->context = \TestHelperHtml::getContext();
$this->emailMock = $this->getMock( '\\Aimeos\\MW\\Mail\\Message\\None' );
$paths = \TestHelperHtml::getHtmlTemplatePaths();
$this->object = new \Aimeos\Client\Html\Email\Watch\Html\Standard( $this->context, $paths );
$view = \TestHelperHtml::getView( 'unittest', $this->context->getConfig() );
$view->extProducts = self::$productItems;
$view->extAddressItem = self::$customerItem->getPaymentAddress();
$view->addHelper( 'mail', new \Aimeos\MW\View\Helper\Mail\Standard( $view, $this->emailMock ) );
$this->object->setView( $view );
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*
* @access protected
*/
protected function tearDown()
{
unset( $this->object );
}
public function testGetHeader()
{
$output = $this->object->getHeader();
$this->assertNotNull( $output );
}
public function testGetBody()
{
$ds = DIRECTORY_SEPARATOR;
$file = '..' . $ds . 'themes' . $ds . 'classic' . $ds . 'media' . $ds . 'aimeos.png';
$this->context->getConfig()->set( 'client/html/email/logo', $file );
$this->emailMock->expects( $this->once() )->method( 'embedAttachment' )
->will( $this->returnValue( 'cid:123-unique-id' ) );
$this->emailMock->expects( $this->once() )->method( 'setBodyHtml' )
->with( $this->matchesRegularExpression( '#<html>.*<title>E-mail notification</title>.*<meta.*Aimeos.*<body>#smu' ) );
$output = $this->object->getBody();
$this->assertStringStartsWith( '<html>', $output );
$this->assertContains( 'cid:123-unique-id', $output );
}
public function testGetSubClientInvalid()
{
$this->setExpectedException( '\\Aimeos\\Client\\Html\\Exception' );
$this->object->getSubClient( 'invalid', 'invalid' );
}
public function testGetSubClientInvalidName()
{
$this->setExpectedException( '\\Aimeos\\Client\\Html\\Exception' );
$this->object->getSubClient( '$$$', '$$$' );
}
public function testProcess()
{
$this->object->process();
}
}