diff --git a/backend/test/backend_tests/rpc_file_test.clj b/backend/test/backend_tests/rpc_file_test.clj index f8701a0c1c..3bbc5e0aa6 100644 --- a/backend/test/backend_tests/rpc_file_test.clj +++ b/backend/test/backend_tests/rpc_file_test.clj @@ -142,126 +142,112 @@ (t/is (= 0 (count result)))))))) (t/deftest file-gc-with-fragments - (letfn [(update-file! [& {:keys [profile-id file-id changes revn] :or {revn 0}}] - (let [params {::th/type :update-file - ::rpc/profile-id profile-id - :id file-id - :session-id (uuid/random) - :revn revn - :vern 0 - :features cfeat/supported-features - :changes changes} - out (th/command! params)] - ;; (th/print-result! out) - (t/is (nil? (:error out))) - (:result out)))] + (let [profile (th/create-profile* 1) + file (th/create-file* 1 {:profile-id (:id profile) + :project-id (:default-project-id profile) + :is-shared false}) - (let [profile (th/create-profile* 1) - file (th/create-file* 1 {:profile-id (:id profile) - :project-id (:default-project-id profile) - :is-shared false}) + page-id (uuid/random) + shape-id (uuid/random)] - page-id (uuid/random) - shape-id (uuid/random)] + ;; Preventive file-gc + (t/is (true? (th/run-task! :file-gc {:file-id (:id file) :revn (:revn file)}))) - ;; Preventive file-gc - (t/is (true? (th/run-task! :file-gc {:file-id (:id file) :revn (:revn file)}))) + ;; Check the number of fragments before adding the page + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + (t/is (= 2 (count rows)))) - ;; Check the number of fragments before adding the page - (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] - (t/is (= 2 (count rows)))) + ;; Add page + (update-file! + :file-id (:id file) + :profile-id (:id profile) + :revn 0 + :vern 0 + :changes + [{:type :add-page + :name "test" + :id page-id}]) - ;; Add page - (update-file! - :file-id (:id file) - :profile-id (:id profile) - :revn 0 - :vern 0 - :changes - [{:type :add-page - :name "test" - :id page-id}]) + ;; Check the number of fragments before adding the page + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + (t/is (= 3 (count rows)))) - ;; Check the number of fragments before adding the page - (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] - (t/is (= 3 (count rows)))) + ;; The file-gc should mark for remove unused fragments + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) - ;; The file-gc should mark for remove unused fragments - (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) + ;; Check the number of fragments + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + (t/is (= 5 (count rows))) + (t/is (= 3 (count (filterv :deleted-at rows))))) - ;; Check the number of fragments - (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] - (t/is (= 5 (count rows))) - (t/is (= 3 (count (filterv :deleted-at rows))))) + ;; The objects-gc should remove unused fragments + (let [res (th/run-task! :objects-gc {})] + (t/is (= 3 (:processed res)))) - ;; The objects-gc should remove unused fragments - (let [res (th/run-task! :objects-gc {})] - (t/is (= 3 (:processed res)))) + ;; Check the number of fragments + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + (t/is (= 2 (count rows)))) - ;; Check the number of fragments - (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] - (t/is (= 2 (count rows)))) + ;; Add shape to page that should add a new fragment + (update-file! + :file-id (:id file) + :profile-id (:id profile) + :revn 0 + :vern 0 + :changes + [{:type :add-obj + :page-id page-id + :id shape-id + :parent-id uuid/zero + :frame-id uuid/zero + :components-v2 true + :obj (cts/setup-shape + {:id shape-id + :name "image" + :frame-id uuid/zero + :parent-id uuid/zero + :type :rect})}]) - ;; Add shape to page that should add a new fragment - (update-file! - :file-id (:id file) - :profile-id (:id profile) - :revn 0 - :vern 0 - :changes - [{:type :add-obj - :page-id page-id - :id shape-id - :parent-id uuid/zero - :frame-id uuid/zero - :components-v2 true - :obj (cts/setup-shape - {:id shape-id - :name "image" - :frame-id uuid/zero - :parent-id uuid/zero - :type :rect})}]) + ;; Check the number of fragments + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + (t/is (= 3 (count rows)))) - ;; Check the number of fragments - (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] - (t/is (= 3 (count rows)))) + ;; The file-gc should mark for remove unused fragments + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) - ;; The file-gc should mark for remove unused fragments - (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) + ;; The objects-gc should remove unused fragments + (let [res (th/run-task! :objects-gc {})] + (t/is (= 3 (:processed res)))) - ;; The objects-gc should remove unused fragments - (let [res (th/run-task! :objects-gc {})] - (t/is (= 3 (:processed res)))) + ;; Check the number of fragments; + (let [rows (th/db-query :file-data {:file-id (:id file) + :type "fragment" + :deleted-at nil})] + (t/is (= 2 (count rows)))) - ;; Check the number of fragments; - (let [rows (th/db-query :file-data {:file-id (:id file) - :type "fragment" - :deleted-at nil})] - (t/is (= 2 (count rows)))) + ;; Lets proceed to delete all changes + (th/db-delete! :file-change {:file-id (:id file)}) + (th/db-delete! :file-data {:file-id (:id file) :type "snapshot"}) - ;; Lets proceed to delete all changes - (th/db-delete! :file-change {:file-id (:id file)}) - (th/db-delete! :file-data {:file-id (:id file) :type "snapshot"}) + (th/db-update! :file + {:has-media-trimmed false} + {:id (:id file)}) - (th/db-update! :file - {:has-media-trimmed false} - {:id (:id file)}) + ;; The file-gc should remove fragments related to changes + ;; snapshots previously deleted. + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) - ;; The file-gc should remove fragments related to changes - ;; snapshots previously deleted. - (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) + ;; Check the number of fragments; + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + ;; (pp/pprint rows) + (t/is (= 4 (count rows))) + (t/is (= 2 (count (remove :deleted-at rows))))) - ;; Check the number of fragments; - (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] - ;; (pp/pprint rows) - (t/is (= 4 (count rows))) - (t/is (= 2 (count (remove :deleted-at rows))))) + (let [res (th/run-task! :objects-gc {})] + (t/is (= 2 (:processed res)))) - (let [res (th/run-task! :objects-gc {})] - (t/is (= 2 (:processed res)))) - - (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] - (t/is (= 2 (count rows))))))) + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + (t/is (= 2 (count rows)))))) (t/deftest file-gc-with-thumbnails (letfn [(add-file-media-object [& {:keys [profile-id file-id]}] @@ -279,20 +265,6 @@ ;; (th/print-result! out) (t/is (nil? (:error out))) - (:result out))) - - (update-file! [& {:keys [profile-id file-id changes revn] :or {revn 0}}] - (let [params {::th/type :update-file - ::rpc/profile-id profile-id - :id file-id - :session-id (uuid/random) - :revn revn - :vern 0 - :features cfeat/supported-features - :changes changes} - out (th/command! params)] - ;; (th/print-result! out) - (t/is (nil? (:error out))) (:result out)))] (let [storage (:app.storage/storage th/*system*)