| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- module Test.ArtDecoCard where
- import Prelude
- import Data.Date (Month(..))
- import Data.Either (Either(..), hush, isRight)
- import Data.List (List(..), (:))
- import Data.List.NonEmpty (NonEmptyList(..))
- import Data.List.NonEmpty as NEL
- import Data.Maybe (Maybe(..), fromJust)
- import Data.NonEmpty (NonEmpty(..))
- import Data.Traversable (traverse)
- import Effect.Class (liftEffect)
- import LinkedIn.DetachedNode (DetachedNode(..), toDetached)
- import LinkedIn.Extractible (query)
- import LinkedIn.Page.WorkExperiences (WorkExperiencesPage(..))
- import LinkedIn.Profile.WorkExperience (WorkExperience(..))
- import LinkedIn.Profile.WorkExperience as PWE
- import LinkedIn.QueryRunner (runQuery)
- import LinkedIn.UI.Basic.Types (Duration(..), TimeSpan(..))
- import LinkedIn.UI.Components.ArtDeco (ArtDecoCenter(..), ArtDecoCenterContent(..), ArtDecoCenterHeader(..), ArtDecoPvsEntity(..), ArtDecoPvsEntitySubComponent(..))
- import LinkedIn.UI.Components.ArtDecoCard (ArtDecoCardElement(..))
- import Node.JsDom (jsDomFromFile)
- import Partial.Unsafe (unsafePartial)
- import Test.Spec (Spec, describe, it)
- import Test.Spec.Assertions (shouldEqual)
- import Test.Utils (toMonthYear', fromDetachedToUI)
- artDecoCardsSpec :: Spec Unit
- artDecoCardsSpec = do
- describe "Art deco cards parsing" do
- it "works" do
- dom <- liftEffect $ jsDomFromFile "test/examples/andrew_ng_experiences.html"
- wep <- liftEffect $ runQuery $ query @WorkExperiencesPage dom
- isRight wep `shouldEqual` true
- let
- WorkExperiencesPage cards = unsafePartial $ fromJust $ hush wep
- head = NEL.head cards
- headCard <- liftEffect $ traverse toDetached head
- headCard `shouldEqual` ArtDecoCardElement {
- pvs_entity: (ArtDecoPvsEntity {
- center: (ArtDecoCenter {
- content: (ArtDecoCenterContent
- (NonEmptyList (NonEmpty
- (ArtDecoPvsEntitySubComponent (Just (
- DetachedElement {
- classes: Nil,
- content: "DeepLearning.AI provides\ntechnical training on Generative AI, Machine Learning, Deep Learning,\nand other topics. We also offer a widely read newsletter, The Batch\n(thebatch.ai), that covers what matters in AI right now. Our courses are often created with industry-leading AI companies (AWS,\nGoogle, OpenAI, etc.), and we offer both short courses that can be\ncompleted in an hour, and longer courses and specializations hosted on\nCoursera that give you a solid foundation in some aspect of AI. These\ncourses are designed to offer hands-on practice with AI technologies,\nand you will gain practical, job-ready skills. Whether you are just starting out in AI or seeking to further an existing\ncareer, come see if we can help, at http://deeplearning.ai!",
- id: Nothing,
- tag: "SPAN"
- }))) Nil))),
- header: (ArtDecoCenterHeader {
- bold: (DetachedElement {
- classes: Nil,
- content: "Founder",
- id: Nothing,
- tag: "SPAN" }
- ), light: (Just (NonEmptyList (
- NonEmpty (
- DetachedElement {
- classes: ("pvs-entity__caption-wrapper" : Nil),
- content: "juin 2017 - aujourd’hui · 6 ans 7 mois",
- id: Nothing,
- tag: "SPAN"
- }) ((DetachedElement {
- classes: Nil,
- content: "Palo Alto, California, United States",
- id: Nothing,
- tag: "SPAN"
- }) : Nil)))),
- normal: (Just (DetachedElement {
- classes: Nil,
- content: "DeepLearning.AI",
- id: Nothing,
- tag: "SPAN" }))
- }) }),
- side: unit
- })
- }
- let
- jobOffer = (PWE.fromUI <=< fromDetachedToUI) headCard
- jobOffer `shouldEqual` Right (WorkExperience {
- company: Just "DeepLearning.AI",
- contractType: Nothing,
- description: Just "DeepLearning.AI provides\ntechnical training on Generative AI, Machine Learning, Deep Learning,\nand other topics. We also offer a widely read newsletter, The Batch\n(thebatch.ai), that covers what matters in AI right now. Our courses are often created with industry-leading AI companies (AWS,\nGoogle, OpenAI, etc.), and we offer both short courses that can be\ncompleted in an hour, and longer courses and specializations hosted on\nCoursera that give you a solid foundation in some aspect of AI. These\ncourses are designed to offer hands-on practice with AI technologies,\nand you will gain practical, job-ready skills. Whether you are just starting out in AI or seeking to further an existing\ncareer, come see if we can help, at http://deeplearning.ai!",
- duration: Just (YearsMonth 6 7),
- position: "Founder",
- timeSpan: Just (TimeSpanToToday (toMonthYear' June 2017))
- })
|