| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- module Test.JobsUnifiedTopCard where
- import Prelude
- import Data.Either (hush, isRight)
- import Data.List (List(..), (:))
- import Data.List.NonEmpty (NonEmptyList(..))
- import Data.Maybe (Maybe(..), fromJust)
- import Data.NonEmpty (NonEmpty(..))
- import Data.Traversable (traverse)
- import Effect (Effect)
- import LinkedIn.DetachedNode (DetachedNode(..), toDetached)
- import LinkedIn.JobsUnifiedTopCard (JobsUnifiedTopCardElement(..), TopCardAction(..), TopCardInsight(..), TopCardInsightContent(..), TopCardPrimaryDescription(..), TopCardSecondaryInsight(..))
- import LinkedIn.Page.JobOffer (JobOfferPage(..))
- import LinkedIn.Page.JobOffer as PageJO
- import LinkedIn.QueryRunner (runQuery)
- import Node.JsDom (jsDomFromFile)
- import Partial.Unsafe (unsafePartial)
- import Test.Assert (assert, assertEqual)
- testJobsUnifiedTopCard :: Effect Unit
- testJobsUnifiedTopCard = do
- dom <- jsDomFromFile "test/examples/job_offer.html"
- wep <- runQuery $ PageJO.query dom
- assert $ isRight wep
- let
- JobOfferPage jobCard = unsafePartial $ fromJust $ hush wep
- topCard <- traverse toDetached jobCard
- assertEqual {
- actual: topCard,
- expected: JobsUnifiedTopCardElement {
- actions: (Just (NonEmptyList
- (NonEmpty (TopCardActionApplyButton (DetachedButton {
- classes: ("jobs-apply-button" : "artdeco-button" : "artdeco-button--3" : "artdeco-button--primary" : "ember-view" : Nil),
- content: "Candidature simplifiée",
- role: Nothing
- })) ((TopCardActionApplyButton (DetachedButton {
- classes: ("jobs-save-button" : "artdeco-button" : "artdeco-button--3" : "artdeco-button--secondary" : Nil),
- content: "Enregistrer Enregistrer Data Engineer H/F - Secteur Energie chez LINCOLN",
- role: Nothing
- })) : Nil)))),
- header: (DetachedElement {
- classes: ("t-24" : "t-bold" : "job-details-jobs-unified-top-card__job-title" : Nil),
- content: "Data Engineer H/F - Secteur Energie",
- id: Nothing,
- tag: "H1"
- }),
- insights: (Just (NonEmptyList
- (NonEmpty (TopCardInsight {
- content: (TopCardInsightContentSecondary {
- primary: (DetachedElement {
- classes: Nil,
- content: "Sur site",
- id: Nothing,
- tag: "SPAN"
- }),
- secondary: (NonEmptyList (NonEmpty (TopCardSecondaryInsightNested
- (DetachedElement {
- classes: Nil,
- content: "Temps plein",
- id: Nothing,
- tag: "SPAN"
- })) ((TopCardSecondaryInsightPlain
- (DetachedElement {
- classes: ("job-details-jobs-unified-top-card__job-insight-view-model-secondary" : Nil),
- content: "Confirmé",
- id: Nothing,
- tag: "SPAN"
- })) : Nil))) }),
- icon: DetachedLiIcon "job"
- }) ((TopCardInsight {
- content: (TopCardInsightContentSingle (DetachedElement {
- classes: Nil,
- content: "201-500 employés · Technologies et services de l’information",
- id: Nothing,
- tag: "SPAN" })),
- icon: DetachedLiIcon "company"
- }) : (TopCardInsight {
- content: (TopCardInsightContentSingle (DetachedElement {
- classes: Nil,
- content: "2 anciens élèves travaillent ici",
- id: Nothing,
- tag: "SPAN" })),
- icon: DetachedLiIcon "people"
- }) : (TopCardInsight {
- content: (TopCardInsightContentSingle (DetachedElement {
- classes: Nil,
- content: "Découvrez comment vous vous positionnez par rapport à 87 candidats. Essai Premium pour 0 EUR",
- id: Nothing,
- tag: "SPAN" })),
- icon: (DetachedSvgElement { dataTestIcon: (Just "lightbulb-medium"), id: Nothing, tag: "svg" })
- }) : (TopCardInsight {
- content: (TopCardInsightContentButton (DetachedButton {
- classes: ("job-details-jobs-unified-top-card__job-insight-text-button" : Nil),
- content: "9 compétences sur 11 correspondent à votre profil, vous pourriez bien convenir pour ce poste",
- role: Nothing
- })),
- icon: (DetachedSvgElement { dataTestIcon: (Just "checklist-medium"), id: Nothing, tag: "svg" })
- }) : Nil)))),
- primaryDescription: (TopCardPrimaryDescription {
- link: (DetachedA { content: "LINCOLN", href: "https://www.linkedin.com/company/lincoln-/life" }),
- text: (DetachedText "· Boulogne-Billancourt, Île-de-France, France"),
- tvmText: (Just (NonEmptyList
- (NonEmpty (DetachedElement {
- classes: ("tvm__text" : "tvm__text--neutral" : Nil),
- content: "il y a 2 semaines",
- id: Nothing,
- tag: "SPAN"
- }) ((DetachedElement {
- classes: ("tvm__text" : "tvm__text--neutral" : Nil),
- content: "·",
- id: Nothing,
- tag: "SPAN"
- }) : (DetachedElement {
- classes: ("tvm__text" : "tvm__text--neutral" : Nil),
- content: "87 candidats",
- id: Nothing,
- tag: "SPAN"
- }) : Nil
- ))
- ))
- })
- }
- }
|