Jelajahi Sumber

Add getOutputFromFile utility function

jherve 2 tahun lalu
induk
melakukan
8ca53b371b
3 mengubah file dengan 35 tambahan dan 9 penghapusan
  1. 20 1
      test/ArtDecoCard.purs
  2. 2 7
      test/JobsUnifiedTopCard.purs
  3. 13 1
      test/Utils.purs

File diff ditekan karena terlalu besar
+ 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