mirror of
https://github.com/discourse/discourse.git
synced 2025-06-19 05:37:59 +08:00
DEV: adds test for image-short-url (#6642)
This commit is contained in:
@ -9,8 +9,12 @@ export function lookupUncachedUploadUrls(urls, ajax) {
|
|||||||
method: "POST",
|
method: "POST",
|
||||||
data: { short_urls: urls }
|
data: { short_urls: urls }
|
||||||
}).then(uploads => {
|
}).then(uploads => {
|
||||||
uploads.forEach(upload => (_cache[upload.short_url] = upload.url));
|
uploads.forEach(upload =>
|
||||||
urls.forEach(url => (_cache[url] = _cache[url] || "missing"));
|
cacheShortUploadUrl(upload.short_url, upload.url)
|
||||||
|
);
|
||||||
|
urls.forEach(url =>
|
||||||
|
cacheShortUploadUrl(url, lookupCachedUploadUrl(url) || "missing")
|
||||||
|
);
|
||||||
return uploads;
|
return uploads;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -19,10 +23,15 @@ export function cacheShortUploadUrl(shortUrl, url) {
|
|||||||
_cache[shortUrl] = url;
|
_cache[shortUrl] = url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function resetCache() {
|
||||||
|
_cache = {};
|
||||||
|
}
|
||||||
|
|
||||||
function _loadCachedShortUrls($images) {
|
function _loadCachedShortUrls($images) {
|
||||||
$images.each((idx, image) => {
|
$images.each((idx, image) => {
|
||||||
let $image = $(image);
|
const $image = $(image);
|
||||||
let url = lookupCachedUploadUrl($image.data("orig-src"));
|
const url = lookupCachedUploadUrl($image.data("orig-src"));
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
$image.removeAttr("data-orig-src");
|
$image.removeAttr("data-orig-src");
|
||||||
if (url !== "missing") {
|
if (url !== "missing") {
|
||||||
@ -34,7 +43,7 @@ function _loadCachedShortUrls($images) {
|
|||||||
|
|
||||||
function _loadShortUrls($images, ajax) {
|
function _loadShortUrls($images, ajax) {
|
||||||
const urls = $images.toArray().map(img => $(img).data("orig-src"));
|
const urls = $images.toArray().map(img => $(img).data("orig-src"));
|
||||||
lookupUncachedUploadUrls(urls, ajax).then(() =>
|
return lookupUncachedUploadUrls(urls, ajax).then(() =>
|
||||||
_loadCachedShortUrls($images)
|
_loadCachedShortUrls($images)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -48,11 +57,9 @@ export function resolveAllShortUrls(ajax) {
|
|||||||
$shortUploadUrls = $("img[data-orig-src]");
|
$shortUploadUrls = $("img[data-orig-src]");
|
||||||
if ($shortUploadUrls.length > 0) {
|
if ($shortUploadUrls.length > 0) {
|
||||||
// this is carefully batched so we can do a leading debounce (trigger right away)
|
// this is carefully batched so we can do a leading debounce (trigger right away)
|
||||||
Ember.run.debounce(
|
return Ember.run.debounce(
|
||||||
null,
|
null,
|
||||||
() => {
|
() => _loadShortUrls($shortUploadUrls, ajax),
|
||||||
_loadShortUrls($shortUploadUrls, ajax);
|
|
||||||
},
|
|
||||||
450,
|
450,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
56
test/javascripts/lib/image-short-url-test.js.es6
Normal file
56
test/javascripts/lib/image-short-url-test.js.es6
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import {
|
||||||
|
lookupCachedUploadUrl,
|
||||||
|
resolveAllShortUrls,
|
||||||
|
resetCache
|
||||||
|
} from "pretty-text/image-short-url";
|
||||||
|
import { ajax } from "discourse/lib/ajax";
|
||||||
|
|
||||||
|
QUnit.module("lib:pretty-text/image-short-url", {
|
||||||
|
beforeEach() {
|
||||||
|
const response = object => {
|
||||||
|
return [200, { "Content-Type": "application/json" }, object];
|
||||||
|
};
|
||||||
|
|
||||||
|
const srcs = [
|
||||||
|
{
|
||||||
|
short_url: "upload://a.jpeg",
|
||||||
|
url: "/uploads/default/original/3X/c/b/1.jpeg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
short_url: "upload://b.jpeg",
|
||||||
|
url: "/uploads/default/original/3X/c/b/2.jpeg"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
server.post("/uploads/lookup-urls", () => { //eslint-disable-line
|
||||||
|
return response(srcs);
|
||||||
|
});
|
||||||
|
|
||||||
|
fixture().html(
|
||||||
|
srcs.map(src => `<img data-orig-src="${src.url}">`).join("")
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
afterEach() {
|
||||||
|
resetCache();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test("resolveAllShortUrls", async assert => {
|
||||||
|
let lookup;
|
||||||
|
|
||||||
|
lookup = lookupCachedUploadUrl("upload://a.jpeg");
|
||||||
|
assert.notOk(lookup);
|
||||||
|
|
||||||
|
await resolveAllShortUrls(ajax);
|
||||||
|
|
||||||
|
lookup = lookupCachedUploadUrl("upload://a.jpeg");
|
||||||
|
assert.equal(lookup, "/uploads/default/original/3X/c/b/1.jpeg");
|
||||||
|
|
||||||
|
lookup = lookupCachedUploadUrl("upload://b.jpeg");
|
||||||
|
assert.equal(lookup, "/uploads/default/original/3X/c/b/2.jpeg");
|
||||||
|
|
||||||
|
lookup = lookupCachedUploadUrl("upload://c.jpeg");
|
||||||
|
assert.notOk(lookup);
|
||||||
|
});
|
Reference in New Issue
Block a user