content: {-# LANGUAGE OverloadedStrings #-}
  
  module JsonSpec (spec) where
  
  import           Data.Aeson
  import           Data.ByteString.Lazy.UTF8
  import qualified Data.Text                 as T
  import           Test.Hspec
  import           Text.JSON.JPath
  import           Web.Telegram.API.Bot
  
  spec :: Spec
  spec = do
    let getType q = jPath (T.unpack "type") (toString (encode q))
    describe "type of serialized inline query result" $ do
      it "should be article" $
        getType iq_article `shouldBe` ["\"article\""]
      it "should be photo" $
        getType iq_photo `shouldBe` ["\"photo\""]
      it "should be gif" $
        getType iq_gif `shouldBe` ["\"gif\""]
      it "should be mpeg4_gif" $
        getType iq_mpeg `shouldBe` ["\"mpeg4_gif\""]
      it "should be video" $
        getType iq_video `shouldBe` ["\"video\""]
      it "should be audio" $
        getType iq_audio `shouldBe` ["\"audio\""]
      it "should be contact" $
        getType iq_contact `shouldBe` ["\"contact\""]
      it "should be document" $
        getType iq_document `shouldBe` ["\"document\""]
      it "should be location" $
        getType iq_location `shouldBe` ["\"location\""]
      it "should be venue" $
        getType iq_venue `shouldBe` ["\"venue\""]
    describe "type of serialized cached inline query result" $ do
      it "should be audio" $
        getType cached_audio `shouldBe` ["\"audio\""]
      it "should be voice" $
        getType cached_voice `shouldBe` ["\"voice\""]
      it "should be video" $
        getType cached_video `shouldBe` ["\"video\""]
      it "should be document" $
        getType cached_doc `shouldBe` ["\"document\""]
      it "should be sticker" $
        getType cached_sticker `shouldBe` ["\"sticker\""]
      it "should be mpeg4_gif" $
        getType cached_mpeg `shouldBe` ["\"mpeg4_gif\""]
      it "should be gif" $
        getType cached_gif `shouldBe` ["\"gif\""]
      it "should be photo" $
        getType cached_photo `shouldBe` ["\"photo\""]
  
  message_content :: InputMessageContent
  message_content = InputTextMessageContent "test message content" Nothing Nothing
  
  iq_article :: InlineQueryResult
  iq_article = inlineQueryResultArticle "" "text article content" message_content
  
  iq_photo :: InlineQueryResult
  iq_photo = inlineQueryResultPhoto "" "" ""
  
  iq_gif :: InlineQueryResult
  iq_gif = inlineQueryResultGif "" "" ""
  
  iq_mpeg :: InlineQueryResult
  iq_mpeg = inlineQueryResultMpeg4Gif "" "" ""
  
  iq_video :: InlineQueryResult
  iq_video = inlineQueryResultVideo "" "" "video/mpeg" "" ""
  
  iq_audio :: InlineQueryResult
  iq_audio = inlineQueryResultAudio "" "" ""
  
  iq_contact :: InlineQueryResult
  iq_contact = inlineQueryResultContact "" "" ""
  
  iq_document :: InlineQueryResult
  iq_document = inlineQueryResultDocument "" "" "" ""
  
  iq_location :: InlineQueryResult
  iq_location = inlineQueryResultLocation "" 0.0 0.0 ""
  
  iq_venue :: InlineQueryResult
  iq_venue = inlineQueryResultVenue "" 0.0 0.0 "" ""
  
  cached_audio :: InlineQueryResult
  cached_audio = inlineQueryResultCachedAudio "" ""
  
  cached_voice :: InlineQueryResult
  cached_voice = inlineQueryResultCachedVoice "" "" ""
  
  cached_video :: InlineQueryResult
  cached_video = inlineQueryResultCachedVideo "" "" ""
  
  cached_doc :: InlineQueryResult
  cached_doc = inlineQueryResultCachedDocument "" "" ""
  
  cached_sticker :: InlineQueryResult
  cached_sticker = inlineQueryResultCachedSticker "" ""
  
  cached_mpeg :: InlineQueryResult
  cached_mpeg = inlineQueryResultCachedMpeg4Gif "" ""
  
  cached_gif :: InlineQueryResult
  cached_gif = inlineQueryResultCachedGif "" ""
  
  cached_photo :: InlineQueryResult
  cached_photo = inlineQueryResultCachedPhoto "" ""
  