NLinker icon

Ntf IO test 1

NLinker | PRO | 07/28/17 11:12:09 AM UTC | 0 ⭐ | 950 👁️ | Never ⏰ | []
Haskell |

3.12 KB

|

None

|

0 👍

/

0 👎

{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings     #-}
{-# LANGUAGE ScopedTypeVariables   #-}
 
module VertigoIO.IntegrationTest where
 
import Control.Lens                 ((&), (.~), (^.))
import Control.Monad                (forM_, void)
import Control.Monad.Free           (MonadFree, iterM)
import Control.Monad.Identity       (runIdentity)
import Control.Monad.IO.Class       (MonadIO, liftIO)
import Control.Monad.State          (MonadState, State, StateT(StateT), get, put, runState,
                                     runStateT)
import Control.Monad.Trans.Identity (runIdentityT)
import Control.Monad.Trans.Reader   (runReaderT)
import Data.Maybe                   (fromJust)
import Data.Monoid                  ((<>))
import Data.Text
import Data.UUID                    (fromText)
import Vertigo.AppM
import Vertigo.Dsl.Notify
import Vertigo.Dsl.RunProd
import Vertigo.Dsl.RunTest
import Vertigo.Ext                  (buildEnvironmentExt)
import Vertigo.Token                (createToken)
import Vertigo.Types.Config         (Config(Config), EnvEnum(..), enumToConfig, port)
import Vertigo.Types.DeviceInfo
import Vertigo.Types.User
 
import qualified Data.Map                       as M
import qualified Vertigo.Types.Notification     as N
import qualified Vertigo.Types.Notification.Ids as N
 
 
-- test against real service
run0 :: IO ()
run0 = do
  let uid1 = UserId $ fromJust $ fromText "3054130c-1925-48e5-9f1f-50bd1134e859"
  ext <- buildEnvironmentExt
  dis <- liftAppToIO ext $ do
    -- userServiceGetUser :: JWT.JSON -> UserId -> Free NotifyDsl (Maybe User)
    -- userServiceGetDevices :: JWT.JSON -> UserId -> Free NotifyDsl (Maybe [DeviceInfo])
    _userMb <- runProd $ userServiceGetUser uid1
    devicesMb <- runProd $ userServiceGetDevices uid1
    liftIO $ putStrLn "--------------------------------------------------"
    -- update diManufacturer
    forM_ (fromJust devicesMb) $ \d ->
      runProd $ userServiceUpdateDevice uid1 (d & diManufacturer .~ "temp")
    _devicesMb1 <- runProd $ userServiceGetDevices uid1
    liftIO $ putStrLn "--------------------------------------------------"
    -- revert
    forM_ (fromJust devicesMb) $ \d ->
      runProd $ userServiceUpdateDevice uid1 d
    _devicesMb2 <- runProd $ userServiceGetDevices uid1
    liftIO $ putStrLn "--------------------------------------------------"
    -- check
    return ()
  liftIO $ putStrLn ""
  liftIO $ print dis
 
run1 :: IO ()
run1 = do
  let conf = enumToConfig LOCAL
  ext <- buildEnvironmentExt conf
  token <- runReaderT (createToken (user0 ^. userId)) ext
  m <- runStateT (runProd $ postNotification conf (Just token) ntf0) database
  print m
 
-- test data --
 
database :: FakeDb
database = FakeDb (M.fromList [fdbEntry user0 Nothing]) (M.fromList []) (M.fromList [])
 
ntf0 = Notification {
    nReceiverUid      = user0 ^. userId
  , nNotificationType = Broadcast
  , nTitle            = "title"
  , nPayload          = "payload"
  }
 
user0 = User (UserId $ fromJust $ fromText "06a8b2d0-b1a9-441b-9a12-e420002ab0de") (UserName "User0")

Comments