mirror of
https://github.com/discourse/discourse.git
synced 2024-12-01 03:13:38 +08:00
303 lines
6.2 KiB
JavaScript
303 lines
6.2 KiB
JavaScript
import componentTest from "helpers/component-test";
|
|
moduleForComponent("combo-box", {
|
|
integration: true,
|
|
beforeEach: function() {
|
|
this.set("subject", selectKit());
|
|
}
|
|
});
|
|
|
|
componentTest("default", {
|
|
template: "{{combo-box content=items}}",
|
|
beforeEach() {
|
|
this.set("items", [{ id: 1, name: "hello" }, { id: 2, name: "world" }]);
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.header()
|
|
.name(),
|
|
"hello"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue(1)
|
|
.name(),
|
|
"hello"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue(2)
|
|
.name(),
|
|
"world"
|
|
);
|
|
}
|
|
});
|
|
|
|
componentTest("with valueAttribute", {
|
|
template: '{{combo-box content=items valueAttribute="value"}}',
|
|
beforeEach() {
|
|
this.set("items", [
|
|
{ value: 0, name: "hello" },
|
|
{ value: 1, name: "world" }
|
|
]);
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue(0)
|
|
.name(),
|
|
"hello"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue(1)
|
|
.name(),
|
|
"world"
|
|
);
|
|
}
|
|
});
|
|
|
|
componentTest("with nameProperty", {
|
|
template: '{{combo-box content=items nameProperty="text"}}',
|
|
beforeEach() {
|
|
this.set("items", [{ id: 0, text: "hello" }, { id: 1, text: "world" }]);
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue(0)
|
|
.name(),
|
|
"hello"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue(1)
|
|
.name(),
|
|
"world"
|
|
);
|
|
}
|
|
});
|
|
|
|
componentTest("with an array as content", {
|
|
template: "{{combo-box content=items value=value}}",
|
|
beforeEach() {
|
|
this.set("items", ["evil", "trout", "hat"]);
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue("evil")
|
|
.name(),
|
|
"evil"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue("trout")
|
|
.name(),
|
|
"trout"
|
|
);
|
|
}
|
|
});
|
|
|
|
componentTest("with value and none as a string", {
|
|
template: '{{combo-box content=items none="test.none" value=value}}',
|
|
beforeEach() {
|
|
I18n.translations[I18n.locale].js.test = { none: "none" };
|
|
this.set("items", ["evil", "trout", "hat"]);
|
|
this.set("value", "trout");
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.noneRow()
|
|
.name(),
|
|
"none"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue("evil")
|
|
.name(),
|
|
"evil"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue("trout")
|
|
.name(),
|
|
"trout"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.header()
|
|
.name(),
|
|
"trout"
|
|
);
|
|
assert.equal(this.get("value"), "trout");
|
|
|
|
await this.get("subject").selectNoneRow();
|
|
|
|
assert.equal(this.get("value"), null);
|
|
}
|
|
});
|
|
|
|
componentTest("with value and none as an object", {
|
|
template: "{{combo-box content=items none=none value=value}}",
|
|
beforeEach() {
|
|
this.set("none", { id: "something", name: "none" });
|
|
this.set("items", ["evil", "trout", "hat"]);
|
|
this.set("value", "evil");
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.noneRow()
|
|
.name(),
|
|
"none"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue("evil")
|
|
.name(),
|
|
"evil"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.rowByValue("trout")
|
|
.name(),
|
|
"trout"
|
|
);
|
|
assert.equal(
|
|
this.get("subject")
|
|
.header()
|
|
.name(),
|
|
"evil"
|
|
);
|
|
assert.equal(this.get("value"), "evil");
|
|
|
|
await this.get("subject").selectNoneRow();
|
|
|
|
assert.equal(this.get("value"), null);
|
|
}
|
|
});
|
|
|
|
componentTest("with no value and none as an object", {
|
|
template: "{{combo-box content=items none=none value=value}}",
|
|
beforeEach() {
|
|
I18n.translations[I18n.locale].js.test = { none: "none" };
|
|
this.set("none", { id: "something", name: "none" });
|
|
this.set("items", ["evil", "trout", "hat"]);
|
|
this.set("value", null);
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.header()
|
|
.name(),
|
|
"none"
|
|
);
|
|
}
|
|
});
|
|
|
|
componentTest("with no value and none string", {
|
|
template: "{{combo-box content=items none=none value=value}}",
|
|
beforeEach() {
|
|
I18n.translations[I18n.locale].js.test = { none: "none" };
|
|
this.set("none", "test.none");
|
|
this.set("items", ["evil", "trout", "hat"]);
|
|
this.set("value", null);
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.header()
|
|
.name(),
|
|
"none"
|
|
);
|
|
}
|
|
});
|
|
|
|
componentTest("with no value and no none", {
|
|
template: "{{combo-box content=items value=value}}",
|
|
beforeEach() {
|
|
this.set("items", ["evil", "trout", "hat"]);
|
|
this.set("value", null);
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.header()
|
|
.name(),
|
|
"evil",
|
|
"it sets the first row as value"
|
|
);
|
|
}
|
|
});
|
|
|
|
componentTest("with empty string as value", {
|
|
template: "{{combo-box content=items value=value}}",
|
|
beforeEach() {
|
|
this.set("items", ["evil", "trout", "hat"]);
|
|
this.set("value", "");
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.header()
|
|
.name(),
|
|
"evil",
|
|
"it sets the first row as value"
|
|
);
|
|
}
|
|
});
|
|
|
|
componentTest("with noneLabel", {
|
|
template:
|
|
"{{combo-box content=items allowAutoSelectFirst=false noneLabel=noneLabel}}",
|
|
beforeEach() {
|
|
I18n.translations[I18n.locale].js.test = { none: "none" };
|
|
this.set("items", ["evil", "trout", "hat"]);
|
|
this.set("noneLabel", "test.none");
|
|
},
|
|
|
|
async test(assert) {
|
|
await this.get("subject").expand();
|
|
|
|
assert.equal(
|
|
this.get("subject")
|
|
.header()
|
|
.name(),
|
|
"none",
|
|
"it displays noneLabel as the header name"
|
|
);
|
|
}
|
|
});
|