Export: allow keyfield translations in related records
[tine20] / tests / tine20 / Crm / Export / XlsTest.php
1 <?php
2 /**
3  * Tine 2.0 - http://www.tine20.org
4  * 
5  * @package     Crm
6  * @subpackage  Export
7  * @license     http://www.gnu.org/licenses/agpl.html
8  * @copyright   Copyright (c) 2009-2013 Metaways Infosystems GmbH (http://www.metaways.de)
9  * @author      Philipp Schüle <p.schuele@metaways.de>
10  * 
11  */
12
13 /**
14  * Test helper
15  */
16 require_once dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
17
18 /**
19  * Test class for Crm_Export_Xls
20  */
21 class Crm_Export_XlsTest extends Crm_Export_AbstractTest
22 {
23     /**
24      * csv export class
25      *
26      * @var Crm_Export_Xls
27      */
28     protected $_instance;
29     
30     /**
31      * Runs the test methods of this class.
32      *
33      * @access public
34      * @static
35      */
36     public static function main()
37     {
38         $suite  = new PHPUnit_Framework_TestSuite('Tine 2.0 Crm_Export_XlsTest');
39         PHPUnit_TextUI_TestRunner::run($suite);
40     }
41
42
43     /**
44      * Sets up the fixture.
45      * This method is called before a test is executed.
46      *
47      * @access protected
48      */
49     protected function setUp()
50     {
51         $this->_instance = Tinebase_Export::factory(new Crm_Model_LeadFilter($this->_getLeadFilter()), 'xls');
52         parent::setUp();
53     }
54
55     /**
56      * test xls export
57      * 
58      * @return void
59      * 
60      * @todo save and test xls file (with xls reader)
61      * @todo check metadata
62      * @todo add note/partner checks again?
63      */
64     public function testExportXls()
65     {
66         $translate = Tinebase_Translation::getTranslation('Crm');
67         $excelObj = $this->_instance->generate();
68         
69         // output as csv
70         $xlswriter = new PHPExcel_Writer_CSV($excelObj);
71         $xlswriter->setSheetIndex(1);
72         //$xlswriter->save('php://output');
73         
74         $csvFilename = tempnam(sys_get_temp_dir(), 'csvtest');
75         $xlswriter->save($csvFilename);
76         
77         $this->assertTrue(file_exists($csvFilename));
78         $export = file_get_contents($csvFilename);
79         
80         $this->assertEquals(1, preg_match("/PHPUnit/",                          $export), 'no name');
81         $this->assertEquals(1, preg_match("/Description/",                      $export), 'no description');
82         $this->assertEquals(1, preg_match('/' . preg_quote(Tinebase_Core::getUser()->accountDisplayName) . '/',          $export), 'no creator');
83         $this->assertEquals(1, preg_match('/' . $translate->_('open') . '/',    $export), 'no leadstate');
84         
85         unlink($csvFilename);
86     }
87 }