Skip to content

Commit

Permalink
Add test for compilePackage'
Browse files Browse the repository at this point in the history
  • Loading branch information
Kroisse committed Mar 11, 2017
1 parent 795b56d commit 8ab0f6b
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
4 changes: 3 additions & 1 deletion src/Nirum/Targets/JavaScript.hs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{-# LANGUAGE RecordWildCards, TypeFamilies #-}
module Nirum.Targets.JavaScript ( JavaScript ) where
module Nirum.Targets.JavaScript ( JavaScript (..)
, compilePackage'
) where

import Data.Aeson.Encode.Pretty ( encodePrettyToTextBuilder )
import Data.Aeson.Types ( ToJSON, (.=), object, toJSON )
Expand Down
28 changes: 25 additions & 3 deletions test/Nirum/Targets/JavaScriptSpec.hs
Original file line number Diff line number Diff line change
@@ -1,16 +1,38 @@
{-# LANGUAGE PartialTypeSignatures #-}
{-# LANGUAGE OverloadedLists, PartialTypeSignatures #-}
module Nirum.Targets.JavaScriptSpec ( spec ) where

import qualified Data.Map.Strict as M
import qualified Data.SemVer as SV
import Text.Toml.Types ( emptyTable )
import Test.Hspec.Meta

import qualified Nirum.Constructs.DeclarationSet as DS
import Nirum.Constructs.Module ( Module (..) )
import Nirum.Targets.JavaScript
import Nirum.Package.Metadata ( MetadataError ( FieldError )
import Nirum.Package.Metadata ( Metadata (..)
, MetadataError ( FieldError )
, Package (..)
, parseTarget )
import qualified Nirum.Package.ModuleSet as MS


emptyModule :: Module
emptyModule = Module { types = DS.empty, docs = Nothing }


spec :: Spec
spec =
spec = do
describe "compilePackage'" $
it "should produce JavaScript files per corresponding module" $ do
let Right modules' = MS.fromList [(["fruits"], emptyModule)]
let package = Package { metadata = Metadata { version = SV.version 0 0 1 [] []
, authors = []
, target = JavaScript { packageName = "dummy" }
}
, modules = modules'
}
let m = compilePackage' package
M.keysSet m `shouldBe` ["package.json", "src/fruits.js"]
describe "parseTarget" $
it "should require \"name\" field" $
(parseTarget emptyTable :: Either MetadataError JavaScript) `shouldBe` Left (FieldError "name")

0 comments on commit 8ab0f6b

Please sign in to comment.