|
@@ -1,7 +1,6 @@
|
|
|
/*global mock, converse */
|
|
|
const { Promise, sizzle, u } = converse.env;
|
|
|
|
|
|
-
|
|
|
describe('The "Groupchats" Add modal', function () {
|
|
|
|
|
|
beforeAll(() => jasmine.addMatchers({ toEqualStanza: jasmine.toEqualStanza }));
|
|
@@ -12,9 +11,6 @@ describe('The "Groupchats" Add modal', function () {
|
|
|
|
|
|
let label_name = modal.querySelector('label[for="chatroom"]');
|
|
|
expect(label_name.textContent.trim()).toBe('Groupchat name or address:');
|
|
|
- const name_input = modal.querySelector('input[name="chatroom"]');
|
|
|
- expect(name_input.placeholder).toBe('name@conference.example.org');
|
|
|
-
|
|
|
const label_nick = modal.querySelector('label[for="nickname"]');
|
|
|
expect(label_nick.textContent.trim()).toBe('Nickname:');
|
|
|
const nick_input = modal.querySelector('input[name="nickname"]');
|
|
@@ -39,7 +35,6 @@ describe('The "Groupchats" Add modal', function () {
|
|
|
const label_name = modal.querySelector('label[for="chatroom"]');
|
|
|
expect(label_name.textContent.trim()).toBe('Groupchat name or address:');
|
|
|
let name_input = modal.querySelector('input[name="chatroom"]');
|
|
|
- expect(name_input.placeholder).toBe('name@muc.example.org');
|
|
|
name_input.value = 'lounge';
|
|
|
let nick_input = modal.querySelector('input[name="nickname"]');
|
|
|
nick_input.value = 'max';
|
|
@@ -66,7 +61,7 @@ describe('The "Groupchats" Add modal', function () {
|
|
|
})
|
|
|
);
|
|
|
|
|
|
- it('only uses the muc_domain if locked_muc_domain is true', mock.initConverse(
|
|
|
+ it('uses the muc_domain if locked_muc_domain is true', mock.initConverse(
|
|
|
['chatBoxesFetched'], { muc_domain: 'muc.example.org', locked_muc_domain: true },
|
|
|
async function (_converse) {
|
|
|
const modal = await mock.openAddMUCModal(_converse);
|
|
@@ -104,7 +99,7 @@ describe('The "Groupchats" Add modal', function () {
|
|
|
})
|
|
|
);
|
|
|
|
|
|
- fit("lets you create a MUC with only the name",
|
|
|
+ it("lets you create a MUC with only the name",
|
|
|
mock.initConverse(['chatBoxesFetched'], {}, async function (_converse) {
|
|
|
const { domain } = _converse;
|
|
|
await mock.waitUntilDiscoConfirmed(
|
|
@@ -210,6 +205,37 @@ describe('The "Groupchats" Add modal', function () {
|
|
|
})
|
|
|
);
|
|
|
|
|
|
+ it("shows a validation error when only the name was specified and there's no default MUC service",
|
|
|
+ mock.initConverse(['chatBoxesFetched'], {}, async function (_converse) {
|
|
|
+ const { domain } = _converse;
|
|
|
+ await mock.waitUntilDiscoConfirmed(
|
|
|
+ _converse,
|
|
|
+ domain,
|
|
|
+ [{ category: 'server', type: 'IM' }],
|
|
|
+ [],
|
|
|
+ );
|
|
|
+
|
|
|
+ const nick = 'max';
|
|
|
+ const modal = await mock.openAddMUCModal(_converse);
|
|
|
+ spyOn(_converse.ChatRoom.prototype, 'getDiscoInfo').and.callFake(() => Promise.resolve());
|
|
|
+
|
|
|
+ const name_input = modal.querySelector('input[name="chatroom"]');
|
|
|
+ name_input.value = 'The Lounge';
|
|
|
+
|
|
|
+ const nick_input = modal.querySelector('input[name="nickname"]');
|
|
|
+ nick_input.value = nick;
|
|
|
+
|
|
|
+ modal.querySelector('form input[type="submit"]').click();
|
|
|
+
|
|
|
+ await u.waitUntil(() => name_input.classList.contains('error'));
|
|
|
+ expect(name_input.classList.contains('is-invalid')).toBe(true);
|
|
|
+ expect(modal.querySelector('.invalid-feedback')?.textContent).toBe(
|
|
|
+ "No default groupchat service found. "+
|
|
|
+ "You'll need to specify the full address, for example room@conference.example.org"
|
|
|
+ );
|
|
|
+ })
|
|
|
+ );
|
|
|
+
|
|
|
it("normalizes the MUC name when creating the corresponding JID",
|
|
|
mock.initConverse(['chatBoxesFetched'], {muc_domain: 'montague.lit'}, async function (_converse) {
|
|
|
const modal = await mock.openAddMUCModal(_converse);
|