import componentTest from "helpers/component-test"; moduleForComponent("user-selector", { integration: true }); function paste(element, text) { let e = new Event("paste"); e.clipboardData = { getData: () => text }; element.dispatchEvent(e); } componentTest("pasting a list of usernames", { template: `{{user-selector usernames=usernames class="test-selector"}}`, beforeEach() { this.set("usernames", "evil,trout"); }, test(assert) { let element = find(".test-selector")[0]; assert.equal(this.get("usernames"), "evil,trout"); paste(element, "zip,zap,zoom"); assert.equal(this.get("usernames"), "evil,trout,zip,zap,zoom"); paste(element, "evil,abc,abc,abc"); assert.equal(this.get("usernames"), "evil,trout,zip,zap,zoom,abc"); this.set("usernames", ""); paste(element, "names with spaces"); assert.equal(this.get("usernames"), "names,with,spaces"); this.set("usernames", null); paste(element, "@eviltrout,@codinghorror sam"); assert.equal(this.get("usernames"), "eviltrout,codinghorror,sam"); this.set("usernames", null); paste(element, "eviltrout\nsam\ncodinghorror"); assert.equal(this.get("usernames"), "eviltrout,sam,codinghorror"); } }); componentTest("excluding usernames", { template: `{{user-selector usernames=usernames excludedUsernames=excludedUsernames class="test-selector"}}`, beforeEach() { this.set("usernames", "mark"); this.set("excludedUsernames", ["jeff", "sam", "robin"]); }, test(assert) { let element = find(".test-selector")[0]; paste(element, "roman,penar,jeff,robin"); assert.equal(this.get("usernames"), "mark,roman,penar"); } });