Add phpunit test for Lessc

This commit is contained in:
Laurent Destailleur 2019-09-06 10:36:49 +02:00
parent ec1751bae9
commit bb81f66a1a
9 changed files with 193 additions and 10 deletions

View File

@ -147,7 +147,7 @@ if ($action == 'classin' && ($user->rights->agenda->allactions->create ||
(($object->authorid == $user->id || $object->userownerid == $user->id) && $user->rights->agenda->myactions->create)))
{
$object->fetch($id);
$object->setProject(GETPOST('projectid'));
$object->setProject(GETPOST('projectid', 'int'));
}
// Action clone object
@ -165,7 +165,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes')
reset($object->socpeopleassigned);
$object->contactid = key($object->socpeopleassigned);
}
$result = $object->createFromClone($user, GETPOST('fk_userowner'), GETPOST('socid'));
$result = $object->createFromClone($user, GETPOST('socid', 'int'));
if ($result > 0) {
header("Location: " . $_SERVER['PHP_SELF'] . '?id=' . $result);
exit();

View File

@ -798,8 +798,6 @@ class BonPrelevement extends CommonObject
$month = strftime("%m", $datetimeprev);
$year = strftime("%Y", $datetimeprev);
$puser = new User($this->db, $conf->global->PRELEVEMENT_USER);
$this->invoice_in_error = array();
$this->thirdparty_in_error = array();

View File

@ -184,7 +184,7 @@ class PaymentSocialContribution extends CommonObject
$remaintopay=price2num($contrib->amount - $paiement - $creditnotes - $deposits, 'MT');
if ($remaintopay == 0)
{
$result=$contrib->set_paid($user, '', '');
$result=$contrib->set_paid($user);
}
else dol_syslog("Remain to pay for conrib ".$contribid." not null. We do nothing.");
}

View File

