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()
{