Просмотр исходного кода

Add getOutputFromFile utility function

jherve 1 год назад
Родитель
Сommit
4003c81c6c
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