packages feed

snaplet-oauth-0.0.6: tests/Weibo.hs

{-# LANGUAGE OverloadedStrings #-}

module Weibo where

import           Data.Aeson                     (decode)
import qualified Data.ByteString.Lazy.Char8     as BSL
import           Data.Maybe                     (fromJust, isJust)
import           Test.Framework                 (Test, defaultMain, testGroup)
import           Test.Framework.Providers.HUnit (testCase)
import           Test.HUnit                     ((@?), (@?=))

import           Snap.Snaplet.OAuth.Weibo


uidTests :: Test
uidTests = testGroup "uid test cases"
                     [ testCase "uid shall be 12345" $ getUid @?= Just aOid
                     , testCase "uid shall be 2709495807" $ getUid2 @?= Just aOid2
                     , testCase "uid shall be any number" $ isJust getUid @? "uid any number test"
                     , testCase "uid is not string" $ getInvalidUid @?= Nothing
                     , testCase "uidstr is string" $ getIdStr @?= "1814581760"
                     , testCase "uidstr is string" $ getNameStr @?= "HaishengWoo"
                     ]

------------------------------------------------

invalidUidString :: BSL.ByteString
invalidUidString = "{\"uid\" : \"12345\" }"

getInvalidUid :: Maybe WeiboUserId
getInvalidUid = decode invalidUidString

------------------------------------------------

aOid :: WeiboUserId
aOid = WeiboUserId 12345

getUid :: Maybe WeiboUserId
getUid = decode ("{\"uid\" : 12345 }" :: BSL.ByteString)


aOid2 = WeiboUserId 2709495807123
getUid2 = decode ("{\"uid\" : 2709495807123 }" :: BSL.ByteString)

------------------------------------------------
getIdStr = wUidStr $ fromJust userInfo
getNameStr = wName $ fromJust userInfo

userInfo :: Maybe WeiboUser
userInfo = decode userInfoStr

userInfoStr :: BSL.ByteString
userInfoStr = BSL.pack  "{\"id\": 1814581760, \"idstr\": \"1814581760\", \"screen_name\": \"HaishengWoo\", \"name\": \"HaishengWoo\", \"url\": \"http://freizl.github.com/\" }"