mirror of
https://github.com/discourse/discourse.git
synced 2025-04-03 00:39:42 +08:00

This structure is closer to how ember-cli expects tests to be placed. It is not their final position, just the first step towards it.
176 lines
4.0 KiB
JavaScript
176 lines
4.0 KiB
JavaScript
import I18n from "I18n";
|
|
import componentTest from "helpers/component-test";
|
|
moduleForComponent("d-button", { integration: true });
|
|
|
|
componentTest("icon only button", {
|
|
template: '{{d-button icon="plus" tabindex="3"}}',
|
|
|
|
test(assert) {
|
|
assert.ok(
|
|
find("button.btn.btn-icon.no-text").length,
|
|
"it has all the classes"
|
|
);
|
|
assert.ok(find("button .d-icon.d-icon-plus").length, "it has the icon");
|
|
assert.equal(find("button").attr("tabindex"), "3", "it has the tabindex");
|
|
},
|
|
});
|
|
|
|
componentTest("icon and text button", {
|
|
template: '{{d-button icon="plus" label="topic.create"}}',
|
|
|
|
test(assert) {
|
|
assert.ok(
|
|
find("button.btn.btn-icon-text").length,
|
|
"it has all the classes"
|
|
);
|
|
assert.ok(find("button .d-icon.d-icon-plus").length, "it has the icon");
|
|
assert.ok(find("button span.d-button-label").length, "it has the label");
|
|
},
|
|
});
|
|
|
|
componentTest("text only button", {
|
|
template: '{{d-button label="topic.create"}}',
|
|
|
|
test(assert) {
|
|
assert.ok(find("button.btn.btn-text").length, "it has all the classes");
|
|
assert.ok(find("button span.d-button-label").length, "it has the label");
|
|
},
|
|
});
|
|
|
|
componentTest("form attribute", {
|
|
template: '{{d-button form="login-form"}}',
|
|
|
|
test(assert) {
|
|
assert.ok(exists("button[form=login-form]"), "it has the form attribute");
|
|
},
|
|
});
|
|
|
|
componentTest("link-styled button", {
|
|
template: '{{d-button display="link"}}',
|
|
|
|
test(assert) {
|
|
assert.ok(
|
|
find("button.btn-link:not(.btn)").length,
|
|
"it has the right classes"
|
|
);
|
|
},
|
|
});
|
|
|
|
componentTest("isLoading button", {
|
|
template: "{{d-button isLoading=isLoading}}",
|
|
|
|
beforeEach() {
|
|
this.set("isLoading", true);
|
|
},
|
|
|
|
test(assert) {
|
|
assert.ok(
|
|
find("button.is-loading .loading-icon").length,
|
|
"it has a spinner showing"
|
|
);
|
|
assert.ok(
|
|
find("button[disabled]").length,
|
|
"while loading the button is disabled"
|
|
);
|
|
|
|
this.set("isLoading", false);
|
|
|
|
assert.notOk(
|
|
find("button .loading-icon").length,
|
|
"it doesn't have a spinner showing"
|
|
);
|
|
assert.ok(
|
|
find("button:not([disabled])").length,
|
|
"while not loading the button is enabled"
|
|
);
|
|
},
|
|
});
|
|
|
|
componentTest("disabled button", {
|
|
template: "{{d-button disabled=disabled}}",
|
|
|
|
beforeEach() {
|
|
this.set("disabled", true);
|
|
},
|
|
|
|
test(assert) {
|
|
assert.ok(find("button[disabled]").length, "the button is disabled");
|
|
|
|
this.set("disabled", false);
|
|
|
|
assert.ok(find("button:not([disabled])").length, "the button is enabled");
|
|
},
|
|
});
|
|
|
|
componentTest("aria-label", {
|
|
template:
|
|
"{{d-button ariaLabel=ariaLabel translatedAriaLabel=translatedAriaLabel}}",
|
|
|
|
beforeEach() {
|
|
I18n.translations[I18n.locale].js.test = { fooAriaLabel: "foo" };
|
|
},
|
|
|
|
test(assert) {
|
|
this.set("ariaLabel", "test.fooAriaLabel");
|
|
|
|
assert.equal(
|
|
find("button")[0].getAttribute("aria-label"),
|
|
I18n.t("test.fooAriaLabel")
|
|
);
|
|
|
|
this.setProperties({
|
|
ariaLabel: null,
|
|
translatedAriaLabel: "bar",
|
|
});
|
|
|
|
assert.equal(find("button")[0].getAttribute("aria-label"), "bar");
|
|
},
|
|
});
|
|
|
|
componentTest("title", {
|
|
template: "{{d-button title=title translatedTitle=translatedTitle}}",
|
|
|
|
beforeEach() {
|
|
I18n.translations[I18n.locale].js.test = { fooTitle: "foo" };
|
|
},
|
|
|
|
test(assert) {
|
|
this.set("title", "test.fooTitle");
|
|
assert.equal(
|
|
find("button")[0].getAttribute("title"),
|
|
I18n.t("test.fooTitle")
|
|
);
|
|
|
|
this.setProperties({
|
|
title: null,
|
|
translatedTitle: "bar",
|
|
});
|
|
|
|
assert.equal(find("button")[0].getAttribute("title"), "bar");
|
|
},
|
|
});
|
|
|
|
componentTest("label", {
|
|
template: "{{d-button label=label translatedLabel=translatedLabel}}",
|
|
|
|
beforeEach() {
|
|
I18n.translations[I18n.locale].js.test = { fooLabel: "foo" };
|
|
},
|
|
|
|
test(assert) {
|
|
this.set("label", "test.fooLabel");
|
|
|
|
assert.equal(
|
|
find("button .d-button-label").text(),
|
|
I18n.t("test.fooLabel")
|
|
);
|
|
|
|
this.setProperties({
|
|
label: null,
|
|
translatedLabel: "bar",
|
|
});
|
|
|
|
assert.equal(find("button .d-button-label").text(), "bar");
|
|
},
|
|
});
|