@ -428,7 +428,7 @@ class CMailFile
foreach ($this->images_encoded as $img)
{
//$img['fullpath'],$img['image_encoded'],$img['name'],$img['content_type'],$img['cid']
$attachment = Swift_Image::fromPath($img['fullpath'], $img['content_type']);
$attachment = Swift_Image::fromPath($img['fullpath']);
// embed image
$imgcid = $this->message->embed($attachment);
// replace cid by the one created by swiftmail in html message

View File

@ -274,9 +274,10 @@ class ExtraFields
* @param string $perms Permission
* @param string $list Into list view by default
* @param string $computed Computed value
* @param string $help Help on tooltip
* @return int <=0 if KO, >0 if OK
*/
private function create($attrname, $type = 'varchar', $length = 255, $elementtype = 'member', $unique = 0, $required = 0, $default_value = '', $param = '', $perms = '', $list = '0', $computed = '')
private function create($attrname, $type = 'varchar', $length = 255, $elementtype = 'member', $unique = 0, $required = 0, $default_value = '', $param = '', $perms = '', $list = '0', $computed = '', $help = '')
{
if ($elementtype == 'thirdparty') $elementtype='societe';
if ($elementtype == 'contact') $elementtype='socpeople';

View File

@ -3058,7 +3058,7 @@ class lessc_parser {
$content[] = $m[1];
if ($m[2] == "@{") {
$this->count -= strlen($m[2]);
if ($this->interpolation($inter, false)) {
if ($this->interpolation($inter)) {
$content[] = $inter;
} else {
$this->count += strlen($m[2]);
@ -3310,7 +3310,7 @@ class lessc_parser {
continue;
}
if ($this->interpolation($inter, false)) {
if ($this->interpolation($inter)) {
$attrParts[] = $inter;
$hasInterpolation = true;
continue;

View File

@ -705,7 +705,7 @@ if ($action == 'addcontainer')
getAllImages($object, $objectpage, $urltograbbis, $tmpgeturl['content'], $action, 1, $grabimages, $grabimagesinto);
include_once DOL_DOCUMENT_ROOT.'/core/class/lessc.class.php';
$lesscobj = new lessc();
$lesscobj = new Lessc();
try {
$contentforlessc = ".bodywebsite {\n".$tmpgeturl['content']."\n}\n";
//print '<pre>'.$contentforlessc.'</pre>';

View File

@ -87,6 +87,8 @@ class AllTests
$suite->addTestSuite('DateLibTest');
require_once dirname(__FILE__).'/UtilsTest.php';
$suite->addTestSuite('UtilsTest');
require_once dirname(__FILE__).'/LesscTest.php';
$suite->addTestSuite('LesscTest');
//require_once dirname(__FILE__).'/DateLibTzFranceTest.php';
//$suite->addTestSuite('DateLibTzFranceTest');
require_once dirname(__FILE__).'/MarginsLibTest.php';

182
test/phpunit/LesscTest.php Normal file
View File

@ -0,0 +1,182 @@
<?php
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* or see http://www.gnu.org/
*/
/**
* \file test/phpunit/LessTest.php
* \ingroup test
* \brief PHPUnit test
* \remarks To run this script as CLI: phpunit filename.php
*/
global $conf,$user,$langs,$db;
//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver
//require_once 'PHPUnit/Autoload.php';
require_once dirname(__FILE__).'/../../htdocs/master.inc.php';
require_once dirname(__FILE__).'/../../htdocs/core/lib/security.lib.php';
require_once dirname(__FILE__).'/../../htdocs/core/lib/security2.lib.php';
if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1');
if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1');
if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1');
if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1');
if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1');
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1');
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no menu to show
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1');
if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session)
if (empty($user->id))
{
print "Load permissions for admin user nb 1\n";
$user->fetch(1);
$user->getrights();
}
$conf->global->MAIN_DISABLE_ALL_MAILS=1;
/**
* Class for PHPUnit tests
*
* @backupGlobals disabled
* @backupStaticAttributes enabled
* @remarks backupGlobals must be disabled to have db,conf,user and lang not erased.
*/
class LesscTest extends PHPUnit\Framework\TestCase
{
protected $savconf;
protected $savuser;
protected $savlangs;
protected $savdb;
/**
* Constructor
* We save global variables into local variables
*
* @return SecurityTest
*/
public function __construct()
{
parent::__construct();
//$this->sharedFixture
global $conf,$user,$langs,$db;
$this->savconf=$conf;
$this->savuser=$user;
$this->savlangs=$langs;
$this->savdb=$db;
print __METHOD__." db->type=".$db->type." user->id=".$user->id;
//print " - db ".$db->db;
print "\n";
}
// Static methods
public static function setUpBeforeClass()
{
global $conf,$user,$langs,$db;
$db->begin(); // This is to have all actions inside a transaction even if test launched without suite.
print __METHOD__."\n";
}
// tear down after class
public static function tearDownAfterClass()
{
global $conf,$user,$langs,$db;
$db->rollback();
print __METHOD__."\n";
}
/**
* Init phpunit tests
*
* @return void
*/
protected function setUp()
{
global $conf,$user,$langs,$db;
$conf=$this->savconf;
$user=$this->savuser;
$langs=$this->savlangs;
$db=$this->savdb;
print __METHOD__."\n";
}
/**
* End phpunit tests
*
* @return void
*/
protected function tearDown()
{
print __METHOD__."\n";
}
/**
* testLess
*
* @return string
*/
public function testLessc()
{
global $conf,$user,$langs,$db;
$conf=$this->savconf;
$user=$this->savuser;
$langs=$this->savlangs;
$db=$this->savdb;
include_once DOL_DOCUMENT_ROOT.'/core/class/lessc.class.php';
$lesscobj = new Lessc();
$cssfile = "
a { font-size: 10px; }
b .test {
font-size: 10px;
}
";
try {
$contentforlessc = ".bodywebsite {\n".$cssfile."\n}\n";
//print '<pre>'.$contentforlessc.'</pre>';
$result = $lesscobj->compile($contentforlessc);
//var_dump($contentforlessc); exit;
} catch (exception $e) {
//echo "failed to compile lessc";
dol_syslog("Failed to compile the CSS with lessc: ".$e->getMessage(), LOG_WARNING);
}
$cssexpected = "
.bodywebsite a {
font-size: 10px;
}
.bodywebsite b .test {
font-size: 10px;
}
";
print __METHOD__." SeparatorDecimal=".$result."\n";
$this->assertEquals(trim($result), trim($cssexpected));
return;
}
}