liblastfm-0.6.0: test/api/Xml/UserSpec.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
module Xml.UserSpec (spec) where
import Lastfm
import Lastfm.User
import Test.Hspec
import Text.Xml.Lens
import SpecHelper
spec :: Spec
spec = do
it "getRecentStations" $
privately (getRecentStations <*> user "liblastfm" <* limit 10)
`shouldHaveXml`
root.node "recentstations".node "station".node "name".text
it "getRecommendedArtists" $
privately (getRecommendedArtists <* limit 10)
`shouldHaveXml`
root.node "recommendations".node "artist".node "name".text
it "getRecommendedEvents" $
privately (getRecommendedEvents <* limit 10)
`shouldHaveXml`
root.node "events".node "event".node "url".text
it "shout" $
shouldHaveXml_ . privately $
shout <*> user "liblastfm" <*> message "test message"
it "getArtistTracks" $
publicly (getArtistTracks <*> user "smpcln" <*> artist "Dvar")
`shouldHaveXml`
root.node "artisttracks".node "track".node "name".text
it "getBannedTracks" $
publicly (getBannedTracks <*> user "smpcln" <* limit 10)
`shouldHaveXml`
root.node "bannedtracks".node "track".node "name".text
it "getEvents" $
publicly (getEvents <*> user "chansonnier" <* limit 5)
`shouldHaveXml`
root.node "events".node "event".node "venue".node "url".text
it "getFriends" $
publicly (getFriends <*> user "smpcln" <* limit 10)
`shouldHaveXml`
root.node "friends".node "user".node "name".text
it "getPlayCount" $
publicly (getInfo <*> user "smpcln")
`shouldHaveXml`
root.node "user".node "playcount".text
it "getGetLovedTracks" $
publicly (getLovedTracks <*> user "smpcln" <* limit 10)
`shouldHaveXml`
root.node "lovedtracks".node "track".node "name".text
it "getNeighbours" $
publicly (getNeighbours <*> user "smpcln" <* limit 10)
`shouldHaveXml`
root.node "neighbours".node "user".node "name".text
it "getNewReleases" $
publicly (getNewReleases <*> user "rj")
`shouldHaveXml`
root.node "albums".node "album".node "url".text
it "getPastEvents" $
publicly (getPastEvents <*> user "mokele" <* limit 5)
`shouldHaveXml`
root.node "events".node "event".node "url".text
it "getPersonalTags" $
publicly (getPersonalTags <*> user "crackedcore" <*> tag "rhythmic noise" <*> taggingType "artist" <* limit 10)
`shouldHaveXml`
root.node "taggings".node "artists".node "artist".node "name".text
it "getPlaylists" $
publicly (getPlaylists <*> user "mokele")
`shouldHaveXml`
root.node "playlists".node "playlist".node "title".text
it "getRecentTracks" $
publicly (getRecentTracks <*> user "smpcln" <* limit 10)
`shouldHaveXml`
root.node "recenttracks".node "track".node "name".text
it "getShouts" $
publicly (getShouts <*> user "smpcln" <* limit 2)
`shouldHaveXml`
root.node "shouts".node "shout".node "body".text
it "getTopAlbums" $
publicly (getTopAlbums <*> user "smpcln" <* limit 5)
`shouldHaveXml`
root.node "topalbums".node "album".node "artist".node "name".text
it "getTopArtists" $
publicly (getTopArtists <*> user "smpcln" <* limit 5)
`shouldHaveXml`
root.node "topartists".node "artist".node "name".text
it "getTopTags" $
publicly (getTopTags <*> user "smpcln" <* limit 10)
`shouldHaveXml`
root.node "toptags".node "tag".node "name".text
it "getTopTracks" $
publicly (getTopTracks <*> user "smpcln" <* limit 10)
`shouldHaveXml`
root.node "toptracks".node "track".node "url".text
it "getWeeklyAlbumChart" $
publicly (getWeeklyAlbumChart <*> user "smpcln")
`shouldHaveXml`
root.node "weeklyalbumchart".node "album".node "url".text
it "getWeeklyArtistChart" $
publicly (getWeeklyArtistChart <*> user "smpcln")
`shouldHaveXml`
root.node "weeklyartistchart".node "artist".node "url".text
it "getWeeklyChartList" $
publicly (getWeeklyChartList <*> user "smpcln")
`shouldHaveXml`
root.node "weeklychartlist".node "chart".attr "from"
it "getWeeklyTrackChart" $
publicly (getWeeklyTrackChart <*> user "smpcln")
`shouldHaveXml`
root.node "weeklytrackchart".node "track".node "url".text