;;;; cl-scopes/test-web - test web (client and server) functionality (defpackage :scopes/test-web (:use :common-lisp) (:local-nicknames (:config :scopes/config) (:core :scopes/core) (:client :scopes/web/client) (:dom :scopes/web/dom) (:logging :scopes/logging) (:message :scopes/core/message) (:server :scopes/web/server) (:util :scopes/util) (:t :scopes/testing)) (:export #:run) (:import-from :scopes/testing #:deftest #:== #:has-prefix)) (in-package :scopes/test-web) ;;;; test runner (defun run () (let ((t:*test-suite* (t:test-suite "web"))) (load (t:test-path "config-web" "etc")) (unwind-protect (progn (core:setup-services) (let ((server (core:find-service :server)) (client (core:find-service :client))) (test-dom) (test-server-config server) (sleep 0.1) (test-fileserver client) (test-message client) (sleep 0.1))) (core:shutdown) (t:show-result)))) (deftest test-dom () (== (dom:render (dom:link '(:href "https://example.com" :title "Demo" :class (:demo-link :plain)) "Link to example.com")) "Link to example.com")) (deftest test-server-config (server) (== (parse-integer (server:port (core:config server))) 8899)) (deftest test-fileserver (client) (let ((msg (message:create '(:test :get-page) :data '(:path "demo.html")))) (== (client:base-url (core:config client)) "http://localhost:8899") (has-prefix (client:get-page client msg) "Hello Fileserver!"))) (deftest test-message (client) (let ((msg (message:create '(:test :data :field :info) :data '(:info "test data")))) (== (util:flatten-str (client:send-message client msg)) "