2
0
Эх сурвалжийг харах

Add tests for showing Unsaved Contacts

JC Brand 7 сар өмнө
parent
commit
2885d98ab4

+ 1 - 0
CHANGES.md

@@ -60,6 +60,7 @@
 - Set `auto_register_muc_nickname` default to `'unregister'` so that your
   nickname is automatically registered with a MUC upon entering and
   unregistered upon explicitly leaving the MUC (by closing it).
+- The `allow_non_roster_messaging` setting now defaults to `true`.
 
 ### Breaking changes:
 - Remove the old `_converse.BootstrapModal` in favor of `_converse.BaseModal` which is a web component.

+ 1 - 1
src/headless/shared/settings/constants.js

@@ -33,7 +33,7 @@
  * @property {Array<String>} [whitelisted_plugins]
  */
 export const DEFAULT_SETTINGS = {
-    allow_non_roster_messaging: false,
+    allow_non_roster_messaging: true,
     allow_url_history_change: true,
     assets_path: '/dist',
     authentication: 'login', // Available values are "login", "prebind", "anonymous" and "external".

+ 72 - 1
src/plugins/rosterview/tests/roster.js

@@ -510,7 +510,6 @@ describe("The Contacts Roster", function () {
             ]);
         }));
 
-
         it("can be used to organize existing contacts",
             mock.initConverse(
                 [], {'roster_groups': true},
@@ -1336,6 +1335,78 @@ describe("The Contacts Roster", function () {
         }));
     });
 
+    describe("An unsaved Contact", function () {
+
+        it("is shown upon receiving a message",
+            mock.initConverse(
+                [], {},
+                async function (_converse) {
+
+            const { api } = _converse;
+            const sender_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
+            await mock.waitForRoster(_converse, "current", 0);
+            await mock.openControlBox(_converse);
+
+            const msg = stx`
+                <message xmlns='jabber:client'
+                        id='${api.connection.get().getUniqueId()}'
+                        to='${_converse.bare_jid}'
+                        from='${sender_jid}'
+                        type='chat'>
+                    <body>Hello</body>
+                </message>`;
+            await _converse.handleMessageStanza(msg);
+
+            const rosterview = document.querySelector('converse-roster');
+            await u.waitUntil(() => rosterview.querySelectorAll(`ul[data-group="Unsaved contacts"] li`).length);
+            expect(rosterview.querySelectorAll(`ul[data-group="Unsaved contacts"] li`).length).toBe(1);
+            const el = rosterview.querySelector(`ul[data-group="Unsaved contacts"] li .contact-name`);
+            expect(el.textContent).toBe('Mercutio');
+        }));
+
+        it("is shown upon receiving a message to a previously removed contact",
+            mock.initConverse(
+                [], {},
+                async function (_converse) {
+
+            const { api } = _converse;
+            const sender_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
+            await mock.waitForRoster(_converse, "current", 1);
+            await mock.openControlBox(_converse);
+
+            let msg = stx`
+                <message xmlns='jabber:client'
+                        id='${api.connection.get().getUniqueId()}'
+                        to='${_converse.bare_jid}'
+                        from='${sender_jid}'
+                        type='chat'>
+                    <body>Hello</body>
+                </message>`;
+            await _converse.handleMessageStanza(msg);
+
+            spyOn(_converse.api, 'confirm').and.returnValue(Promise.resolve(true));
+
+            const rosterview = document.querySelector('converse-roster');
+            rosterview.querySelector(`.remove-xmpp-contact`).click();
+            expect(_converse.api.confirm).toHaveBeenCalled();
+
+            msg = stx`
+                <message xmlns='jabber:client'
+                        id='${api.connection.get().getUniqueId()}'
+                        to='${_converse.bare_jid}'
+                        from='${sender_jid}'
+                        type='chat'>
+                    <body>Why did you remove me?</body>
+                </message>`;
+            await _converse.handleMessageStanza(msg);
+
+            await u.waitUntil(() => rosterview.querySelectorAll(`ul[data-group="Unsaved contacts"] li`).length);
+            expect(rosterview.querySelectorAll(`ul[data-group="Unsaved contacts"] li`).length).toBe(1);
+            const el = rosterview.querySelector(`ul[data-group="Unsaved contacts"] li .contact-name`);
+            expect(el.textContent).toBe('Mercutio');
+        }));
+    });
+
     describe("All Contacts", function () {
 
         it("are saved to, and can be retrieved from browserStorage",

+ 1 - 1
src/types/plugins/bookmark-views/components/templates/list.d.ts

@@ -1,3 +1,3 @@
-declare function _default(el: any): import("lit").TemplateResult<1>;
+declare function _default(el: import("../bookmarks-list").default): import("lit").TemplateResult<1>;
 export default _default;
 //# sourceMappingURL=list.d.ts.map