diff --git a/tests/Feature/Template/TemplateTest.php b/tests/Feature/Template/TemplateTest.php index 6df4507bca59..5f6d64edddb4 100644 --- a/tests/Feature/Template/TemplateTest.php +++ b/tests/Feature/Template/TemplateTest.php @@ -167,6 +167,43 @@ class TemplateTest extends TestCase '; + private string $broken_twig_template = ' + + {% for invoice in invoices %} + + {{ invoice.number }} + {{ invoice.date }} + {{ invoice.due_date }} + {{ invoice.amount }} + + {{ invoice.balance }} + + + {% for payment in invoice.payments|filter(payment => payment.is_deleted == false) %} + + {% for pivot in payment.paymentables %} + + + {{ payment.number }} + {{ payment.date }} + + + {% if pivot.amount_raw > + {{ pivot.amount }} - {{ payment.type.name }} + {% else %} + ({{ pivot.refunded }}) + {% endif + + + + + + {% endfor %} + {% endfor %} + {% endfor%} + + '; + private string $stack = '
'; protected function setUp() :void @@ -181,6 +218,37 @@ class TemplateTest extends TestCase } + public function testLintingSuccess() + { + + $ts = new TemplateService(); + $twig = $ts->twig; + + try { + $twig->parse($twig->tokenize(new \Twig\Source($this->payments_body, ''))); + $this->assertTrue(true); + echo json_encode(['status' => 'ok']); + } catch (\Twig\Error\SyntaxError $e) { + echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); + } + + } + + public function testLintingFailure() + { + + $ts = new TemplateService(); + $twig = $ts->twig; + + try { + $twig->parse($twig->tokenize(new \Twig\Source($this->broken_twig_template, ''))); + echo json_encode(['status' => 'ok']); + } catch (\Twig\Error\SyntaxError $e) { + $this->assertTrue(true); + echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); + } + + } public function testPurchaseOrderDataParse() {