76 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
| {-# LANGUAGE OverloadedStrings #-}
 | |
| {-# LANGUAGE NoMonomorphismRestriction #-}
 | |
| {-# OPTIONS_GHC -fno-warn-orphans #-}
 | |
| 
 | |
| module Main where
 | |
| 
 | |
| -- cabal missing-home-modules workaround from hledger-lib needed here ?
 | |
| -- {-# LANGUAGE PackageImports #-}
 | |
| 
 | |
| import Test.Hspec (hspec)
 | |
| import Yesod.Default.Config
 | |
| import Yesod.Test
 | |
| 
 | |
| import Hledger.Web.Application (makeFoundation)
 | |
| import Hledger.Web.Foundation
 | |
| import Hledger.Web.Settings (parseExtra)
 | |
| import Hledger.Web.WebOptions -- (defwebopts, cliopts_)
 | |
| -- import Hledger.Cli.CliOptions -- (defcliopts, reportspec_)
 | |
| -- import Hledger  -- .Reports.ReportOptions (defreportopts, forecast_)
 | |
| 
 | |
| main :: IO ()
 | |
| main = do
 | |
|   conf <- Yesod.Default.Config.loadConfig $ 
 | |
|             (configSettings Testing){ csParseExtra = parseExtra }
 | |
| 
 | |
|   foundation <- makeFoundation conf defwebopts
 | |
|   hspec $ yesodSpec foundation specs
 | |
| 
 | |
|   -- run hledger-web with some forecasted transactions
 | |
|   -- XXX problem: these tests use makeFoundation, bypassing the journal setup in Hledger.Web.Main
 | |
|   -- d <- getCurrentDay
 | |
|   -- let
 | |
|   --   ropts = defreportopts{forecast_=Just nulldatespan}
 | |
|   --   rspec = case reportOptsToSpec d ropts of
 | |
|   --             Left e   -> error $ "failed to set up report options for tests, shouldn't happen: " ++ show e
 | |
|   --             Right rs -> rs
 | |
|   -- foundationForecast <- makeFoundation conf 
 | |
|   --   defwebopts{cliopts_=defcliopts{file_=["hledger-web/tests/forecast.j"], reportspec_=rspec}}
 | |
|   -- hspec $ yesodSpec foundationForecast specsForecast
 | |
| 
 | |
| -- https://hackage.haskell.org/package/yesod-test/docs/Yesod-Test.html
 | |
| 
 | |
| specs :: YesodSpec App
 | |
| specs = do
 | |
|   ydescribe "hledger-web basic functionality" $ do
 | |
| 
 | |
|     yit "serves a reasonable-looking journal page" $ do
 | |
|       get JournalR
 | |
|       statusIs 200
 | |
|       bodyContains "Add a transaction"
 | |
| 
 | |
|     yit "serves a reasonable-looking register page" $ do
 | |
|       get RegisterR
 | |
|       statusIs 200
 | |
|       bodyContains "accounts"
 | |
| 
 | |
| -- specsForecast :: YesodSpec App
 | |
| -- specsForecast = do
 | |
| --   ydescribe "hledger-web --forecast" $ do
 | |
| --     yit "serves a reasonable-looking journal page" $ do
 | |
| --       get JournalR
 | |
| --       statusIs 200
 | |
| --       bodyContains "Add a transaction"
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| -- post "/" $ do
 | |
| --   addNonce
 | |
| --   fileByLabel "Choose a file" "tests/main.hs" "text/plain" -- talk about self-reference
 | |
| --   byLabel "What's on the file?" "Some Content"
 | |
| -- statusIs 200
 | |
| -- htmlCount ".message" 1
 | |
| -- htmlAllContain ".message" "Some Content"
 | |
| -- htmlAllContain ".message" "text/plain"
 |