PMCORE-2133
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Tests\unit\workflow\engine\classes\model;
|
namespace Tests\unit\workflow\engine\classes\model;
|
||||||
|
|
||||||
|
use Faker\Factory;
|
||||||
use G;
|
use G;
|
||||||
use OutputDocument;
|
use OutputDocument;
|
||||||
use ProcessMaker\Model\OutputDocument as OutputDocumentModel;
|
use ProcessMaker\Model\OutputDocument as OutputDocumentModel;
|
||||||
@@ -14,6 +15,30 @@ use Tests\TestCase;
|
|||||||
*/
|
*/
|
||||||
class OutputDocumentTest extends TestCase
|
class OutputDocumentTest extends TestCase
|
||||||
{
|
{
|
||||||
|
var $faker = null;
|
||||||
|
/**
|
||||||
|
* OutputDocumentTest constructor.
|
||||||
|
* @param string $name
|
||||||
|
* @param array $data
|
||||||
|
* @param string $dataName
|
||||||
|
*/
|
||||||
|
public function __construct($name = null, array $data = [], $dataName = '')
|
||||||
|
{
|
||||||
|
// Faker instance
|
||||||
|
$this->faker = Factory::create();
|
||||||
|
|
||||||
|
// Check if the constant "K_PATH_FONTS" is defined, if is not defined we need to define
|
||||||
|
if (!defined('K_PATH_FONTS')) {
|
||||||
|
// Generate a new folder name
|
||||||
|
$folderName = $this->faker->word;
|
||||||
|
|
||||||
|
// Define the path of the fonts, "K_PATH_FONTS" is a constant used by "TCPDF" library
|
||||||
|
define('K_PATH_FONTS', PATH_DATA . 'fonts' . PATH_SEP . $folderName . PATH_SEP);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parent constructor
|
||||||
|
parent::__construct($name, $data, $dataName);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Review the generate pdf using TCPDF
|
* Review the generate pdf using TCPDF
|
||||||
@@ -68,7 +93,216 @@ class OutputDocumentTest extends TestCase
|
|||||||
$properties
|
$properties
|
||||||
);
|
);
|
||||||
$this->assertFileExists($pathOutput . $output->OUT_DOC_FILENAME . '.pdf');
|
$this->assertFileExists($pathOutput . $output->OUT_DOC_FILENAME . '.pdf');
|
||||||
// Remove the shared folder
|
}
|
||||||
G::rm_dir($fonts);
|
|
||||||
|
/**
|
||||||
|
* Test checkTcPdfFontsPath method
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
* @covers \OutputDocument::checkTcPdfFontsPath()
|
||||||
|
*/
|
||||||
|
public function it_should_test_check_tcpdf_fonts_path()
|
||||||
|
{
|
||||||
|
// Generate a new folder name
|
||||||
|
$folderName = $this->faker->word;
|
||||||
|
|
||||||
|
// Check if the TCPDF fonts path exists, if not exists should be created and initialized
|
||||||
|
OutputDocument::checkTcPdfFontsPath($folderName);
|
||||||
|
|
||||||
|
// Assertion
|
||||||
|
$this->assertDirectoryExists(K_PATH_FONTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test loadTcPdfFontsList method
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
* @covers \OutputDocument::loadTcPdfFontsList()
|
||||||
|
*/
|
||||||
|
public function it_should_test_load_tcpdf_fonts_list()
|
||||||
|
{
|
||||||
|
// Get fonts
|
||||||
|
$fonts = OutputDocument::loadTcPdfFontsList();
|
||||||
|
|
||||||
|
// Assertion
|
||||||
|
$this->assertTrue(is_array($fonts));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test saveTcPdfFontsList method
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
* @covers \OutputDocument::saveTcPdfFontsList()
|
||||||
|
*/
|
||||||
|
public function it_should_test_save_tcpdf_fonts_list()
|
||||||
|
{
|
||||||
|
// Get fonts stored originally
|
||||||
|
$fontsOriginal = OutputDocument::loadTcPdfFontsList();
|
||||||
|
|
||||||
|
// Set variables needed
|
||||||
|
$fontFamily = $this->faker->word;
|
||||||
|
$font = [
|
||||||
|
'fileName' => "{$fontFamily}.ttf",
|
||||||
|
'tcPdfFileName' => $fontFamily,
|
||||||
|
'familyName' => $fontFamily,
|
||||||
|
'inTinyMce' => true,
|
||||||
|
'friendlyName' => $fontFamily,
|
||||||
|
'properties' => ''
|
||||||
|
];
|
||||||
|
$fontsToSave = $fontsOriginal;
|
||||||
|
$fontsToSave[] = $font;
|
||||||
|
|
||||||
|
// Check if TCPDF fonts paths exists
|
||||||
|
if (!file_exists(K_PATH_FONTS)) {
|
||||||
|
G::mk_dir(K_PATH_FONTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save fonts
|
||||||
|
OutputDocument::saveTcPdfFontsList($fontsToSave);
|
||||||
|
|
||||||
|
// Get fonts
|
||||||
|
$fontsModified = OutputDocument::loadTcPdfFontsList();
|
||||||
|
|
||||||
|
// Assertion
|
||||||
|
$this->assertTrue(count($fontsModified) > count($fontsOriginal));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test addTcPdfFont method
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
* @covers \OutputDocument::addTcPdfFont()
|
||||||
|
*/
|
||||||
|
public function it_should_test_add_tcpdf_font()
|
||||||
|
{
|
||||||
|
// Set variables needed
|
||||||
|
$fontFamily = $this->faker->word;
|
||||||
|
$font = [
|
||||||
|
'fileName' => "{$fontFamily}.ttf",
|
||||||
|
'tcPdfFileName' => $fontFamily,
|
||||||
|
'familyName' => $fontFamily,
|
||||||
|
'inTinyMce' => true,
|
||||||
|
'friendlyName' => $fontFamily,
|
||||||
|
'properties' => ''
|
||||||
|
];
|
||||||
|
|
||||||
|
// Check if TCPDF fonts paths exists
|
||||||
|
if (!file_exists(K_PATH_FONTS)) {
|
||||||
|
G::mk_dir(K_PATH_FONTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new font
|
||||||
|
OutputDocument::addTcPdfFont($font);
|
||||||
|
|
||||||
|
// Get fonts
|
||||||
|
$fonts = OutputDocument::loadTcPdfFontsList();
|
||||||
|
|
||||||
|
// Assertion
|
||||||
|
$this->assertArrayHasKey("{$fontFamily}.ttf", $fonts);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test existTcpdfFont method
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
* @covers \OutputDocument::existTcpdfFont()
|
||||||
|
*/
|
||||||
|
public function it_should_test_exist_tcpdf_font()
|
||||||
|
{
|
||||||
|
// Generate a fake family name
|
||||||
|
$fontFamily = $this->faker->word;
|
||||||
|
|
||||||
|
// Add a new font
|
||||||
|
$font = [
|
||||||
|
'fileName' => "{$fontFamily}.ttf",
|
||||||
|
'tcPdfFileName' => $fontFamily,
|
||||||
|
'familyName' => $fontFamily,
|
||||||
|
'inTinyMce' => true,
|
||||||
|
'friendlyName' => $fontFamily,
|
||||||
|
'properties' => ''
|
||||||
|
];
|
||||||
|
|
||||||
|
// Check if TCPDF fonts paths exists
|
||||||
|
if (!file_exists(K_PATH_FONTS)) {
|
||||||
|
G::mk_dir(K_PATH_FONTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new font
|
||||||
|
OutputDocument::addTcPdfFont($font);
|
||||||
|
|
||||||
|
// Assertion
|
||||||
|
$this->assertTrue(OutputDocument::existTcpdfFont("{$fontFamily}.ttf"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test removeTcPdfFont method
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
* @covers \OutputDocument::removeTcPdfFont()
|
||||||
|
*/
|
||||||
|
public function it_should_test_remove_tcpdf_font()
|
||||||
|
{
|
||||||
|
// Generate a fake family name
|
||||||
|
$fontFamily = $this->faker->word;
|
||||||
|
|
||||||
|
// Add a new font
|
||||||
|
$font = [
|
||||||
|
'fileName' => "{$fontFamily}.ttf",
|
||||||
|
'tcPdfFileName' => $fontFamily,
|
||||||
|
'familyName' => $fontFamily,
|
||||||
|
'inTinyMce' => true,
|
||||||
|
'friendlyName' => $fontFamily,
|
||||||
|
'properties' => ''
|
||||||
|
];
|
||||||
|
|
||||||
|
// Check if TCPDF fonts paths exists
|
||||||
|
if (!file_exists(K_PATH_FONTS)) {
|
||||||
|
G::mk_dir(K_PATH_FONTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new font
|
||||||
|
OutputDocument::addTcPdfFont($font);
|
||||||
|
|
||||||
|
// Remove font
|
||||||
|
OutputDocument::removeTcPdfFont("{$fontFamily}.ttf");
|
||||||
|
|
||||||
|
// Assertion
|
||||||
|
$this->assertFalse(OutputDocument::existTcpdfFont("{$fontFamily}.ttf"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test generateCssFile method
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
* @covers \OutputDocument::generateCssFile()
|
||||||
|
*/
|
||||||
|
public function it_should_test_generate_css_file()
|
||||||
|
{
|
||||||
|
// Set variables needed
|
||||||
|
$fontFamily = $this->faker->word;
|
||||||
|
$font = [
|
||||||
|
'fileName' => "{$fontFamily}.ttf",
|
||||||
|
'tcPdfFileName' => $fontFamily,
|
||||||
|
'familyName' => $fontFamily,
|
||||||
|
'inTinyMce' => true,
|
||||||
|
'friendlyName' => $fontFamily,
|
||||||
|
'properties' => ''
|
||||||
|
];
|
||||||
|
$fontsToSave = ["{$fontFamily}.ttf" => $font];
|
||||||
|
|
||||||
|
// Check if TCPDF fonts paths exists
|
||||||
|
if (!file_exists(K_PATH_FONTS)) {
|
||||||
|
G::mk_dir(K_PATH_FONTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save fonts
|
||||||
|
OutputDocument::saveTcPdfFontsList($fontsToSave);
|
||||||
|
|
||||||
|
// Re-generate CSS file
|
||||||
|
OutputDocument::generateCssFile();
|
||||||
|
|
||||||
|
// Assertion
|
||||||
|
$cssContent = file_get_contents(K_PATH_FONTS . 'fonts.css');
|
||||||
|
$this->assertTrue(strpos($cssContent, "{$fontFamily}.ttf") !== false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1224,11 +1224,15 @@ class OutputDocument extends BaseOutputDocument
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check and prepare the fonts path used by TCPDF library
|
* Check and prepare the fonts path used by TCPDF library
|
||||||
|
*
|
||||||
|
* @param string $folderName
|
||||||
*/
|
*/
|
||||||
public static function checkTcPdfFontsPath()
|
public static function checkTcPdfFontsPath($folderName = 'tcpdf')
|
||||||
{
|
{
|
||||||
// Define the path of the fonts, "K_PATH_FONTS" is a constant used by "TCPDF" library
|
if (!defined('K_PATH_FONTS')) {
|
||||||
define('K_PATH_FONTS', PATH_DATA . 'fonts' . PATH_SEP . 'tcpdf' . PATH_SEP);
|
// Define the path of the fonts, "K_PATH_FONTS" is a constant used by "TCPDF" library
|
||||||
|
define('K_PATH_FONTS', PATH_DATA . 'fonts' . PATH_SEP . $folderName . PATH_SEP);
|
||||||
|
}
|
||||||
|
|
||||||
// Check if already exists the path, if not exist we need to prepare the same
|
// Check if already exists the path, if not exist we need to prepare the same
|
||||||
if (!file_exists(K_PATH_FONTS)) {
|
if (!file_exists(K_PATH_FONTS)) {
|
||||||
@@ -1335,7 +1339,7 @@ class OutputDocument extends BaseOutputDocument
|
|||||||
/**
|
/**
|
||||||
* Generate CSS with the fonts definition to be used by TinyMCE editor
|
* Generate CSS with the fonts definition to be used by TinyMCE editor
|
||||||
*/
|
*/
|
||||||
private static function generateCssFile()
|
public static function generateCssFile()
|
||||||
{
|
{
|
||||||
// Initialize variables
|
// Initialize variables
|
||||||
$template = "@font-face {font-family: @familyName;src: url(/fonts/font.php?file=@fileName) format('truetype');@properties}\n";
|
$template = "@font-face {font-family: @familyName;src: url(/fonts/font.php?file=@fileName) format('truetype');@properties}\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user