{-# LANGUAGE OverloadedStrings #-}
module Main where
import Test.Hspec
import Control.Exception (SomeException(..), toException)
import Npm.Latest (extractVersion, GenericNpmException(..))
import qualified Data.Text as T
instance Eq SomeException where
-- Terrible hack, but this is for tests, so it's fine, right?
a == b = show a == show b
main :: IO ()
main = hspec $ do
describe "extractVersion" $ do
it "is Right for a valid JSON object" $ do
let json = T.unpack "{\"version\": \"1.0\"}"
extractVersion (Right json) `shouldBe` (Right "1.0")
it "is Left for a malformed JSON object" $ do
let json = T.unpack "{\"description\": \"not what we expect\"}"
extractVersion (Right $ json) `shouldBe`
(Left $ toException GenericNpmException)
it "is Left for a malformed JSON object" $ do
let json = T.unpack "not even $ JSON"
extractVersion (Right $ json) `shouldBe`
(Left $ toException GenericNpmException)