Updated all the contrib modules to their latest versions.
[yaffs-website] / web / modules / contrib / permissions_by_term / js / test / permission-output.tests.js
diff --git a/web/modules/contrib/permissions_by_term/js/test/permission-output.tests.js b/web/modules/contrib/permissions_by_term/js/test/permission-output.tests.js
new file mode 100644 (file)
index 0000000..f4eb10c
--- /dev/null
@@ -0,0 +1,82 @@
+import PermissionOutputCollector from '../src/client/permission-output-collector.prototype';
+import PermissionOutput from '../src/model/permission-output.prototype';
+import createPermission from "../src/async-function/create-permission";
+import TermCollector from "../src/client/term-collector.prototype";
+import sinon from "sinon";
+
+QUnit.test("Collect output roles and usernames", async ( assert ) => {
+
+  const fetchFromBackend = async() => {
+    return {
+      taxonomyRelationFieldNames: ['field-one', 'field-two', 'field-thrid'],
+      permissions: {
+        userDisplayNames: {
+          '2': ['jeff'],
+          '4': ['brandon', 'brian']
+        },
+        roleLabels: {
+          '1': ['admin','editor'],
+          '2': ['editor']
+        }
+      }
+    };
+  },
+    domClient = {
+      computeTids: sinon.stub().returns(['2'])
+    },
+    termCollector = new TermCollector;
+
+  termCollector.addSelectedTids(domClient.computeTids(['first-field', 'second-field']));
+
+  /**
+   * @var Backend[] permissions
+   * @var PermissionOutputCollector permissionOutputCollector
+   */
+  let permissions = await createPermission(fetchFromBackend),
+      permissionOutput = new PermissionOutput,
+      permissionOutputCollector = new PermissionOutputCollector(permissionOutput);
+
+  permissionOutputCollector.collect(permissions, termCollector.getSelectedTids());
+
+  assert.deepEqual(permissionOutputCollector.getPermissionOutput().getRoles(), ['editor']);
+  assert.deepEqual(permissionOutputCollector.getPermissionOutput().getUsernames(), ['jeff']);
+
+});
+
+QUnit.test("Collect permissions without duplicates", async (assert) => {
+
+  const fetchFromBackend = async() => {
+        return {
+          taxonomyRelationFieldNames: ['field-one', 'field-two', 'field-thrid'],
+          permissions: {
+            userDisplayNames: {
+              '2': ['jeff','jeff'],
+              '4': ['brandon', 'brian']
+            },
+            roleLabels: {
+              '1': ['admin','admin','editor'],
+              '2': ['editor','editor']
+            }
+          }
+        };
+      },
+      domClient = {
+        computeTids: sinon.stub().returns(['2'])
+      },
+      termCollector = new TermCollector;
+
+  termCollector.addSelectedTids(domClient.computeTids(['first-field', 'second-field']));
+
+  /**
+   * @var Backend[] permissions
+   */
+  let permissions = await createPermission(fetchFromBackend),
+      permissionOutput = new PermissionOutput,
+      permissionOutputCollector = new PermissionOutputCollector(permissionOutput);
+
+  permissionOutputCollector.collect(permissions, termCollector.getSelectedTids());
+
+  assert.deepEqual(permissionOutputCollector.getPermissionOutput().getRoles(), ['editor']);
+  assert.deepEqual(permissionOutputCollector.getPermissionOutput().getUsernames(), ['jeff']);
+
+});
\ No newline at end of file