discourse/test/javascripts/components/select-kit/category-chooser-test.js

Failed to ignore revisions in .git-blame-ignore-revs.

146 lines
3.8 KiB
JavaScript
Raw Normal View History

2018-06-15 23:03:24 +08:00
import componentTest from "helpers/component-test";
import { testSelectKitModule } from "./select-kit-test-helper";
2017-10-20 03:51:08 +08:00
testSelectKitModule("category-chooser");
function template(options = []) {
return `
{{category-chooser
value=value
options=(hash
${options.join("\n")}
)
}}
`;
}
2017-10-20 03:51:08 +08:00
2018-06-15 23:03:24 +08:00
componentTest("with value", {
template: template(),
2017-10-20 03:51:08 +08:00
beforeEach() {
this.set("value", 2);
},
async test(assert) {
assert.equal(this.subject.header().value(), 2);
assert.equal(this.subject.header().label(), "feature");
2017-10-20 03:51:08 +08:00
}
});
2018-06-15 23:03:24 +08:00
componentTest("with excludeCategoryId", {
template: template(["excludeCategoryId=2"]),
async test(assert) {
await this.subject.expand();
2018-06-15 23:03:24 +08:00
assert.notOk(this.subject.rowByValue(2).exists());
2017-10-20 03:51:08 +08:00
}
});
2018-06-15 23:03:24 +08:00
componentTest("with scopedCategoryId", {
template: template(["scopedCategoryId=2"]),
2017-10-20 03:51:08 +08:00
async test(assert) {
await this.subject.expand();
assert.equal(
this.subject.rowByIndex(0).title(),
"Discussion about features or potential features of Discourse: how they work, why they work, etc."
);
assert.equal(this.subject.rowByIndex(0).value(), 2);
assert.equal(
this.subject.rowByIndex(1).title(),
"My idea here is to have mini specs for features we would like built but have no bandwidth to build"
);
assert.equal(this.subject.rowByIndex(1).value(), 26);
assert.equal(this.subject.rows().length, 2, "default content is scoped");
await this.subject.fillInFilter("bug");
assert.equal(
this.subject.rowByIndex(0).name(),
"bug",
"search finds outside of scope"
);
2017-10-20 03:51:08 +08:00
}
});
2018-06-15 23:03:24 +08:00
componentTest("with allowUncategorized=null", {
template: template(["allowUncategorized=null"]),
2017-10-20 03:51:08 +08:00
beforeEach() {
this.siteSettings.allow_uncategorized_topics = false;
},
test(assert) {
assert.equal(this.subject.header().value(), null);
assert.equal(this.subject.header().label(), "category…");
2017-10-20 03:51:08 +08:00
}
});
2018-06-15 23:03:24 +08:00
componentTest("with allowUncategorized=null rootNone=true", {
template: template(["allowUncategorized=null", "none=true"]),
2017-10-20 03:51:08 +08:00
beforeEach() {
this.siteSettings.allow_uncategorized_topics = false;
},
test(assert) {
assert.equal(this.subject.header().value(), null);
assert.equal(this.subject.header().label(), "(no category)");
2017-10-20 03:51:08 +08:00
}
});
componentTest("with disallowed uncategorized, none", {
template: template(["allowUncategorized=null", "none='test.root'"]),
2017-10-20 03:51:08 +08:00
beforeEach() {
2018-06-15 23:03:24 +08:00
I18n.translations[I18n.locale].js.test = { root: "root none label" };
2017-10-20 03:51:08 +08:00
this.siteSettings.allow_uncategorized_topics = false;
},
test(assert) {
assert.equal(this.subject.header().value(), null);
assert.equal(this.subject.header().label(), "root none label");
2017-10-20 03:51:08 +08:00
}
});
2018-06-15 23:03:24 +08:00
componentTest("with allowed uncategorized", {
template: template(["allowUncategorized=true"]),
2017-10-20 03:51:08 +08:00
beforeEach() {
this.siteSettings.allow_uncategorized_topics = true;
},
test(assert) {
assert.equal(this.subject.header().value(), null);
assert.equal(this.subject.header().label(), "uncategorized");
2017-10-20 03:51:08 +08:00
}
});
componentTest("with allowed uncategorized and none=true", {
template: template(["allowUncategorized=true", "none=true"]),
2017-10-20 03:51:08 +08:00
beforeEach() {
this.siteSettings.allow_uncategorized_topics = true;
},
test(assert) {
assert.equal(this.subject.header().value(), null);
assert.equal(this.subject.header().label(), "(no category)");
2017-10-20 03:51:08 +08:00
}
});
componentTest("with allowed uncategorized and none", {
template: template(["allowUncategorized=true", "none='test.root'"]),
2017-10-20 03:51:08 +08:00
beforeEach() {
2018-06-15 23:03:24 +08:00
I18n.translations[I18n.locale].js.test = { root: "root none label" };
2017-10-20 03:51:08 +08:00
this.siteSettings.allow_uncategorized_topics = true;
},
test(assert) {
assert.equal(this.subject.header().value(), null);
assert.equal(this.subject.header().label(), "root none label");
2017-10-20 03:51:08 +08:00
}
});