瀏覽代碼

Add getOutputFromFile utility function

jherve 2 年之前
父節點
當前提交
8ca53b371b
共有 3 個文件被更改,包括 35 次插入9 次删除
  1. 20 1
      test/ArtDecoCard.purs
  2. 2 7
      test/JobsUnifiedTopCard.purs
  3. 13 1
      test/Utils.purs

文件差異過大導致無法顯示
+ 20 - 1
test/ArtDecoCard.purs


+ 2 - 7
test/JobsUnifiedTopCard.purs

@@ -2,24 +2,20 @@ module Test.JobsUnifiedTopCard where
 
 
 import Prelude
 import Prelude
 
 
-import Control.Monad.Except (runExceptT)
 import Data.Either (Either(..))
 import Data.Either (Either(..))
 import Data.List (List(..), (:))
 import Data.List (List(..), (:))
 import Data.List.NonEmpty (NonEmptyList(..))
 import Data.List.NonEmpty (NonEmptyList(..))
 import Data.Maybe (Maybe(..))
 import Data.Maybe (Maybe(..))
 import Data.NonEmpty (NonEmpty(..))
 import Data.NonEmpty (NonEmpty(..))
-import Effect.Class (liftEffect)
 import LinkedIn.DetachedNode (DetachedNode(..))
 import LinkedIn.DetachedNode (DetachedNode(..))
 import LinkedIn.Jobs.JobOffer (JobOffer(..))
 import LinkedIn.Jobs.JobOffer (JobOffer(..))
-import LinkedIn.Output (run)
 import LinkedIn.Output.Types (Output(..))
 import LinkedIn.Output.Types (Output(..))
 import LinkedIn.Page.JobOffer (JobOfferPage(..))
 import LinkedIn.Page.JobOffer (JobOfferPage(..))
 import LinkedIn.UI.Basic.Types (JobFlexibility(..))
 import LinkedIn.UI.Basic.Types (JobFlexibility(..))
 import LinkedIn.UI.Components.JobsUnifiedTopCard (JobsUnifiedTopCardElement(..), TopCardAction(..), TopCardInsight(..), TopCardInsightContent(..), TopCardPrimaryDescription(..), TopCardSecondaryInsight(..))
 import LinkedIn.UI.Components.JobsUnifiedTopCard (JobsUnifiedTopCardElement(..), TopCardAction(..), TopCardInsight(..), TopCardInsightContent(..), TopCardPrimaryDescription(..), TopCardSecondaryInsight(..))
-import Node.JsDom (jsDomFromFile)
 import Test.Spec (Spec, describe, it)
 import Test.Spec (Spec, describe, it)
 import Test.Spec.Assertions (shouldEqual)
 import Test.Spec.Assertions (shouldEqual)
-import Test.Utils (detachFromFile)
+import Test.Utils (detachFromFile, getOutputFromFile)
 import Type.Proxy (Proxy(..))
 import Type.Proxy (Proxy(..))
 
 
 jobsUnifiedTopCardSpec :: Spec Unit
 jobsUnifiedTopCardSpec :: Spec Unit
@@ -123,8 +119,7 @@ jobsUnifiedTopCardSpec = do
       }))
       }))
 
 
     it "reads the JobOffer" do
     it "reads the JobOffer" do
-      dom <- liftEffect $ jsDomFromFile "test/examples/job_offer.html"
-      jobOffer <- liftEffect $ runExceptT $ run (Proxy :: Proxy JobOfferPage) dom
+      jobOffer <- getOutputFromFile (Proxy :: Proxy JobOfferPage) "test/examples/job_offer.html"
 
 
       jobOffer `shouldEqual` Right (OutJobOffer (JobOffer {
       jobOffer `shouldEqual` Right (OutJobOffer (JobOffer {
         companyDomain: (Just "Technologies et services de l’information"),
         companyDomain: (Just "Technologies et services de l’information"),

+ 13 - 1
test/Utils.purs

@@ -12,7 +12,8 @@ import Effect.Aff (Aff)
 import Effect.Class (liftEffect)
 import Effect.Class (liftEffect)
 import LinkedIn.CanBeQueried (class CanBeQueried)
 import LinkedIn.CanBeQueried (class CanBeQueried)
 import LinkedIn.DetachedNode (DetachedNode)
 import LinkedIn.DetachedNode (DetachedNode)
-import LinkedIn.Output (runToDetached)
+import LinkedIn.Extractible (class Extractible)
+import LinkedIn.Output (Output, OutputError, run, runToDetached)
 import LinkedIn.QueryRunner (QueryError)
 import LinkedIn.QueryRunner (QueryError)
 import LinkedIn.UI.Basic.Parser (toYear)
 import LinkedIn.UI.Basic.Parser (toYear)
 import LinkedIn.UI.Basic.Types (MonthYear(..))
 import LinkedIn.UI.Basic.Types (MonthYear(..))
@@ -51,3 +52,14 @@ detachFromString :: forall t.
 detachFromString proxy string = do
 detachFromString proxy string = do
   dom <- liftEffect $ jsDomParse string
   dom <- liftEffect $ jsDomParse string
   liftEffect $ runExceptT $ runToDetached proxy dom
   liftEffect $ runExceptT $ runToDetached proxy dom
+
+getOutputFromFile :: forall t.
+  Traversable t
+  => Extractible t
+  => CanBeQueried Document t
+  => Proxy t
+  -> String
+  -> Aff (Either OutputError Output)
+getOutputFromFile proxy string = do
+  dom <- liftEffect $ jsDomFromFile string
+  liftEffect $ runExceptT $ run proxy dom