tests for group module
This commit is contained in:
parent
0ada614d62
commit
a91a945bfa
|
@ -535,3 +535,112 @@
|
||||||
(select-keys db [:web3 :current-public-key]))})
|
(select-keys db [:web3 :current-public-key]))})
|
||||||
{:dispatch-n [[:navigate-to-clean :chat-list]
|
{:dispatch-n [[:navigate-to-clean :chat-list]
|
||||||
[:navigate-to :chat topic]]}))))
|
[:navigate-to :chat topic]]}))))
|
||||||
|
|
||||||
|
(reg-fx
|
||||||
|
::save-chat
|
||||||
|
(fn [new-chat]
|
||||||
|
(chats/save new-chat)))
|
||||||
|
|
||||||
|
(reg-fx
|
||||||
|
::start-listen-group
|
||||||
|
(fn [{:keys [new-chat web3 current-public-key]}]
|
||||||
|
(let [{:keys [chat-id public-key private-key contacts name]} new-chat
|
||||||
|
identities (mapv :identity contacts)]
|
||||||
|
(protocol/invite-to-group!
|
||||||
|
{:web3 web3
|
||||||
|
:group {:id chat-id
|
||||||
|
:name name
|
||||||
|
:contacts (conj identities current-public-key)
|
||||||
|
:admin current-public-key
|
||||||
|
:keypair {:public public-key
|
||||||
|
:private private-key}}
|
||||||
|
:identities identities
|
||||||
|
:message {:from current-public-key
|
||||||
|
:message-id (random/id)}})
|
||||||
|
(protocol/start-watching-group!
|
||||||
|
{:web3 web3
|
||||||
|
:group-id chat-id
|
||||||
|
:identity current-public-key
|
||||||
|
:keypair {:public public-key
|
||||||
|
:private private-key}
|
||||||
|
:callback #(dispatch [:incoming-message %1 %2])}))))
|
||||||
|
|
||||||
|
(reg-fx
|
||||||
|
::start-watching-group
|
||||||
|
(fn [{:keys [group-id web3 current-public-key keypair]}]
|
||||||
|
(protocol/start-watching-group!
|
||||||
|
{:web3 web3
|
||||||
|
:group-id group-id
|
||||||
|
:identity current-public-key
|
||||||
|
:keypair keypair
|
||||||
|
:callback #(dispatch [:incoming-message %1 %2])})))
|
||||||
|
|
||||||
|
(defn group-name-from-contacts [contacts selected-contacts username]
|
||||||
|
(->> (select-keys contacts selected-contacts)
|
||||||
|
vals
|
||||||
|
(map :name)
|
||||||
|
(cons username)
|
||||||
|
(string/join ", ")))
|
||||||
|
|
||||||
|
(defn prepare-group-chat
|
||||||
|
[{:keys [current-public-key username]
|
||||||
|
:group/keys [selected-contacts]
|
||||||
|
:contacts/keys [contacts]} group-name]
|
||||||
|
(let [selected-contacts' (mapv #(hash-map :identity %) selected-contacts)
|
||||||
|
chat-name (if-not (string/blank? group-name)
|
||||||
|
group-name
|
||||||
|
(group-name-from-contacts contacts selected-contacts username))
|
||||||
|
{:keys [public private]} (protocol/new-keypair!)]
|
||||||
|
{:chat-id (random/id)
|
||||||
|
:public-key public
|
||||||
|
:private-key private
|
||||||
|
:name chat-name
|
||||||
|
:color default-chat-color
|
||||||
|
:group-chat true
|
||||||
|
:group-admin current-public-key
|
||||||
|
:is-active true
|
||||||
|
:timestamp (random/timestamp)
|
||||||
|
:contacts selected-contacts'}))
|
||||||
|
|
||||||
|
(register-handler-fx
|
||||||
|
:create-new-group-chat-and-open
|
||||||
|
(fn [{:keys [db]} [_ group-name]]
|
||||||
|
(let [new-chat (prepare-group-chat (select-keys db [:group/selected-contacts :current-public-key :username
|
||||||
|
:contacts/contacts])
|
||||||
|
group-name)]
|
||||||
|
{:db (-> db
|
||||||
|
(assoc-in [:chats (:chat-id new-chat)] new-chat)
|
||||||
|
(assoc :group/selected-contacts #{}))
|
||||||
|
::save-chat new-chat
|
||||||
|
::start-listen-group (merge {:new-chat new-chat}
|
||||||
|
(select-keys db [:web3 :current-public-key]))
|
||||||
|
:dispatch-n [[:navigate-to-clean :chat-list]
|
||||||
|
[:navigate-to :chat (:chat-id new-chat)]]})))
|
||||||
|
|
||||||
|
(register-handler-fx
|
||||||
|
:group-chat-invite-received
|
||||||
|
(fn [{{:keys [current-public-key] :as db} :db}
|
||||||
|
[_ {:keys [from]
|
||||||
|
{:keys [group-id group-name contacts keypair timestamp]} :payload}]]
|
||||||
|
(let [{:keys [private public]} keypair]
|
||||||
|
(let [contacts' (keep (fn [ident]
|
||||||
|
(when (not= ident current-public-key)
|
||||||
|
{:identity ident})) contacts)
|
||||||
|
chat {:chat-id group-id
|
||||||
|
:name group-name
|
||||||
|
:group-chat true
|
||||||
|
:group-admin from
|
||||||
|
:public-key public
|
||||||
|
:private-key private
|
||||||
|
:contacts contacts'
|
||||||
|
:added-to-at timestamp
|
||||||
|
:timestamp timestamp
|
||||||
|
:is-active true}
|
||||||
|
exists? (chats/exists? group-id)]
|
||||||
|
(when (or (not exists?) (chats/new-update? timestamp group-id))
|
||||||
|
{::start-watching-group (merge {:group-id group-id
|
||||||
|
:keypair keypair}
|
||||||
|
(select-keys db [:web3 :current-public-key]))
|
||||||
|
:dispatch (if exists?
|
||||||
|
[:update-chat! chat]
|
||||||
|
[:add-chat group-id chat])})))))
|
|
@ -405,17 +405,6 @@
|
||||||
:pending? true}]
|
:pending? true}]
|
||||||
[:account-update-keys]]}))
|
[:account-update-keys]]}))
|
||||||
|
|
||||||
(defn remove-contact-from-group [whisper-identity]
|
|
||||||
(fn [contacts]
|
|
||||||
(remove #(= whisper-identity (:identity %)) contacts)))
|
|
||||||
|
|
||||||
(register-handler-fx
|
|
||||||
:remove-contact-from-group
|
|
||||||
(fn [{:keys [db]} [_ whisper-identity group-id]]
|
|
||||||
(let [{:group/keys [contact-groups]} db
|
|
||||||
group' (update (contact-groups group-id) :contacts (remove-contact-from-group whisper-identity))]
|
|
||||||
{:dispatch [:update-contact-group group']})))
|
|
||||||
|
|
||||||
;;used only by status-dev-cli
|
;;used only by status-dev-cli
|
||||||
(register-handler-fx
|
(register-handler-fx
|
||||||
:remove-contact
|
:remove-contact
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
[re-frame.core :refer [dispatch reg-fx reg-cofx inject-cofx]]
|
[re-frame.core :refer [dispatch reg-fx reg-cofx inject-cofx]]
|
||||||
[status-im.utils.handlers :refer [register-handler-db register-handler-fx]]
|
[status-im.utils.handlers :refer [register-handler-db register-handler-fx]]
|
||||||
[status-im.components.styles :refer [default-chat-color]]
|
[status-im.components.styles :refer [default-chat-color]]
|
||||||
[status-im.data-store.chats :as chats]
|
|
||||||
[status-im.data-store.contact-groups :as groups]
|
[status-im.data-store.contact-groups :as groups]
|
||||||
[clojure.string :as string]
|
[clojure.string :as string]
|
||||||
[status-im.utils.random :as random]
|
[status-im.utils.random :as random]
|
||||||
|
@ -22,11 +21,6 @@
|
||||||
|
|
||||||
;;;; FX
|
;;;; FX
|
||||||
|
|
||||||
(reg-fx
|
|
||||||
::save-chat
|
|
||||||
(fn [new-chat]
|
|
||||||
(chats/save new-chat)))
|
|
||||||
|
|
||||||
(reg-fx
|
(reg-fx
|
||||||
::save-contact-group
|
::save-contact-group
|
||||||
(fn [new-group]
|
(fn [new-group]
|
||||||
|
@ -47,40 +41,6 @@
|
||||||
(fn [[contact-group-id selected-contacts]]
|
(fn [[contact-group-id selected-contacts]]
|
||||||
(groups/add-contacts contact-group-id selected-contacts)))
|
(groups/add-contacts contact-group-id selected-contacts)))
|
||||||
|
|
||||||
(reg-fx
|
|
||||||
::start-listen-group
|
|
||||||
(fn [{:keys [new-chat web3 current-public-key]}]
|
|
||||||
(let [{:keys [chat-id public-key private-key contacts name]} new-chat
|
|
||||||
identities (mapv :identity contacts)]
|
|
||||||
(protocol/invite-to-group!
|
|
||||||
{:web3 web3
|
|
||||||
:group {:id chat-id
|
|
||||||
:name name
|
|
||||||
:contacts (conj identities current-public-key)
|
|
||||||
:admin current-public-key
|
|
||||||
:keypair {:public public-key
|
|
||||||
:private private-key}}
|
|
||||||
:identities identities
|
|
||||||
:message {:from current-public-key
|
|
||||||
:message-id (random/id)}})
|
|
||||||
(protocol/start-watching-group!
|
|
||||||
{:web3 web3
|
|
||||||
:group-id chat-id
|
|
||||||
:identity current-public-key
|
|
||||||
:keypair {:public public-key
|
|
||||||
:private private-key}
|
|
||||||
:callback #(dispatch [:incoming-message %1 %2])}))))
|
|
||||||
|
|
||||||
(reg-fx
|
|
||||||
::start-watching-group
|
|
||||||
(fn [{:keys [group-id web3 current-public-key keypair]}]
|
|
||||||
(protocol/start-watching-group!
|
|
||||||
{:web3 web3
|
|
||||||
:group-id group-id
|
|
||||||
:identity current-public-key
|
|
||||||
:keypair keypair
|
|
||||||
:callback #(dispatch [:incoming-message %1 %2])})))
|
|
||||||
|
|
||||||
;;;; Handlers
|
;;;; Handlers
|
||||||
|
|
||||||
(register-handler-db
|
(register-handler-db
|
||||||
|
@ -103,75 +63,6 @@
|
||||||
(fn [db [_ id]]
|
(fn [db [_ id]]
|
||||||
(update db :selected-participants conj id)))
|
(update db :selected-participants conj id)))
|
||||||
|
|
||||||
(defn group-name-from-contacts [contacts selected-contacts username]
|
|
||||||
(->> (select-keys contacts selected-contacts)
|
|
||||||
vals
|
|
||||||
(map :name)
|
|
||||||
(cons username)
|
|
||||||
(string/join ", ")))
|
|
||||||
|
|
||||||
(defn prepare-chat [{:keys [current-public-key username]
|
|
||||||
:group/keys [selected-contacts]
|
|
||||||
:contacts/keys [contacts]} group-name]
|
|
||||||
(let [selected-contacts' (mapv #(hash-map :identity %) selected-contacts)
|
|
||||||
chat-name (if-not (string/blank? group-name)
|
|
||||||
group-name
|
|
||||||
(group-name-from-contacts contacts selected-contacts username))
|
|
||||||
{:keys [public private]} (protocol/new-keypair!)]
|
|
||||||
{:chat-id (random/id)
|
|
||||||
:public-key public
|
|
||||||
:private-key private
|
|
||||||
:name chat-name
|
|
||||||
:color default-chat-color
|
|
||||||
:group-chat true
|
|
||||||
:group-admin current-public-key
|
|
||||||
:is-active true
|
|
||||||
:timestamp (random/timestamp)
|
|
||||||
:contacts selected-contacts'}))
|
|
||||||
|
|
||||||
(register-handler-fx
|
|
||||||
:create-new-group-chat-and-open
|
|
||||||
(fn [{:keys [db]} [_ group-name]]
|
|
||||||
(let [new-chat (prepare-chat (select-keys db [:group/selected-contacts :current-public-key :username
|
|
||||||
:contacts/contacts])
|
|
||||||
group-name)]
|
|
||||||
{:db (-> db
|
|
||||||
(assoc-in [:chats (:chat-id new-chat)] new-chat)
|
|
||||||
(assoc :group/selected-contacts #{}))
|
|
||||||
::save-chat new-chat
|
|
||||||
::start-listen-group (merge {:new-chat new-chat}
|
|
||||||
(select-keys db [:web3 :current-public-key]))
|
|
||||||
:dispatch-n [[:navigate-to-clean :chat-list]
|
|
||||||
[:navigate-to :chat (:chat-id new-chat)]]})))
|
|
||||||
|
|
||||||
(register-handler-fx
|
|
||||||
:group-chat-invite-received
|
|
||||||
(fn [{{:keys [current-public-key] :as db} :db}
|
|
||||||
[_ {:keys [from]
|
|
||||||
{:keys [group-id group-name contacts keypair timestamp]} :payload}]]
|
|
||||||
(let [{:keys [private public]} keypair]
|
|
||||||
(let [contacts' (keep (fn [ident]
|
|
||||||
(when (not= ident current-public-key)
|
|
||||||
{:identity ident})) contacts)
|
|
||||||
chat {:chat-id group-id
|
|
||||||
:name group-name
|
|
||||||
:group-chat true
|
|
||||||
:group-admin from
|
|
||||||
:public-key public
|
|
||||||
:private-key private
|
|
||||||
:contacts contacts'
|
|
||||||
:added-to-at timestamp
|
|
||||||
:timestamp timestamp
|
|
||||||
:is-active true}
|
|
||||||
exists? (chats/exists? group-id)]
|
|
||||||
(when (or (not exists?) (chats/new-update? timestamp group-id))
|
|
||||||
{::start-watching-group (merge {:group-id group-id
|
|
||||||
:keypair keypair}
|
|
||||||
(select-keys db [:web3 :current-public-key]))
|
|
||||||
:dispatch (if exists?
|
|
||||||
[:update-chat! chat]
|
|
||||||
[:add-chat group-id chat])})))))
|
|
||||||
|
|
||||||
(register-handler-fx
|
(register-handler-fx
|
||||||
:create-new-contact-group
|
:create-new-contact-group
|
||||||
(fn [{{:group/keys [contact-groups selected-contacts] :as db} :db} [_ group-name]]
|
(fn [{{:group/keys [contact-groups selected-contacts] :as db} :db} [_ group-name]]
|
||||||
|
@ -185,7 +76,7 @@
|
||||||
::save-contact-group new-group})))
|
::save-contact-group new-group})))
|
||||||
|
|
||||||
(register-handler-fx
|
(register-handler-fx
|
||||||
:update-contact-group
|
::update-contact-group
|
||||||
(fn [{:keys [db]} [_ new-group]]
|
(fn [{:keys [db]} [_ new-group]]
|
||||||
{:db (update db :group/contact-groups merge {(:group-id new-group) new-group})
|
{:db (update db :group/contact-groups merge {(:group-id new-group) new-group})
|
||||||
::save-contact-group new-group}))
|
::save-contact-group new-group}))
|
||||||
|
@ -262,6 +153,17 @@
|
||||||
{:db (update-in db [:group/contact-groups group-id :contacts] #(into [] (set (concat % new-identities))))
|
{:db (update-in db [:group/contact-groups group-id :contacts] #(into [] (set (concat % new-identities))))
|
||||||
::add-contacts-to-contact-group [group-id contacts]}))))
|
::add-contacts-to-contact-group [group-id contacts]}))))
|
||||||
|
|
||||||
|
(defn remove-contact-from-group [whisper-identity]
|
||||||
|
(fn [contacts]
|
||||||
|
(remove #(= whisper-identity (:identity %)) contacts)))
|
||||||
|
|
||||||
|
(register-handler-fx
|
||||||
|
:remove-contact-from-group
|
||||||
|
(fn [{:keys [db]} [_ whisper-identity group-id]]
|
||||||
|
(let [{:group/keys [contact-groups]} db
|
||||||
|
group' (update (contact-groups group-id) :contacts (remove-contact-from-group whisper-identity))]
|
||||||
|
{:dispatch [::update-contact-group group']})))
|
||||||
|
|
||||||
(register-handler-fx
|
(register-handler-fx
|
||||||
:delete-contact-group
|
:delete-contact-group
|
||||||
(fn [{{:group/keys [contact-group-id] :as db} :db} _]
|
(fn [{{:group/keys [contact-group-id] :as db} :db} _]
|
||||||
|
|
|
@ -221,8 +221,7 @@
|
||||||
(.clearWatch
|
(.clearWatch
|
||||||
navigator.geolocation
|
navigator.geolocation
|
||||||
@watch-id)
|
@watch-id)
|
||||||
(dispatch [:update-geolocation (js->clj % :keywordize-keys true)]))))
|
(dispatch [:update-geolocation (js->clj % :keywordize-keys true)])))))))]))))
|
||||||
(dispatch [:set-in [:debug :watch-id] @watch-id]))))]))))
|
|
||||||
|
|
||||||
(register-handler :update-geolocation
|
(register-handler :update-geolocation
|
||||||
(fn [db [_ geolocation]]
|
(fn [db [_ geolocation]]
|
||||||
|
|
|
@ -94,10 +94,21 @@
|
||||||
:fullscreen true
|
:fullscreen true
|
||||||
:suggestions-trigger "on-change"}})
|
:suggestions-trigger "on-change"}})
|
||||||
|
|
||||||
|
(def test-contact-group
|
||||||
|
{:group-id "1501682106404-685e041e-38e7-593e-b42c-fb4cabd7faa4"
|
||||||
|
:name "Test"
|
||||||
|
:timestamp 0
|
||||||
|
:order 0
|
||||||
|
:pending? false
|
||||||
|
:contacts (list
|
||||||
|
{:identity "bchat"}
|
||||||
|
{:identity "Commiteth"}
|
||||||
|
{:identity "demo-bot"})})
|
||||||
|
|
||||||
(def dapps-contact-group
|
(def dapps-contact-group
|
||||||
{:group-id "dapps"
|
{:group-id "dapps"
|
||||||
:name "ÐApps"
|
:name "ÐApps"
|
||||||
:order 0
|
:order 1
|
||||||
:timestamp 0
|
:timestamp 0
|
||||||
:contacts [{:identity "wallet"}
|
:contacts [{:identity "wallet"}
|
||||||
{:identity "oaken-water-meter"}
|
{:identity "oaken-water-meter"}
|
||||||
|
@ -127,6 +138,7 @@
|
||||||
{"browse" browse-contact-from-realm-db
|
{"browse" browse-contact-from-realm-db
|
||||||
"wallet" wallet-contact})
|
"wallet" wallet-contact})
|
||||||
|
|
||||||
|
|
||||||
(defn test-fixtures []
|
(defn test-fixtures []
|
||||||
(rf/reg-fx ::handlers/init-store #())
|
(rf/reg-fx ::handlers/init-store #())
|
||||||
|
|
||||||
|
@ -136,14 +148,22 @@
|
||||||
(rf/reg-fx ::contacts-events/stop-watching-contact #())
|
(rf/reg-fx ::contacts-events/stop-watching-contact #())
|
||||||
(rf/reg-fx ::contacts-events/send-contact-request-fx #())
|
(rf/reg-fx ::contacts-events/send-contact-request-fx #())
|
||||||
|
|
||||||
|
(rf/reg-fx ::group-events/save-contact-group #())
|
||||||
(rf/reg-fx ::group-events/save-contact-groups #())
|
(rf/reg-fx ::group-events/save-contact-groups #())
|
||||||
(rf/reg-fx ::group-events/add-contacts-to-contact-group #())
|
(rf/reg-fx ::group-events/add-contacts-to-contact-group #())
|
||||||
|
(rf/reg-fx ::group-events/save-contact-group-property #())
|
||||||
|
(rf/reg-fx ::group-events/add-contacts-to-contact-group #())
|
||||||
|
|
||||||
(rf/reg-cofx
|
(rf/reg-cofx
|
||||||
::contacts-events/get-all-contacts
|
::contacts-events/get-all-contacts
|
||||||
(fn [coeffects _]
|
(fn [coeffects _]
|
||||||
(assoc coeffects :all-contacts [browse-contact-from-realm-db])))
|
(assoc coeffects :all-contacts [browse-contact-from-realm-db])))
|
||||||
|
|
||||||
|
(rf/reg-cofx
|
||||||
|
::group-events/get-all-contact-groups
|
||||||
|
(fn [coeffects _]
|
||||||
|
(assoc coeffects :all-groups {(:group-id test-contact-group) test-contact-group})))
|
||||||
|
|
||||||
;;TODO implement tests later for :add-chat? and :bot-url
|
;;TODO implement tests later for :add-chat? and :bot-url
|
||||||
(rf/reg-cofx
|
(rf/reg-cofx
|
||||||
::contacts-events/get-default-contacts-and-groups
|
::contacts-events/get-default-contacts-and-groups
|
||||||
|
@ -155,6 +175,7 @@
|
||||||
|
|
||||||
(deftest contacts-events
|
(deftest contacts-events
|
||||||
"load-contacts
|
"load-contacts
|
||||||
|
load-contact-groups
|
||||||
load-default-contacts (add-contact-groups, add-contacts, add-contacts-to-group ;TODO add-chat, load-commands!)
|
load-default-contacts (add-contact-groups, add-contacts, add-contacts-to-group ;TODO add-chat, load-commands!)
|
||||||
add-contact-handler (add-new-contact-and-open-chat, status-im.contacts.events/add-new-contact,
|
add-contact-handler (add-new-contact-and-open-chat, status-im.contacts.events/add-new-contact,
|
||||||
status-im.contacts.events/send-contact-request ;TODO start-chat)
|
status-im.contacts.events/send-contact-request ;TODO start-chat)
|
||||||
|
@ -162,7 +183,10 @@
|
||||||
contact-update-received (update-contact ;TODO :update-chat!)
|
contact-update-received (update-contact ;TODO :update-chat!)
|
||||||
hide-contact (update-contact ;TODO :account-update-keys)
|
hide-contact (update-contact ;TODO :account-update-keys)
|
||||||
add-contact-handler (add-pending-contact, status-im.contacts.events/add-new-contact
|
add-contact-handler (add-pending-contact, status-im.contacts.events/add-new-contact
|
||||||
status-im.contacts.events/send-contact-request ;TODO :discoveries-send-portions)"
|
status-im.contacts.events/send-contact-request ;TODO :discoveries-send-portions)
|
||||||
|
create-new-contact-group
|
||||||
|
set-contact-group-name
|
||||||
|
save-contact-group-order"
|
||||||
|
|
||||||
(run-test-sync
|
(run-test-sync
|
||||||
|
|
||||||
|
@ -185,11 +209,18 @@
|
||||||
(is (= {"browse" browse-contact-from-realm-db} @contacts))
|
(is (= {"browse" browse-contact-from-realm-db} @contacts))
|
||||||
(is (= browse-global-commands @global-commands)))
|
(is (= browse-global-commands @global-commands)))
|
||||||
|
|
||||||
(testing ":load-default-contacts! event"
|
(testing ":load-contact-groups event"
|
||||||
|
|
||||||
;;Assert the initial state
|
;;Assert the initial state
|
||||||
(is (and (map? @contact-groups) (empty? @contact-groups)))
|
(is (and (map? @contact-groups) (empty? @contact-groups)))
|
||||||
|
|
||||||
|
(rf/dispatch [:load-contact-groups])
|
||||||
|
|
||||||
|
(is (= {(:group-id test-contact-group) test-contact-group}
|
||||||
|
@contact-groups)))
|
||||||
|
|
||||||
|
(testing ":load-default-contacts! event"
|
||||||
|
|
||||||
;; :load-default-contacts! event dispatches next 5 events
|
;; :load-default-contacts! event dispatches next 5 events
|
||||||
;;
|
;;
|
||||||
;; :add-contact-groups
|
;; :add-contact-groups
|
||||||
|
@ -199,11 +230,17 @@
|
||||||
;;TODO :load-commands!
|
;;TODO :load-commands!
|
||||||
(rf/dispatch [:load-default-contacts!])
|
(rf/dispatch [:load-default-contacts!])
|
||||||
|
|
||||||
(is (= {"dapps" dapps-contact-group} (update @contact-groups "dapps" assoc :timestamp 0)))
|
(rf/dispatch [:set-in [:group/contact-groups "dapps" :timestamp] 0])
|
||||||
|
|
||||||
|
(is (= {"dapps" dapps-contact-group
|
||||||
|
(:group-id test-contact-group) test-contact-group}
|
||||||
|
@contact-groups))
|
||||||
|
|
||||||
(is (= contacts-browse-wallet
|
(is (= contacts-browse-wallet
|
||||||
@contacts)))
|
@contacts)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(let [new-contact-public-key "0x048f7d5d4bda298447bbb5b021a34832509bd1a8dbe4e06f9b7223d00a59b6dc14f6e142b21d3220ceb3155a6d8f40ec115cd96394d3cc7c55055b433a1758dc74"
|
(let [new-contact-public-key "0x048f7d5d4bda298447bbb5b021a34832509bd1a8dbe4e06f9b7223d00a59b6dc14f6e142b21d3220ceb3155a6d8f40ec115cd96394d3cc7c55055b433a1758dc74"
|
||||||
new-contact-address "5392ccb49f2e9fef8b8068b3e3b5ba6c020a9aca"
|
new-contact-address "5392ccb49f2e9fef8b8068b3e3b5ba6c020a9aca"
|
||||||
new-contact {:name ""
|
new-contact {:name ""
|
||||||
|
@ -302,4 +339,106 @@
|
||||||
|
|
||||||
(is (= (assoc contacts-browse-wallet new-contact-public-key (assoc recieved-contact''
|
(is (= (assoc contacts-browse-wallet new-contact-public-key (assoc recieved-contact''
|
||||||
:pending? false))
|
:pending? false))
|
||||||
@contacts)))))))))))
|
@contacts)))
|
||||||
|
|
||||||
|
(testing ":create-new-contact-group event"
|
||||||
|
|
||||||
|
(let [new-group-name "new group"]
|
||||||
|
|
||||||
|
(rf/dispatch [:select-contact new-contact-public-key])
|
||||||
|
(rf/dispatch [:select-contact "wallet"])
|
||||||
|
(rf/dispatch [:select-contact "browse"])
|
||||||
|
(rf/dispatch [:deselect-contact "browse"])
|
||||||
|
|
||||||
|
(rf/dispatch [:create-new-contact-group new-group-name])
|
||||||
|
|
||||||
|
(rf/dispatch [:deselect-contact "wallet"])
|
||||||
|
(rf/dispatch [:deselect-contact new-contact-public-key])
|
||||||
|
|
||||||
|
(let [new-group-id (->> @contact-groups
|
||||||
|
(vals)
|
||||||
|
(filter #(= (:name %) new-group-name))
|
||||||
|
(first)
|
||||||
|
(:group-id))
|
||||||
|
new-group {:group-id new-group-id
|
||||||
|
:name new-group-name
|
||||||
|
:order 2
|
||||||
|
:timestamp 0
|
||||||
|
:contacts [{:identity new-contact-public-key}
|
||||||
|
{:identity "wallet"}]}
|
||||||
|
groups-with-new-group {new-group-id new-group
|
||||||
|
"dapps" dapps-contact-group
|
||||||
|
(:group-id test-contact-group) test-contact-group}]
|
||||||
|
|
||||||
|
(rf/dispatch [:set-in [:group/contact-groups new-group-id :timestamp] 0])
|
||||||
|
|
||||||
|
(is (= groups-with-new-group @contact-groups))
|
||||||
|
|
||||||
|
(let [groups-with-new-group' (update groups-with-new-group new-group-id assoc :name "new group name")]
|
||||||
|
|
||||||
|
(testing ":set-contact-group-name event"
|
||||||
|
|
||||||
|
(rf/reg-event-db ::prepare-group-name
|
||||||
|
(fn [db _] (assoc db :new-chat-name "new group name"
|
||||||
|
:group/contact-group-id new-group-id)))
|
||||||
|
|
||||||
|
(rf/dispatch [::prepare-group-name])
|
||||||
|
(rf/dispatch [:set-contact-group-name])
|
||||||
|
|
||||||
|
(is (= groups-with-new-group' @contact-groups)))
|
||||||
|
|
||||||
|
(let [groups-with-new-group'' (-> groups-with-new-group'
|
||||||
|
(update new-group-id assoc :order 1)
|
||||||
|
(update "dapps" assoc :order 2))]
|
||||||
|
|
||||||
|
(testing ":save-contact-group-order event"
|
||||||
|
|
||||||
|
(rf/reg-event-db ::prepare-groups-order
|
||||||
|
(fn [db _]
|
||||||
|
(assoc db :group/groups-order
|
||||||
|
(->> (vals (:group/contact-groups db))
|
||||||
|
(remove :pending?)
|
||||||
|
(sort-by :order >)
|
||||||
|
(map :group-id)))))
|
||||||
|
|
||||||
|
(rf/dispatch [::prepare-groups-order])
|
||||||
|
(rf/dispatch [:change-contact-group-order 1 0])
|
||||||
|
(rf/dispatch [:save-contact-group-order])
|
||||||
|
|
||||||
|
(is (= groups-with-new-group'' @contact-groups)))
|
||||||
|
|
||||||
|
(testing ":add-selected-contacts-to-group event"
|
||||||
|
|
||||||
|
(rf/dispatch [:select-contact "browse"])
|
||||||
|
(rf/dispatch [:add-selected-contacts-to-group])
|
||||||
|
(rf/dispatch [:deselect-contact "browse"])
|
||||||
|
|
||||||
|
(is (= (update groups-with-new-group'' new-group-id assoc :contacts [{:identity new-contact-public-key}
|
||||||
|
{:identity "wallet"}
|
||||||
|
{:identity "browse"}])
|
||||||
|
@contact-groups)))
|
||||||
|
|
||||||
|
(testing ":remove-contact-from-group event"
|
||||||
|
|
||||||
|
(rf/dispatch [:remove-contact-from-group "browse" new-group-id])
|
||||||
|
|
||||||
|
(is (= groups-with-new-group'' @contact-groups)))
|
||||||
|
|
||||||
|
|
||||||
|
(testing ":add-contacts-to-group event"
|
||||||
|
|
||||||
|
(rf/dispatch [:add-contacts-to-group new-group-id ["browse"]])
|
||||||
|
|
||||||
|
(is (= (update groups-with-new-group'' new-group-id assoc :contacts [{:identity new-contact-public-key}
|
||||||
|
{:identity "wallet"}
|
||||||
|
{:identity "browse"}])
|
||||||
|
@contact-groups))
|
||||||
|
|
||||||
|
(rf/dispatch [:remove-contact-from-group "browse" new-group-id]))
|
||||||
|
|
||||||
|
(testing ":delete-contact-group event"
|
||||||
|
|
||||||
|
(rf/dispatch [:delete-contact-group])
|
||||||
|
|
||||||
|
(is (= (update groups-with-new-group'' new-group-id assoc :pending? true)
|
||||||
|
@contact-groups))))))))))))))))
|
Loading…
Reference in New Issue