diff --git a/test/javascripts/lib/link-mentions-test.js.es6 b/test/javascripts/lib/link-mentions-test.js.es6 new file mode 100644 index 00000000000..ae5a83c5cff --- /dev/null +++ b/test/javascripts/lib/link-mentions-test.js.es6 @@ -0,0 +1,61 @@ +import { + fetchUnseenMentions, + linkSeenMentions +} from "discourse/lib/link-mentions"; +import { Promise } from "rsvp"; + +QUnit.module("lib:link-mentions"); + +QUnit.test("linkSeenMentions replaces users and groups", async assert => { + /* global server */ + server.get("/u/is_local_username", () => [ + 200, + { "Content-Type": "application/json" }, + { + valid: ["valid_user"], + valid_groups: ["valid_group"], + mentionable_groups: [ + { + name: "mentionable_group", + user_count: 1 + } + ], + cannot_see: [], + max_users_notified_per_group_mention: 100 + } + ]); + + await fetchUnseenMentions([ + "valid_user", + "mentionable_group", + "valid_group", + "invalid" + ]); + + let $root = $(` +
+ @invalid + @valid_user + @valid_group + @mentionable_group +
+ `); + + await linkSeenMentions($root); + + // Ember.Test.registerWaiter is not available here, so we are implementing + // our own + await new Promise(resolve => { + const interval = setInterval(() => { + if ($("a", $root).length > 0) { + clearInterval(interval); + resolve(); + } + }, 500); + }); + + assert.equal($("a", $root)[0].text, "@valid_user"); + assert.equal($("a", $root)[1].text, "@mentionable_group"); + assert.equal($("span.mention", $root)[0].innerHTML, "@invalid"); + assert.equal($("span.mention", $root)[1].innerHTML, "@valid_group"); +});