diff --git a/backend/test/uxbox/tests/test_pages.clj b/backend/test/uxbox/tests/test_pages.clj index c8fafe146..6bb71ad7a 100644 --- a/backend/test/uxbox/tests/test_pages.clj +++ b/backend/test/uxbox/tests/test_pages.clj @@ -2,11 +2,9 @@ (:require [clojure.test :as t] [promesa.core :as p] [suricatta.core :as sc] - [catacumba.testing :refer (with-server)] - [buddy.core.codecs :as codecs] - [uxbox.db :as db] [uxbox.util.uuid :as uuid] - [uxbox.frontend :as uft] + [uxbox.db :as db] + [uxbox.api :as uapi] [uxbox.services.projects :as uspr] [uxbox.services.pages :as uspg] [uxbox.services :as usv] @@ -14,211 +12,211 @@ (t/use-fixtures :each th/database-reset) -;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ;; Frontend Test -;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Frontend Test +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (t/deftest test-http-page-create -;; (with-open [conn (db/connection)] -;; (let [user (th/create-user conn 1) -;; proj (uspr/create-project conn {:user (:id user) :name "proj1"})] -;; (with-server {:handler (uft/routes)} -;; (let [uri (str th/+base-url+ "/api/pages") -;; params {:body {:project (:id proj) -;; :name "page1" -;; :data "1" -;; :metadata "1" -;; :width 200 -;; :height 200 -;; :layout "mobile"}} -;; [status data] (th/http-post user uri params)] -;; ;; (println "RESPONSE:" status data) -;; (t/is (= 201 status)) -;; (t/is (= (:data (:body params)) (:data data))) -;; (t/is (= (:user data) (:id user))) -;; (t/is (= (:name data) "page1"))))))) +(t/deftest test-http-page-create + (with-open [conn (db/connection)] + (let [user (th/create-user conn 1) + proj (uspr/create-project conn {:user (:id user) :name "proj1"})] + (th/with-server {:handler uapi/app} + (let [uri (str th/+base-url+ "/api/pages") + params {:body {:project (:id proj) + :name "page1" + :data "1" + :metadata "1" + :width 200 + :height 200 + :layout "mobile"}} + [status data] (th/http-post user uri params)] + ;; (println "RESPONSE:" status data) + (t/is (= 201 status)) + (t/is (= (:data (:body params)) (:data data))) + (t/is (= (:user data) (:id user))) + (t/is (= (:name data) "page1"))))))) -;; (t/deftest test-http-page-update -;; (with-open [conn (db/connection)] -;; (let [user (th/create-user conn 1) -;; proj (uspr/create-project conn {:user (:id user) :name "proj1"}) -;; data {:id (uuid/random) -;; :user (:id user) -;; :project (:id proj) -;; :version 0 -;; :data "1" -;; :metadata "2" -;; :name "page1" -;; :width 200 -;; :height 200 -;; :layout "mobil"} -;; page (uspg/create-page conn data)] -;; (with-server {:handler (uft/routes)} -;; (let [uri (str th/+base-url+ (str "/api/pages/" (:id page))) -;; params {:body (assoc page :data "3")} -;; [status page'] (th/http-put user uri params)] -;; ;; (println "RESPONSE:" status page') -;; (t/is (= 200 status)) -;; (t/is (= "3" (:data page'))) -;; (t/is (= 1 (:version page'))) -;; (t/is (= (:user page') (:id user))) -;; (t/is (= (:name data) "page1"))))))) +(t/deftest test-http-page-update + (with-open [conn (db/connection)] + (let [user (th/create-user conn 1) + proj (uspr/create-project conn {:user (:id user) :name "proj1"}) + data {:id (uuid/random) + :user (:id user) + :project (:id proj) + :version 0 + :data "1" + :metadata "2" + :name "page1" + :width 200 + :height 200 + :layout "mobil"} + page (uspg/create-page conn data)] + (th/with-server {:handler uapi/app} + (let [uri (str th/+base-url+ (str "/api/pages/" (:id page))) + params {:body (assoc page :data "3")} + [status page'] (th/http-put user uri params)] + ;; (println "RESPONSE:" status page') + (t/is (= 200 status)) + (t/is (= "3" (:data page'))) + (t/is (= 1 (:version page'))) + (t/is (= (:user page') (:id user))) + (t/is (= (:name data) "page1"))))))) -;; (t/deftest test-http-page-update-metadata -;; (with-open [conn (db/connection)] -;; (let [user (th/create-user conn 1) -;; proj (uspr/create-project conn {:user (:id user) :name "proj1"}) -;; data {:id (uuid/random) -;; :user (:id user) -;; :project (:id proj) -;; :version 0 -;; :data "1" -;; :metadata "2" -;; :name "page1" -;; :width 200 -;; :height 200 -;; :layout "mobil"} -;; page (uspg/create-page conn data)] -;; (with-server {:handler (uft/routes)} -;; (let [uri (str th/+base-url+ (str "/api/pages/" (:id page) "/metadata")) -;; params {:body (assoc page :data "3")} -;; [status page'] (th/http-put user uri params)] -;; ;; (println "RESPONSE:" status page') -;; (t/is (= 200 status)) -;; (t/is (= "1" (:data page'))) -;; (t/is (= 1 (:version page'))) -;; (t/is (= (:user page') (:id user))) -;; (t/is (= (:name data) "page1"))))))) +(t/deftest test-http-page-update-metadata + (with-open [conn (db/connection)] + (let [user (th/create-user conn 1) + proj (uspr/create-project conn {:user (:id user) :name "proj1"}) + data {:id (uuid/random) + :user (:id user) + :project (:id proj) + :version 0 + :data "1" + :metadata "2" + :name "page1" + :width 200 + :height 200 + :layout "mobil"} + page (uspg/create-page conn data)] + (th/with-server {:handler uapi/app} + (let [uri (str th/+base-url+ (str "/api/pages/" (:id page) "/metadata")) + params {:body (assoc page :data "3")} + [status page'] (th/http-put user uri params)] + ;; (println "RESPONSE:" status page') + (t/is (= 200 status)) + (t/is (= "1" (:data page'))) + (t/is (= 1 (:version page'))) + (t/is (= (:user page') (:id user))) + (t/is (= (:name data) "page1"))))))) -;; (t/deftest test-http-page-delete -;; (with-open [conn (db/connection)] -;; (let [user (th/create-user conn 1) -;; proj (uspr/create-project conn {:user (:id user) :name "proj1"}) -;; data {:id (uuid/random) -;; :user (:id user) -;; :project (:id proj) -;; :version 0 -;; :data "1" -;; :metadata "2" -;; :name "page1" -;; :width 200 -;; :height 200 -;; :layout "mobil"} -;; page (uspg/create-page conn data)] -;; (with-server {:handler (uft/routes)} -;; (let [uri (str th/+base-url+ (str "/api/pages/" (:id page))) -;; [status response] (th/http-delete user uri)] -;; ;; (println "RESPONSE:" status response) -;; (t/is (= 204 status)) -;; (let [sqlv ["SELECT * FROM pages WHERE \"user\"=? AND deleted_at is null" -;; (:id user)] -;; result (sc/fetch conn sqlv)] -;; (t/is (empty? result)))))))) +(t/deftest test-http-page-delete + (with-open [conn (db/connection)] + (let [user (th/create-user conn 1) + proj (uspr/create-project conn {:user (:id user) :name "proj1"}) + data {:id (uuid/random) + :user (:id user) + :project (:id proj) + :version 0 + :data "1" + :metadata "2" + :name "page1" + :width 200 + :height 200 + :layout "mobil"} + page (uspg/create-page conn data)] + (th/with-server {:handler uapi/app} + (let [uri (str th/+base-url+ (str "/api/pages/" (:id page))) + [status response] (th/http-delete user uri)] + ;; (println "RESPONSE:" status response) + (t/is (= 204 status)) + (let [sqlv ["SELECT * FROM pages WHERE \"user\"=? AND deleted_at is null" + (:id user)] + result (sc/fetch conn sqlv)] + (t/is (empty? result)))))))) -;; (t/deftest test-http-page-list-by-project -;; (with-open [conn (db/connection)] -;; (let [user (th/create-user conn 1) -;; proj1 (uspr/create-project conn {:user (:id user) :name "proj1"}) -;; proj2 (uspr/create-project conn {:user (:id user) :name "proj2"}) -;; data {:user (:id user) -;; :version 0 -;; :data "1" -;; :metadata "2" -;; :name "page1" -;; :width 200 -;; :height 200 -;; :layout "mobil"} -;; page1 (uspg/create-page conn (assoc data :project (:id proj1))) -;; page2 (uspg/create-page conn (assoc data :project (:id proj2)))] -;; (with-server {:handler (uft/routes)} -;; (let [uri (str th/+base-url+ (str "/api/projects/" (:id proj1) "/pages")) -;; [status response] (th/http-get user uri)] -;; ;; (println "RESPONSE:" status response) -;; (t/is (= 200 status)) -;; (t/is (= 1 (count response))) -;; (t/is (= (:id (first response)) (:id page1)))))))) +(t/deftest test-http-page-list-by-project + (with-open [conn (db/connection)] + (let [user (th/create-user conn 1) + proj1 (uspr/create-project conn {:user (:id user) :name "proj1"}) + proj2 (uspr/create-project conn {:user (:id user) :name "proj2"}) + data {:user (:id user) + :version 0 + :data "1" + :metadata "2" + :name "page1" + :width 200 + :height 200 + :layout "mobil"} + page1 (uspg/create-page conn (assoc data :project (:id proj1))) + page2 (uspg/create-page conn (assoc data :project (:id proj2)))] + (th/with-server {:handler uapi/app} + (let [uri (str th/+base-url+ (str "/api/pages?project=" (:id proj1))) + [status response] (th/http-get user uri)] + ;; (println "RESPONSE:" status response) + (t/is (= 200 status)) + (t/is (= 1 (count response))) + (t/is (= (:id (first response)) (:id page1)))))))) -;; (t/deftest test-http-page-history-retrieve -;; (with-open [conn (db/connection)] -;; (let [user (th/create-user conn 1) -;; proj (uspr/create-project conn {:user (:id user) :name "proj1"}) -;; data {:id (uuid/random) -;; :user (:id user) -;; :project (:id proj) -;; :version 0 -;; :data "1" -;; :metadata "2" -;; :name "page1" -;; :width 200 -;; :height 200 -;; :layout "mobil"} -;; page (uspg/create-page conn data)] -;; (dotimes [i 100] -;; (let [page (uspg/get-page-by-id conn (:id data))] -;; (uspg/update-page conn (assoc page :data (str i))))) +(t/deftest test-http-page-history-retrieve + (with-open [conn (db/connection)] + (let [user (th/create-user conn 1) + proj (uspr/create-project conn {:user (:id user) :name "proj1"}) + data {:id (uuid/random) + :user (:id user) + :project (:id proj) + :version 0 + :data "1" + :metadata "2" + :name "page1" + :width 200 + :height 200 + :layout "mobil"} + page (uspg/create-page conn data)] + (dotimes [i 100] + (let [page (uspg/get-page-by-id conn (:id data))] + (uspg/update-page conn (assoc page :data (str i))))) -;; ;; Check inserted history -;; (let [sqlv ["SELECT * FROM pages_history WHERE page=?" (:id data)] -;; result (sc/fetch conn sqlv)] -;; (t/is (= (count result) 101))) + ;; Check inserted history + (let [sqlv ["SELECT * FROM pages_history WHERE page=?" (:id data)] + result (sc/fetch conn sqlv)] + (t/is (= (count result) 101))) -;; ;; Check retrieve all items -;; (with-server {:handler (uft/routes)} -;; (let [uri (str th/+base-url+ "/api/pages/" (:id page) "/history") -;; [status result] (th/http-get user uri nil)] -;; ;; (println "RESPONSE:" status result) -;; (t/is (= (count result) 10)) -;; (t/is (= 200 status)) -;; (t/is (= 100 (:version (first result)))) + ;; Check retrieve all items + (th/with-server {:handler uapi/app} + (let [uri (str th/+base-url+ "/api/pages/" (:id page) "/history") + [status result] (th/http-get user uri nil)] + ;; (println "RESPONSE:" status result) + (t/is (= (count result) 10)) + (t/is (= 200 status)) + (t/is (= 100 (:version (first result)))) -;; (let [params {:query {:since (:version (last result)) -;; :max 20}} -;; [status result] (th/http-get user uri params)] -;; ;; (println "RESPONSE:" status result) -;; (t/is (= (count result) 20)) -;; (t/is (= 200 status)) -;; (t/is (= 90 (:version (first result)))))) -;; )))) + (let [params {:query {:since (:version (last result)) + :max 20}} + [status result] (th/http-get user uri params)] + ;; (println "RESPONSE:" status result) + (t/is (= (count result) 20)) + (t/is (= 200 status)) + (t/is (= 90 (:version (first result)))))) + )))) -;; (t/deftest test-http-page-history-update -;; (with-open [conn (db/connection)] -;; (let [user (th/create-user conn 1) -;; proj (uspr/create-project conn {:user (:id user) :name "proj1"}) -;; data {:id (uuid/random) -;; :user (:id user) -;; :project (:id proj) -;; :version 0 -;; :data "1" -;; :metadata "2" -;; :name "page1" -;; :width 200 -;; :height 200 -;; :layout "mobil"} -;; page (uspg/create-page conn data)] +(t/deftest test-http-page-history-update + (with-open [conn (db/connection)] + (let [user (th/create-user conn 1) + proj (uspr/create-project conn {:user (:id user) :name "proj1"}) + data {:id (uuid/random) + :user (:id user) + :project (:id proj) + :version 0 + :data "1" + :metadata "2" + :name "page1" + :width 200 + :height 200 + :layout "mobil"} + page (uspg/create-page conn data)] -;; (dotimes [i 10] -;; (let [page (uspg/get-page-by-id conn (:id data))] -;; (uspg/update-page conn (assoc page :data (str i))))) + (dotimes [i 10] + (let [page (uspg/get-page-by-id conn (:id data))] + (uspg/update-page conn (assoc page :data (str i))))) -;; ;; Check inserted history -;; (let [sql (str "SELECT * FROM pages_history " -;; " WHERE page=? ORDER BY created_at DESC") -;; result (sc/fetch conn [sql (:id data)]) -;; item (first result)] + ;; Check inserted history + (let [sql (str "SELECT * FROM pages_history " + " WHERE page=? ORDER BY created_at DESC") + result (sc/fetch conn [sql (:id data)]) + item (first result)] -;; (with-server {:handler (uft/routes)} -;; (let [uri (str th/+base-url+ -;; "/api/pages/" (:id page) -;; "/history/" (:id item)) -;; params {:body {:label "test" :pinned true}} -;; [status data] (th/http-put user uri params)] -;; ;; (println "RESPONSE:" status data) -;; (t/is (= 200 status)) -;; (t/is (= (:id data) (:id item)))))) + (th/with-server {:handler uapi/app} + (let [uri (str th/+base-url+ + "/api/pages/" (:id page) + "/history/" (:id item)) + params {:body {:label "test" :pinned true}} + [status data] (th/http-put user uri params)] + ;; (println "RESPONSE:" status data) + (t/is (= 200 status)) + (t/is (= (:id data) (:id item)))))) -;; (let [sql (str "SELECT * FROM pages_history " -;; " WHERE page=? AND pinned = true " -;; " ORDER BY created_at DESC") -;; result (sc/fetch-one conn [sql (:id data)])] -;; (t/is (= "test" (:label result))) -;; (t/is (= true (:pinned result))))))) + (let [sql (str "SELECT * FROM pages_history " + " WHERE page=? AND pinned = true " + " ORDER BY created_at DESC") + result (sc/fetch-one conn [sql (:id data)])] + (t/is (= "test" (:label result))) + (t/is (= true (:pinned result)))))))