liblastfm-0.6.0: test/api/Xml/GeoSpec.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
module Xml.GeoSpec (spec) where
import Data.Text (Text)
import Lastfm
import Lastfm.Geo
import Test.Hspec
import Text.Xml.Lens
import SpecHelper
spec :: Spec
spec = do
it "getEvents" $
publicly (getEvents <* location "Moscow" <* limit 5)
`shouldHaveXml`
root.node "events".node "event".node "id".text
describe "get*Artist*" $ do
let xmlQuery :: Fold Document Text
xmlQuery = root.node "topartists".node "artist".node "name".text
it "getMetroArtistChart" $
publicly (getMetroArtistChart <*> metro "Saint Petersburg" <*> country "Russia")
`shouldHaveXml`
xmlQuery
it "getMetroHypeArtistChart" $
publicly (getMetroHypeArtistChart <*> metro "New York" <*> country "United States")
`shouldHaveXml`
xmlQuery
it "getMetroUniqueArtistChart" $
publicly (getMetroUniqueArtistChart <*> metro "Minsk" <*> country "Belarus")
`shouldHaveXml`
xmlQuery
it "getTopArtists" $
publicly (getTopArtists <*> country "Belarus" <* limit 3)
`shouldHaveXml`
xmlQuery
it "getMetroWeeklyChartlist" $
publicly (getMetroWeeklyChartlist <*> metro "Moscow")
`shouldHaveXml`
root.node "weeklychartlist".node "chart".attr "from"
it "getMetros" $
publicly (getMetros <* country "Russia")
`shouldHaveXml`
root.node "metros".node "metro".node "name".text
describe "get*Track*" $ do
let xmlQuery :: Fold Document Text
xmlQuery = root.node "toptracks".node "track".node "name".text
it "getTopTracks" $
publicly (getTopTracks <*> country "Ukraine" <* limit 2)
`shouldHaveXml`
xmlQuery
it "getMetroUniqueTrackChart" $
publicly (getMetroUniqueTrackChart <*> metro "Moscow" <*> country "Russia")
`shouldHaveXml`
xmlQuery
it "getMetroHypeTrackChart" $
publicly (getMetroHypeTrackChart <*> metro "Moscow" <*> country "Russia")
`shouldHaveXml`
xmlQuery
it "getMetroTrackChart" $
publicly (getMetroTrackChart <*> metro "Boston" <*> country "United States")
`shouldHaveXml`
xmlQuery