Преглед на файлове

Use js injection framework in test.

Damien Merenne преди 5 години
родител
ревизия
e7907d0d98
променени са 2 файла, в които са добавени 26 реда и са изтрити 13 реда
  1. 5 2
      test/test-helper.el
  2. 21 11
      test/xwidget-plus-follow-link-test.el

+ 5 - 2
test/test-helper.el

@@ -46,8 +46,9 @@
   (save-excursion
     (with-current-buffer (xwidget-buffer (xwidget-webkit-last-session))
       (let ((event (read-event nil nil seconds)))
-        (message "event:%s " event)
-        (xwidget-event-handler)
+        (when event
+          (message "event:%s " event)
+          (xwidget-event-handler))
         event))))
 
 (defun xwidget-plus-event-loop ()
@@ -63,6 +64,8 @@
        ;; this will trigger a loading event
        (xwidget-plus-event-dispatch)
        (let ((xwidget (xwidget-webkit-last-session)))
+         (xwidget-plus-js-inject xwidget 'test)
+         (xwidget-plus-event-loop)
          (with-current-buffer (xwidget-buffer xwidget)
            ,@body)))))
 

+ 21 - 11
test/xwidget-plus-follow-link-test.el

@@ -27,6 +27,18 @@
 
 (setq completing-read-function #'completing-read-default)
 
+;; Some usefull javascript
+(xwidget-plus-js-def test element-classes (selector)
+  "Fetch the list of css class for element matching SELECTOR.""
+map = Array.prototype.map;
+r = {};
+document.querySelectorAll(selector).forEach(l => {
+    r[l.id] = map.call(l.classList, t => {
+        return t.toString();
+     });
+});
+return r;
+")
 
 ;; A mocked backend class that doesn't interactively read anything.
 (defclass xwidget-plus-completion-backend-test (xwidget-plus-completion-backend)
@@ -55,16 +67,7 @@
   ;; Trigger the javascript update.
   (funcall update-fn)
   ;; Fetch css classes.
-  (xwidget-webkit-execute-script (xwidget-webkit-current-session) (--js "
-map = Array.prototype.map;
-r = {};
-document.querySelectorAll('a').forEach(l => {
-    r[l.id] = map.call(l.classList, t => {
-        return t.toString();
-     });
-});
-r
-" js--) #'xwidget-plus-update-fn-callback)
+  (xwidget-plus-test-element-classes (xwidget-webkit-current-session) "a" #'xwidget-plus-update-fn-callback)
   (xwidget-plus-event-dispatch))
 
 (cl-defmethod backend-test-link-classes ((backend xwidget-plus-completion-backend-test) link-id)
@@ -188,7 +191,14 @@ r
 
 ;; Local Variables:
 ;; eval: (mmm-mode)
-;; eval: (mmm-add-classes '((elisp-js :submode js-mode :face mmm-code-submode-face :delimiter-mode nil :front "--js \"" :back "\" js--")))
+;; eval: (mmm-add-group 'elisp-js '((elisp-rawjs :submode js-mode
+;;                                               :face mmm-code-submode-face
+;;                                               :delimiter-mode nil
+;;                                               :front "--js \"" :back "\" js--")
+;;                                  (elisp-defjs :submode js-mode
+;;                                               :face mmm-code-submode-face
+;;                                               :delimiter-mode nil
+;;                                               :front "xwidget-plus-js-def .*\n.*\"\"\n" :back "\")\n")))
 ;; mmm-classes: elisp-js
 ;; End: