]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
feat: add `testInterval` test utility
authorNicolas Coden <nicolas@ncoden.fr>
Fri, 18 May 2018 20:00:49 +0000 (22:00 +0200)
committerNicolas Coden <nicolas@ncoden.fr>
Fri, 18 May 2018 20:00:49 +0000 (22:00 +0200)
test/javascript/index.html
test/javascript/lib/utils.js [new file with mode: 0644]

index 42c828b938ab1df18e8970d2fce0f2e07628f3c8..9d27a78f2a198761380917ed0d16eb350f4f8bdc 100644 (file)
@@ -21,6 +21,7 @@
       chai.should();
     </script>
     <script src="lib/keyboard-event-mock.js"></script>
+    <script src="lib/utils.js"></script>
     <script src="js-tests.js"></script>
     <script>
       mocha.run();
diff --git a/test/javascript/lib/utils.js b/test/javascript/lib/utils.js
new file mode 100644 (file)
index 0000000..0f26983
--- /dev/null
@@ -0,0 +1,34 @@
+(function (global, $) {
+
+  global.tryInterval = function (opts) {
+    var _opts = $.extend({}, opts);
+    var totalTime = 0;
+
+    var interval = setInterval(function () {
+      var succeded = false;
+      var error = null;
+
+      totalTime += _opts.time;
+
+      try {
+        _opts.try();
+        succeded = true;
+      }
+      catch (err) { error = err; }
+
+      if (succeded) {
+        clearInterval(interval);
+        if (typeof _opts.then === 'function') _opts.then();
+      }
+      else if (totalTime > _opts.timeout) {
+        clearInterval(interval);
+        throw error;
+      }
+      else {
+        if (typeof _opts.catch === 'function') _opts.catch(error);
+      }
+
+    }, _opts.interval);
+  };
+
+})(window, jQuery);