fca918ced135ab806a0efb7e3938f62a8112f849
[tine20] / tests / tine20 / Addressbook / Export / DocTest.php
1 <?php
2 /**
3  * Tine 2.0 - http://www.tine20.org
4  *
5  * @package     Addressbook
6  * @license     http://www.gnu.org/licenses/agpl.html
7  * @copyright   Copyright (c) 2008-2014 Metaways Infosystems GmbH (http://www.metaways.de)
8  * @author      Cornelius Weiß <c.weiss@metaways.de>
9  */
10
11 use \PhpOffice\PhpWord;
12
13 /**
14  * Addressbook Doc generation class tests
15  *
16  * @package     Addressbook
17  * @subpackage  Export
18  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
19  * @author      Cornelius Weiß <c.weiss@metaways.de>
20  * @copyright   Copyright (c) 2016 Metaways Infosystems GmbH (http://www.metaways.de)
21  *
22  */
23 class Addressbook_Export_DocTest extends TestCase
24 {
25     public function testExportLetter()
26     {
27         // skip tests for php7
28         // ERROR: PHP Fatal error:  Cannot use PhpOffice\PhpWord\Shared\String as String because 'String' is a special
29         //  class name in /usr/local/share/tine20.git/tine20/vendor/phpoffice/phpword/src/PhpWord/TemplateProcessor.php
30         //  on line 23
31         if (PHP_VERSION_ID >= 70000) {
32             $this->markTestSkipped('FIXME 0011730: fix doc export for php7');
33         }
34
35         // make sure definition is imported
36         $definitionFile = __DIR__ . '/../../../../tine20/Addressbook/Export/definitions/adb_default_doc.xml';
37         $app = Tinebase_Application::getInstance()->getApplicationByName('Addressbook');
38         Tinebase_ImportExportDefinition::getInstance()->updateOrCreateFromFilename($definitionFile, $app);
39
40         $filter = new Addressbook_Model_ContactFilter(array(
41             array('field' => 'n_given', 'operator' => 'equals', 'value' => 'James')
42         ));
43         $doc = new Addressbook_Export_Doc($filter);
44         $doc->generate();
45
46         $tempfile = tempnam(Tinebase_Core::getTempDir(), __METHOD__ . '_') . '.docx';
47         $doc->save($tempfile);
48
49         $this->assertGreaterThan(0, filesize($tempfile));
50     }
51
52     // read and write sucks
53     public function _testReadWriteCycleSucks()
54     {
55         PhpWord\Settings::setTempDir(Tinebase_Core::getTempDir());
56
57         $source = str_replace('tests/tine20', 'tine20', __DIR__) . '/templates/addressbook_contact_letter.docx';
58         $phpWord = PhpWord\IOFactory::load($source);
59
60         $tempfile = tempnam(Tinebase_Core::getTempDir(), __METHOD__ . '_') . '.docx';
61         $writer = $phpWord->save($tempfile);
62
63         `open $tempfile`;
64     }
65 }