Advertisement
Guest User

Untitled

a guest
Aug 24th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; fn
  2. (defmethod -event-msg-handler :track/delete [event-msg]
  3.   (let [track-id (:?data event-msg)
  4.         room-state ((-> event-msg :database-fns :get-room-state-fn) (:room-id event-msg))
  5.         track (first (filter #(= track-id (:id %)) (:tracks room-state)))]
  6.     (if track
  7.       (filterv (complement nil?)
  8.         [[:delete-track [(:room-id event-msg) track-id]]
  9.          [:broadcast-to-room [(:room-id event-msg) [:track/delete track-id]]]
  10.          (when (= "upload" (:type track))
  11.            [:files-to-delete [(str "/uploads/" (last (string/split (:src track) #"/")))]])])
  12.       [[:send-to-client [(:uid event-msg) [:error "Attempting to delete a track that does not exist"]]]])))
  13.  
  14. ; tests
  15. (deftest delete-track
  16.  
  17.   (testing "Deleting a file track"
  18.     (let [room-id "room-id"
  19.           track-id "track-id"
  20.           actions (-event-msg-handler {:id :track/delete
  21.                                        :?data track-id
  22.                                        :room-id room-id
  23.                                        :database-fns {:get-room-state-fn
  24.                                                       (fn [id]
  25.                                                         {:tracks [{:id track-id
  26.                                                                    :type "upload"
  27.                                                                    :src "/resources/uploads/test1.mp3"}]})}})]
  28.  
  29.       (is (= [[:delete-track [room-id track-id]]
  30.               [:broadcast-to-room [room-id [:track/delete track-id]]]
  31.               [:files-to-delete ["/uploads/test1.mp3"]]]
  32.              actions))))
  33.  
  34.   (testing "Deleting a Youtube track"
  35.     (let [room-id "room-id"
  36.           track-id "track-id"
  37.           actions (-event-msg-handler {:id :track/delete
  38.                                        :?data track-id
  39.                                        :room-id room-id
  40.                                        :database-fns {:get-room-state-fn
  41.                                                       (fn [id]
  42.                                                         {:tracks [{:id track-id
  43.                                                                    :type :youtube
  44.                                                                    :src "https://www.youtube.com/watch?v=N-Dyaoq_oSA"}]})}})]
  45.  
  46.       (is (= [[:delete-track [room-id track-id]]
  47.               [:broadcast-to-room [room-id [:track/delete track-id]]]]
  48.              actions))))
  49.  
  50.   (testing "Deleting a track that doesn't exist"
  51.     (let [room-id "room-id"
  52.           track-id "track-id"
  53.           uid "uid"
  54.           actions (-event-msg-handler {:id :track/delete
  55.                                        :?data track-id
  56.                                        :room-id room-id
  57.                                        :uid uid
  58.                                        :database-fns {:get-room-state-fn
  59.                                                       (fn [id]
  60.                                                         {:tracks []})}})
  61.           action (first actions)]
  62.  
  63.       (is (= (first action) :send-to-client))
  64.       (let [data (second action)]
  65.         (is (= (first data) uid))
  66.         (is (= (first (second data)) :error))
  67.         (is (string? (second (second data))))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement