DEV: uses vanilla js for fixture qunit helper (#14703)

This commit is contained in:
Joffrey JAFFEUX 2021-10-25 10:59:58 +02:00 committed by GitHub
parent c0300b13e3
commit c7099342ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 64 additions and 83 deletions

View File

@ -385,9 +385,9 @@ export function controllerFor(controller, model) {
export function fixture(selector) { export function fixture(selector) {
if (selector) { if (selector) {
return $("#qunit-fixture").find(selector); return document.querySelector(`#qunit-fixture ${selector}`);
} }
return $("#qunit-fixture"); return document.querySelector("#qunit-fixture");
} }
QUnit.assert.not = function (actual, message) { QUnit.assert.not = function (actual, message) {

View File

@ -9,7 +9,7 @@ import sinon from "sinon";
const track = ClickTrack.trackClick; const track = ClickTrack.trackClick;
function generateClickEventOn(selector) { function generateClickEventOn(selector) {
return $.Event("click", { currentTarget: fixture(selector).first() }); return $.Event("click", { currentTarget: fixture(selector) });
} }
module("Unit | Utility | click-track-edit-history", function (hooks) { module("Unit | Utility | click-track-edit-history", function (hooks) {
@ -25,8 +25,7 @@ module("Unit | Utility | click-track-edit-history", function (hooks) {
sessionStorage.clear(); sessionStorage.clear();
fixture().html( fixture().innerHTML = `<div id="topic" data-topic-id="1337">
`<div id="topic" data-topic-id="1337">
</div> </div>
<div id="revisions" data-post-id="42" class=""> <div id="revisions" data-post-id="42" class="">
<div class="row"> <div class="row">
@ -55,8 +54,7 @@ module("Unit | Utility | click-track-edit-history", function (hooks) {
<a class="hashtag" href="http://discuss.domain.com">#hashtag</a> <a class="hashtag" href="http://discuss.domain.com">#hashtag</a>
</div> </div>
</div> </div>
</div>` </div>`;
);
}); });
skip("tracks internal URLs", async function (assert) { skip("tracks internal URLs", async function (assert) {

View File

@ -8,7 +8,7 @@ import sinon from "sinon";
const track = ClickTrack.trackClick; const track = ClickTrack.trackClick;
function generateClickEventOn(selector) { function generateClickEventOn(selector) {
return $.Event("click", { currentTarget: fixture(selector).first() }); return $.Event("click", { currentTarget: fixture(selector) });
} }
module("Unit | Utility | click-track-profile-page", function (hooks) { module("Unit | Utility | click-track-profile-page", function (hooks) {
@ -24,8 +24,7 @@ module("Unit | Utility | click-track-profile-page", function (hooks) {
sessionStorage.clear(); sessionStorage.clear();
fixture().html( fixture().innerHTML = `<p class="excerpt first" data-post-id="42" data-topic-id="1337" data-user-id="3141">
`<p class="excerpt first" data-post-id="42" data-topic-id="1337" data-user-id="3141">
<a href="http://www.google.com">google.com</a> <a href="http://www.google.com">google.com</a>
<a class="lightbox back" href="http://www.google.com">google.com</a> <a class="lightbox back" href="http://www.google.com">google.com</a>
<div class="onebox-result"> <div class="onebox-result">
@ -48,8 +47,7 @@ module("Unit | Utility | click-track-profile-page", function (hooks) {
<a id="same-site" href="http://discuss.domain.com">forum</a> <a id="same-site" href="http://discuss.domain.com">forum</a>
<a class="attachment" href="http://discuss.domain.com/uploads/default/1234/1532357280.txt">log.txt</a> <a class="attachment" href="http://discuss.domain.com/uploads/default/1234/1532357280.txt">log.txt</a>
<a class="hashtag" href="http://discuss.domain.com">#hashtag</a> <a class="hashtag" href="http://discuss.domain.com">#hashtag</a>
</p>` </p>`;
);
}); });
skip("tracks internal URLs", async function (assert) { skip("tracks internal URLs", async function (assert) {

View File

@ -11,7 +11,7 @@ import { setPrefix } from "discourse-common/lib/get-url";
const track = ClickTrack.trackClick; const track = ClickTrack.trackClick;
function generateClickEventOn(selector) { function generateClickEventOn(selector) {
return $.Event("click", { currentTarget: fixture(selector).first() }); return $.Event("click", { currentTarget: fixture(selector) });
} }
module("Unit | Utility | click-track", function (hooks) { module("Unit | Utility | click-track", function (hooks) {
@ -27,8 +27,7 @@ module("Unit | Utility | click-track", function (hooks) {
sessionStorage.clear(); sessionStorage.clear();
fixture().html( fixture().innerHTML = `<div id="topic" data-topic-id="1337">
`<div id="topic" data-topic-id="1337">
<article data-post-id="42" data-user-id="3141"> <article data-post-id="42" data-user-id="3141">
<a href="http://www.google.com">google.com</a> <a href="http://www.google.com">google.com</a>
<a class="lightbox back" href="http://www.google.fr">google.fr</a> <a class="lightbox back" href="http://www.google.fr">google.fr</a>
@ -52,8 +51,7 @@ module("Unit | Utility | click-track", function (hooks) {
<a class="abs-prefix-url" href="${window.location.origin}/forum/thing">prefix link</a> <a class="abs-prefix-url" href="${window.location.origin}/forum/thing">prefix link</a>
<a class="diff-prefix-url" href="/thing">diff prefix link</a> <a class="diff-prefix-url" href="/thing">diff prefix link</a>
</article> </article>
</div>` </div>`;
);
}); });
skip("tracks internal URLs", async function (assert) { skip("tracks internal URLs", async function (assert) {
@ -189,11 +187,11 @@ module("Unit | Utility | click-track", function (hooks) {
assert.notOk(track(generateClickEventOn("a"))); assert.notOk(track(generateClickEventOn("a")));
let $link = fixture("a").first(); let link = fixture("a");
assert.ok($link.hasClass("no-href")); assert.ok(link.classList.contains("no-href"));
assert.equal($link.data("href"), "http://www.google.com/"); assert.equal(link.dataset.href, "http://www.google.com/");
assert.blank($link.attr("href")); assert.blank(link.getAttribute("href"));
assert.ok($link.data("auto-route")); assert.ok(link.dataset.autoRoute);
assert.ok(window.open.calledWith("http://www.google.com/", "_blank")); assert.ok(window.open.calledWith("http://www.google.com/", "_blank"));
}); });
@ -206,15 +204,15 @@ module("Unit | Utility | click-track", function (hooks) {
const done = assert.async(); const done = assert.async();
later(() => { later(() => {
assert.equal(fixture("a").attr("href"), "http://www.google.com"); assert.equal(fixture("a").getAttribute("href"), "http://www.google.com");
done(); done();
}); });
}); });
function badgeClickCount(assert, id, expected) { function badgeClickCount(assert, id, expected) {
track(generateClickEventOn("#" + id)); track(generateClickEventOn(`#${id}`));
let $badge = $("span.badge", fixture("#" + id).first()); const badge = fixture(`#${id}`).querySelector("span.badge");
assert.equal(parseInt($badge.html(), 10), expected); assert.equal(parseInt(badge.innerHTML, 10), expected);
} }
test("does not update badge clicks on my own link", async function (assert) { test("does not update badge clicks on my own link", async function (assert) {

View File

@ -4,19 +4,13 @@ import { fixture } from "discourse/tests/helpers/qunit-helpers";
module("Unit | Utility | highlight-search", function () { module("Unit | Utility | highlight-search", function () {
test("highlighting text", function (assert) { test("highlighting text", function (assert) {
fixture().html( fixture().innerHTML = `
`
<p>This is some text to highlight</p> <p>This is some text to highlight</p>
` `;
);
highlightSearch(fixture()[0], "some text"); highlightSearch(fixture(), "some text");
const terms = []; const terms = [fixture(`.${CLASS_NAME}`).textContent];
fixture(`.${CLASS_NAME}`).each((_, elem) => {
terms.push(elem.textContent);
});
assert.equal( assert.equal(
terms.join(" "), terms.join(" "),
@ -26,19 +20,13 @@ module("Unit | Utility | highlight-search", function () {
}); });
test("highlighting unicode text", function (assert) { test("highlighting unicode text", function (assert) {
fixture().html( fixture().innerHTML = `
`
<p>This is some தமி & русский text to highlight</p> <p>This is some தமி & русский text to highlight</p>
` `;
);
highlightSearch(fixture()[0], "தமிழ் & русский"); highlightSearch(fixture(), "தமிழ் & русский");
const terms = []; const terms = [fixture(`.${CLASS_NAME}`).textContent];
fixture(`.${CLASS_NAME}`).each((_, elem) => {
terms.push(elem.textContent);
});
assert.equal( assert.equal(
terms.join(" "), terms.join(" "),

View File

@ -64,25 +64,24 @@ function stubUrls(imageSrcs, attachmentSrcs, otherMediaSrcs) {
response(imageSrcs.concat(attachmentSrcs.concat(otherMediaSrcs))) response(imageSrcs.concat(attachmentSrcs.concat(otherMediaSrcs)))
); );
fixture().html( fixture().innerHTML =
imageSrcs.map((src) => `<img data-orig-src="${src.short_url}"/>`).join("") + imageSrcs.map((src) => `<img data-orig-src="${src.short_url}"/>`).join("") +
attachmentSrcs attachmentSrcs
.map( .map(
(src) => (src) =>
`<a data-orig-href="${src.short_url}">big enterprise contract.pdf</a>` `<a data-orig-href="${src.short_url}">big enterprise contract.pdf</a>`
) )
.join("") + .join("") +
`<div class="scoped-area"><img data-orig-src="${imageSrcs[2].url}"></div>` + `<div class="scoped-area"><img data-orig-src="${imageSrcs[2].url}"></div>` +
otherMediaSrcs otherMediaSrcs
.map((src) => { .map((src) => {
if (src.short_url.indexOf("mp3") > -1) { if (src.short_url.indexOf("mp3") > -1) {
return `<audio controls><source data-orig-src="${src.short_url}"></audio>`; return `<audio controls><source data-orig-src="${src.short_url}"></audio>`;
} else { } else {
return `<video controls><source data-orig-src="${src.short_url}"></video>`; return `<video controls><source data-orig-src="${src.short_url}"></video>`;
} }
}) })
.join("") .join("");
);
} }
module("Unit | Utility | pretty-text/upload-short-url", function (hooks) { module("Unit | Utility | pretty-text/upload-short-url", function (hooks) {
@ -97,7 +96,7 @@ module("Unit | Utility | pretty-text/upload-short-url", function (hooks) {
lookup = lookupCachedUploadUrl("upload://a.jpeg"); lookup = lookupCachedUploadUrl("upload://a.jpeg");
assert.deepEqual(lookup, {}); assert.deepEqual(lookup, {});
await resolveAllShortUrls(ajax, { secure_media: false }, fixture()[0]); await resolveAllShortUrls(ajax, { secure_media: false }, fixture());
await settled(); await settled();
lookup = lookupCachedUploadUrl("upload://a.jpeg"); lookup = lookupCachedUploadUrl("upload://a.jpeg");
@ -144,36 +143,36 @@ module("Unit | Utility | pretty-text/upload-short-url", function (hooks) {
test("resolveAllShortUrls - href + src replaced correctly", async function (assert) { test("resolveAllShortUrls - href + src replaced correctly", async function (assert) {
stubUrls(); stubUrls();
await resolveAllShortUrls(ajax, { secure_media: false }, fixture()[0]); await resolveAllShortUrls(ajax, { secure_media: false }, fixture());
await settled(); await settled();
let image1 = fixture().find("img").eq(0); let image1 = fixture().querySelector("img");
let image2 = fixture().find("img").eq(1); let image2 = fixture().querySelectorAll("img")[1];
let link = fixture().find("a"); let audio = fixture().querySelector("audio");
let audio = fixture().find("audio").eq(0); let video = fixture().querySelector("video");
let video = fixture().find("video").eq(0); let link = fixture().querySelector("a");
assert.equal(image1.attr("src"), "/images/avatar.png?a"); assert.equal(image1.getAttribute("src"), "/images/avatar.png?a");
assert.equal(image2.attr("src"), "/images/avatar.png?b"); assert.equal(image2.getAttribute("src"), "/images/avatar.png?b");
assert.equal(link.attr("href"), "/uploads/short-url/c.pdf"); assert.equal(link.getAttribute("href"), "/uploads/short-url/c.pdf");
assert.equal( assert.equal(
video.find("source").attr("src"), video.querySelector("source").getAttribute("src"),
"/uploads/default/original/3X/c/b/4.mp4" "/uploads/default/original/3X/c/b/4.mp4"
); );
assert.equal( assert.equal(
audio.find("source").attr("src"), audio.querySelector("source").getAttribute("src"),
"/uploads/default/original/3X/c/b/5.mp3" "/uploads/default/original/3X/c/b/5.mp3"
); );
}); });
test("resolveAllShortUrls - url with full origin replaced correctly", async function (assert) { test("resolveAllShortUrls - url with full origin replaced correctly", async function (assert) {
stubUrls(); stubUrls();
await resolveAllShortUrls(ajax, { secure_media: false }, fixture()[0]); await resolveAllShortUrls(ajax, { secure_media: false }, fixture());
await settled(); await settled();
let video = fixture().find("video").eq(1); let video = fixture().querySelectorAll("video")[1];
assert.equal( assert.equal(
video.find("source").attr("src"), video.querySelector("source").getAttribute("src"),
"http://localhost:3000/uploads/default/original/3X/c/b/6.mp4" "http://localhost:3000/uploads/default/original/3X/c/b/6.mp4"
); );
}); });
@ -190,12 +189,12 @@ module("Unit | Utility | pretty-text/upload-short-url", function (hooks) {
], ],
null null
); );
await resolveAllShortUrls(ajax, { secure_media: true }, fixture()[0]); await resolveAllShortUrls(ajax, { secure_media: true }, fixture());
await settled(); await settled();
let link = fixture().find("a"); let link = fixture().querySelector("a");
assert.equal( assert.equal(
link.attr("href"), link.getAttribute("href"),
"/secure-media-uploads/default/original/3X/c/b/3.pdf" "/secure-media-uploads/default/original/3X/c/b/3.pdf"
); );
}); });
@ -204,7 +203,7 @@ module("Unit | Utility | pretty-text/upload-short-url", function (hooks) {
stubUrls(); stubUrls();
let lookup; let lookup;
let scopedElement = fixture()[0].querySelector(".scoped-area"); let scopedElement = fixture().querySelector(".scoped-area");
await resolveAllShortUrls(ajax, {}, scopedElement); await resolveAllShortUrls(ajax, {}, scopedElement);
await settled(); await settled();