mirror of
https://github.com/discourse/discourse-table-builder.git
synced 2026-09-17 23:32:14 -04:00
FIX: do not edit wrong table when post has uploads (#37)
Previously, the regex was catching uploads as well as tables. This change ensures only strict tables are matched by requiring that matches start with the pipe character. Also adds a unit test for `findTableRegex` to describe the expected behaviour of the helper.
This commit is contained in:
@@ -2,7 +2,10 @@ import { discourseModule } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { test } from "qunit";
|
||||
import mdTableFixture from "../../fixtures/md-table-fixture";
|
||||
import mdTableSpecialCharsFixture from "../../fixtures/md-table-special-chars-fixture";
|
||||
import { arrayToTable } from "../../../discourse-table-builder/lib/utilities";
|
||||
import {
|
||||
arrayToTable,
|
||||
findTableRegex,
|
||||
} from "../../../discourse-table-builder/lib/utilities";
|
||||
|
||||
discourseModule("Unit | Utilities", function () {
|
||||
test("arrayToTable", function (assert) {
|
||||
@@ -54,4 +57,57 @@ discourseModule("Unit | Utilities", function () {
|
||||
"it creates a markdown table with special characters in correct alignment"
|
||||
);
|
||||
});
|
||||
|
||||
test("findTableRegex", function (assert) {
|
||||
const oneTable = `|Make|Model|Year|\r\n|--- | --- | ---|\r\n|Toyota|Supra|1998|`;
|
||||
|
||||
assert.strictEqual(
|
||||
oneTable.match(findTableRegex()).length,
|
||||
1,
|
||||
"finds one table in markdown"
|
||||
);
|
||||
|
||||
const threeTables = `## Heading
|
||||
|Table1 | PP Port | Device | DP | Medium|
|
||||
|--- | --- | --- | --- | ---|
|
||||
| Something | (1+2) | Dude | Mate | Bro |
|
||||
|
||||
|Table2 | PP Port | Device | DP | Medium|
|
||||
|--- | --- | --- | --- | ---|
|
||||
| Something | (1+2) | Dude | Mate | Bro |
|
||||
| ✅ | (1+2) | Dude | Mate | Bro |
|
||||
| ✅ | (1+2) | Dude | Mate | Bro |
|
||||
|
||||
|Table3 | PP Port | Device | DP |
|
||||
|--- | --- | --- | --- |
|
||||
| Something | (1+2) | Dude | Sound |
|
||||
| | (1+2) | Dude | OW |
|
||||
| | (1+2) | Dude | OI |
|
||||
|
||||
Random extras
|
||||
`;
|
||||
|
||||
assert.strictEqual(
|
||||
threeTables.match(findTableRegex()).length,
|
||||
3,
|
||||
"finds three tables in markdown"
|
||||
);
|
||||
|
||||
const ignoreUploads = `
|
||||
:information_source: Something
|
||||
|
||||
[details=Example of a cross-connect in Equinix]
|
||||

|
||||
[/details]
|
||||
|
||||
|Table1 | PP Port | Device | DP | Medium|
|
||||
|--- | --- | --- | --- | ---|
|
||||
| Something | (1+2) | Dude | Mate | Bro |
|
||||
`;
|
||||
assert.strictEqual(
|
||||
ignoreUploads.match(findTableRegex()).length,
|
||||
1,
|
||||
"finds on table, ignoring upload markup"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user