PageUrl.purs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. module Test.PageUrl where
  2. import Prelude
  3. import Data.Either (Either(..), isLeft)
  4. import Data.Int64 (Int64)
  5. import Data.Int64 as I64
  6. import Data.Maybe (fromJust)
  7. import LinkedIn.PageUrl (PageUrl(..), pageUrlP)
  8. import LinkedIn.UI.Basic.Types (JobOfferId(..))
  9. import Parsing (runParser)
  10. import Partial.Unsafe (unsafePartial)
  11. import Test.Spec (Spec, describe, it)
  12. import Test.Spec.Assertions (shouldEqual, shouldSatisfy)
  13. toI64 ∷ String → Int64
  14. toI64 s = unsafePartial $ fromJust $ I64.fromString s
  15. pageUrlSpec :: Spec Unit
  16. pageUrlSpec = do
  17. describe "Page URL parsers" do
  18. it "projects page" do
  19. runParser "/in/username/details/projects/" pageUrlP `shouldEqual` Right(UrlProjects "username")
  20. it "skills page" do
  21. runParser "/in/username/details/skills/" pageUrlP `shouldEqual` Right(UrlSkills "username")
  22. it "experience page" do
  23. runParser "/in/username/details/experience/" pageUrlP `shouldEqual` Right(UrlWorkExperience "username")
  24. it "languages page" do
  25. runParser "/in/username/details/languages/" pageUrlP `shouldEqual` Right(UrlLanguage "username")
  26. it "education page" do
  27. runParser "/in/username/details/education/" pageUrlP `shouldEqual` Right(UrlEducation "username")
  28. it "jobs page" do
  29. runParser "/jobs/view/3764313323/" pageUrlP `shouldEqual` Right(UrlJobOffer (JobOfferId (toI64 "3764313323")))
  30. it "recommended jobs page" do
  31. runParser "/jobs/collections/recommended/" pageUrlP `shouldEqual` Right(UrlListRecommendedJobOffers)
  32. it "jobs search page" do
  33. runParser "/jobs/search/" pageUrlP `shouldEqual` Right(UrlSearchJobOffers)
  34. it "not an url" do
  35. runParser "/not/a/supported/url/" pageUrlP `shouldSatisfy` isLeft