Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; fn
- (defmethod -event-msg-handler :track/delete [event-msg]
- (let [track-id (:?data event-msg)
- room-state ((-> event-msg :database-fns :get-room-state-fn) (:room-id event-msg))
- track (first (filter #(= track-id (:id %)) (:tracks room-state)))]
- (if track
- (filterv (complement nil?)
- [[:delete-track [(:room-id event-msg) track-id]]
- [:broadcast-to-room [(:room-id event-msg) [:track/delete track-id]]]
- (when (= "upload" (:type track))
- [:files-to-delete [(str "/uploads/" (last (string/split (:src track) #"/")))]])])
- [[:send-to-client [(:uid event-msg) [:error "Attempting to delete a track that does not exist"]]]])))
- ; tests
- (deftest delete-track
- (testing "Deleting a file track"
- (let [room-id "room-id"
- track-id "track-id"
- actions (-event-msg-handler {:id :track/delete
- :?data track-id
- :room-id room-id
- :database-fns {:get-room-state-fn
- (fn [id]
- {:tracks [{:id track-id
- :type "upload"
- :src "/resources/uploads/test1.mp3"}]})}})]
- (is (= [[:delete-track [room-id track-id]]
- [:broadcast-to-room [room-id [:track/delete track-id]]]
- [:files-to-delete ["/uploads/test1.mp3"]]]
- actions))))
- (testing "Deleting a Youtube track"
- (let [room-id "room-id"
- track-id "track-id"
- actions (-event-msg-handler {:id :track/delete
- :?data track-id
- :room-id room-id
- :database-fns {:get-room-state-fn
- (fn [id]
- {:tracks [{:id track-id
- :type :youtube
- :src "https://www.youtube.com/watch?v=N-Dyaoq_oSA"}]})}})]
- (is (= [[:delete-track [room-id track-id]]
- [:broadcast-to-room [room-id [:track/delete track-id]]]]
- actions))))
- (testing "Deleting a track that doesn't exist"
- (let [room-id "room-id"
- track-id "track-id"
- uid "uid"
- actions (-event-msg-handler {:id :track/delete
- :?data track-id
- :room-id room-id
- :uid uid
- :database-fns {:get-room-state-fn
- (fn [id]
- {:tracks []})}})
- action (first actions)]
- (is (= (first action) :send-to-client))
- (let [data (second action)]
- (is (= (first data) uid))
- (is (= (first (second data)) :error))
- (is (string? (second (second data))))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement