|
|
@@ -220,13 +220,69 @@
|
|
|
(is (= 3 (count (:classes-properties
|
|
|
(db-property-handler/get-block-classes-properties (:db/id (db/entity [:block/uuid fbid]))))))))))
|
|
|
|
|
|
+(defn- get-value-ids
|
|
|
+ [property-name]
|
|
|
+ (:values (:block/schema (db/entity [:block/name property-name]))))
|
|
|
+
|
|
|
+(defn- get-closed-values
|
|
|
+ "Get value from block ids"
|
|
|
+ [values]
|
|
|
+ (set (map #(get-in (db/entity [:block/uuid %]) [:block/schema :value]) values)))
|
|
|
+
|
|
|
;; closed values related
|
|
|
;; upsert-closed-value
|
|
|
;; add-existing-values-to-closed-values!
|
|
|
;; delete-closed-value
|
|
|
-;; get-property-block-created-block
|
|
|
+(deftest closed-values-test
|
|
|
+ (testing "Create properties and closed values"
|
|
|
+ (db-property-handler/set-block-property! repo fbid "property-1" "1" {})
|
|
|
+ (db-property-handler/set-block-property! repo sbid "property-1" "2" {})
|
|
|
+ (let [k "property-1"
|
|
|
+ property (db/entity [:block/name k])]
|
|
|
+ (testing "Add existing values to closed values"
|
|
|
+ (db-property-handler/add-existing-values-to-closed-values! property [1 2])
|
|
|
+ (let [values (get-value-ids k)]
|
|
|
+ (is (every? uuid? values))
|
|
|
+ (is (= #{1 2} (get-closed-values values)))
|
|
|
+ (is (every? #(contains? (:block/type (db/entity [:block/uuid %])) "closed value")
|
|
|
+ values))))
|
|
|
+
|
|
|
+ (testing "Add non-numbers shouldn't work"
|
|
|
+ (let [result (db-property-handler/upsert-closed-value property {:value "not a number"})]
|
|
|
+ (is (= result :value-invalid))
|
|
|
+ (let [values (get-value-ids k)]
|
|
|
+ (is (= #{1 2} (get-closed-values values))))))
|
|
|
+
|
|
|
+ (testing "Add existing value"
|
|
|
+ (let [result (db-property-handler/upsert-closed-value property {:value 2})]
|
|
|
+ (is (= result :value-exists))))
|
|
|
+
|
|
|
+ (testing "Add new value"
|
|
|
+ (let [{:keys [block-id tx-data]} (db-property-handler/upsert-closed-value property {:value 3})]
|
|
|
+ (db/transact! tx-data)
|
|
|
+ (let [b (db/entity [:block/uuid block-id])]
|
|
|
+ (is (= 3 (:value (:block/schema b))))
|
|
|
+ (is (contains? (:block/type b) "closed value")))
|
|
|
+ (let [values (get-value-ids k)]
|
|
|
+ (is (= #{1 2 3} (get-closed-values values))))
|
|
|
+
|
|
|
+ (testing "Update closed value"
|
|
|
+ (let [{:keys [tx-data]} (db-property-handler/upsert-closed-value property {:id block-id
|
|
|
+ :value 4
|
|
|
+ :description "choice 4"})]
|
|
|
+ (db/transact! tx-data)
|
|
|
+ (let [b (db/entity [:block/uuid block-id])]
|
|
|
+ (is (= 4 (:value (:block/schema b))))
|
|
|
+ (is (= "choice 4" (:description (:block/schema b))))
|
|
|
+ (is (contains? (:block/type b) "closed value")))))
|
|
|
+
|
|
|
+ (testing "Delete closed value"
|
|
|
+ (db-property-handler/delete-closed-value! property (db/entity [:block/uuid block-id]))
|
|
|
+ (is (nil? (db/entity [:block/uuid block-id])))
|
|
|
+ (is (= 2 (count (:values (:block/schema (db/entity [:block/name k]))))))))))))
|
|
|
|
|
|
;; others
|
|
|
+;; get-property-block-created-block
|
|
|
;; property-create-new-block
|
|
|
;; convert-property-input-string
|
|
|
;; replace-key-with-id
|