import selectKit from "helpers/select-kit-helper"; import componentTest from "helpers/component-test"; moduleForComponent("select-kit/combo-box", { integration: true, beforeEach() { this.set("subject", selectKit()); }, }); const DEFAULT_CONTENT = [ { id: 1, name: "foo" }, { id: 2, name: "bar" }, { id: 3, name: "baz" }, ]; const DEFAULT_VALUE = 1; const setDefaultState = (ctx, options) => { const properties = Object.assign( { content: DEFAULT_CONTENT, value: DEFAULT_VALUE, }, options || {} ); ctx.setProperties(properties); }; componentTest("options.clearable", { template: ` {{combo-box value=value content=content onChange=onChange options=(hash clearable=clearable) }} `, beforeEach() { setDefaultState(this, { clearable: true, onChange: (value) => { this.set("value", value); }, }); }, async test(assert) { const $header = this.subject.header(); assert.ok( exists($header.el().find(".btn-clear")), "it shows the clear button" ); assert.equal($header.value(), DEFAULT_VALUE); await click($header.el().find(".btn-clear")); assert.notOk( exists($header.el().find(".btn-clear")), "it hides the clear button" ); assert.equal($header.value(), null); }, }); componentTest("options.{caretUpIcon,caretDownIcon}", { template: ` {{combo-box value=value content=content options=(hash caretUpIcon=caretUpIcon caretDownIcon=caretDownIcon ) }} `, beforeEach() { setDefaultState(this, { caretUpIcon: "pencil-alt", caretDownIcon: "trash-alt", }); }, async test(assert) { const $header = this.subject.header().el(); assert.ok( exists($header.find(`.d-icon-${this.caretDownIcon}`)), "it uses the icon provided" ); await this.subject.expand(); assert.ok( exists($header.find(`.d-icon-${this.caretUpIcon}`)), "it uses the icon provided" ); }, });