discourse/test/javascripts/lib/computed-test.js.es6

157 lines
3.5 KiB
Plaintext
Raw Normal View History

import EmberObject from "@ember/object";
2018-06-15 23:03:24 +08:00
import {
setting,
propertyEqual,
propertyNotEqual,
fmt,
i18n,
url
} from "discourse/lib/computed";
2015-08-08 03:08:27 +08:00
2017-06-15 01:57:58 +08:00
QUnit.module("lib:computed", {
beforeEach() {
sandbox.stub(I18n, "t").callsFake(function(scope) {
return "%@ translated: " + scope;
});
},
2017-06-15 01:57:58 +08:00
afterEach() {
I18n.t.restore();
}
});
2017-06-15 01:57:58 +08:00
QUnit.test("setting", assert => {
var t = EmberObject.extend({
2018-06-15 23:03:24 +08:00
vehicle: setting("vehicle"),
missingProp: setting("madeUpThing")
}).create();
Discourse.SiteSettings.vehicle = "airplane";
2018-06-15 23:03:24 +08:00
assert.equal(
t.get("vehicle"),
"airplane",
"it has the value of the site setting"
);
assert.ok(
!t.get("missingProp"),
"it is falsy when the site setting is not defined"
);
});
2017-06-15 01:57:58 +08:00
QUnit.test("propertyEqual", assert => {
var t = EmberObject.extend({
2018-06-15 23:03:24 +08:00
same: propertyEqual("cookies", "biscuits")
2013-10-18 00:52:24 +08:00
}).create({
cookies: 10,
biscuits: 10
});
2018-06-15 23:03:24 +08:00
assert.ok(t.get("same"), "it is true when the properties are the same");
t.set("biscuits", 9);
assert.ok(!t.get("same"), "it isn't true when one property is different");
});
2017-06-15 01:57:58 +08:00
QUnit.test("propertyNotEqual", assert => {
var t = EmberObject.extend({
2018-06-15 23:03:24 +08:00
diff: propertyNotEqual("cookies", "biscuits")
2013-10-18 00:52:24 +08:00
}).create({
cookies: 10,
biscuits: 10
});
2018-06-15 23:03:24 +08:00
assert.ok(!t.get("diff"), "it isn't true when the properties are the same");
t.set("biscuits", 9);
assert.ok(t.get("diff"), "it is true when one property is different");
});
2017-06-15 01:57:58 +08:00
QUnit.test("fmt", assert => {
var t = EmberObject.extend({
2018-06-15 23:03:24 +08:00
exclaimyUsername: fmt("username", "!!! %@ !!!"),
multiple: fmt("username", "mood", "%@ is %@")
2013-10-18 00:52:24 +08:00
}).create({
2018-06-15 23:03:24 +08:00
username: "eviltrout",
mood: "happy"
});
2018-06-15 23:03:24 +08:00
assert.equal(
t.get("exclaimyUsername"),
"!!! eviltrout !!!",
"it inserts the string"
);
assert.equal(
t.get("multiple"),
"eviltrout is happy",
"it inserts multiple strings"
);
t.set("username", "codinghorror");
assert.equal(
t.get("multiple"),
"codinghorror is happy",
"it supports changing properties"
);
t.set("mood", "ecstatic");
assert.equal(
t.get("multiple"),
"codinghorror is ecstatic",
"it supports changing another property"
);
});
2017-06-15 01:57:58 +08:00
QUnit.test("i18n", assert => {
var t = EmberObject.extend({
2018-06-15 23:03:24 +08:00
exclaimyUsername: i18n("username", "!!! %@ !!!"),
multiple: i18n("username", "mood", "%@ is %@")
2013-10-18 00:52:24 +08:00
}).create({
2018-06-15 23:03:24 +08:00
username: "eviltrout",
mood: "happy"
});
2018-06-15 23:03:24 +08:00
assert.equal(
t.get("exclaimyUsername"),
"%@ translated: !!! eviltrout !!!",
"it inserts the string and then translates"
);
assert.equal(
t.get("multiple"),
"%@ translated: eviltrout is happy",
"it inserts multiple strings and then translates"
);
t.set("username", "codinghorror");
assert.equal(
t.get("multiple"),
"%@ translated: codinghorror is happy",
"it supports changing properties"
);
t.set("mood", "ecstatic");
assert.equal(
t.get("multiple"),
"%@ translated: codinghorror is ecstatic",
"it supports changing another property"
);
});
2017-06-15 01:57:58 +08:00
QUnit.test("url", assert => {
2013-10-18 00:52:24 +08:00
var t, testClass;
2017-08-21 20:56:22 +08:00
testClass = EmberObject.extend({
2018-06-15 23:03:24 +08:00
userUrl: url("username", "/u/%@")
2013-10-18 00:52:24 +08:00
});
2018-06-15 23:03:24 +08:00
t = testClass.create({ username: "eviltrout" });
assert.equal(
t.get("userUrl"),
"/u/eviltrout",
"it supports urls without a prefix"
);
Discourse.BaseUri = "/prefixed";
2018-06-15 23:03:24 +08:00
t = testClass.create({ username: "eviltrout" });
assert.equal(
t.get("userUrl"),
"/prefixed/u/eviltrout",
"it supports urls with a prefix"
);
});