Ver código fonte

Add receiver helpers module

Danilo Bargen 7 anos atrás
pai
commit
9851ec9618
3 arquivos alterados com 89 adições e 0 exclusões
  1. 33 0
      src/receiver_helpers.ts
  2. 1 0
      tests/ts/main.ts
  3. 55 0
      tests/ts/receiver_helpers.ts

+ 33 - 0
src/receiver_helpers.ts

@@ -0,0 +1,33 @@
+/**
+ * This file is part of Threema Web.
+ *
+ * Threema Web is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with Threema Web. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// This file contains helper functions related to receivers.
+// Try to keep all functions pure!
+
+/**
+ * Return wether a contact is a Threema Gateway contact.
+ */
+export function isGatewayContact(receiver: threema.ContactReceiver) {
+    return receiver.id.startsWith('*');
+}
+
+/**
+ * Return wether a contact is the ECHOECHO test contact.
+ */
+export function isEchoContact(receiver: threema.ContactReceiver) {
+    return receiver.id === 'ECHOECHO';
+}

+ 1 - 0
tests/ts/main.ts

@@ -22,3 +22,4 @@
 
 import './containers';
 import './helpers';
+import './receiver_helpers';

+ 55 - 0
tests/ts/receiver_helpers.ts

@@ -0,0 +1,55 @@
+/**
+ * This file is part of Threema Web.
+ *
+ * Threema Web is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with Threema Web. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// tslint:disable:no-reference
+/// <reference path="../../src/threema.d.ts" />
+
+import * as helpers from '../../src/receiver_helpers';
+
+describe('Receiver Helpers', () => {
+    describe('isGatewayContact', () => {
+        it('regular contact', function() {
+            expect(helpers.isGatewayContact({id: 'FOOOOBAR', type: 'contact'} as threema.ContactReceiver)).toBe(false);
+        });
+
+        it('gateway contact', function() {
+            expect(helpers.isGatewayContact({id: '*THREEMA', type: 'contact'} as threema.ContactReceiver)).toBe(true);
+        });
+
+        it('empty identity', function() {
+            expect(helpers.isGatewayContact({id: '', type: 'contact'} as threema.ContactReceiver)).toBe(false);
+        });
+    });
+
+    describe('isEchoContact', () => {
+        it('regular contact', function() {
+            expect(helpers.isEchoContact({id: 'FOOOOBAR', type: 'contact'} as threema.ContactReceiver)).toBe(false);
+        });
+
+        it('gateway contact', function() {
+            expect(helpers.isEchoContact({id: '*THREEMA', type: 'contact'} as threema.ContactReceiver)).toBe(false);
+        });
+
+        it('empty identity', function() {
+            expect(helpers.isEchoContact({id: '', type: 'contact'} as threema.ContactReceiver)).toBe(false);
+        });
+
+        it('echoecho', function() {
+            expect(helpers.isEchoContact({id: 'ECHOECHO', type: 'contact'} as threema.ContactReceiver)).toBe(true);
+        });
+    });
+});