PageUrl.purs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. module Test.PageUrl
  2. ( main
  3. )
  4. where
  5. import Prelude
  6. import Data.Either (Either(..), isLeft)
  7. import Data.Int64 (Int64)
  8. import Data.Int64 as I64
  9. import Data.Maybe (fromJust)
  10. import Effect (Effect)
  11. import LinkedIn.PageUrl (JobOfferId(..), PageUrl(..), pageUrlP)
  12. import Parsing (runParser)
  13. import Partial.Unsafe (unsafePartial)
  14. import Test.Assert (assert, assertEqual)
  15. toI64 ∷ String → Int64
  16. toI64 s = unsafePartial $ fromJust $ I64.fromString s
  17. main :: Effect Unit
  18. main = do
  19. assertEqual {
  20. actual: runParser "/in/username/details/projects/" pageUrlP,
  21. expected: Right(UrlProjects "username")
  22. }
  23. assertEqual {
  24. actual: runParser "/in/username/details/skills/" pageUrlP,
  25. expected: Right(UrlSkills "username")
  26. }
  27. assertEqual {
  28. actual: runParser "/in/username/details/experience/" pageUrlP,
  29. expected: Right(UrlWorkExperience "username")
  30. }
  31. assertEqual {
  32. actual: runParser "/in/username/details/languages/" pageUrlP,
  33. expected: Right(UrlLanguage "username")
  34. }
  35. assertEqual {
  36. actual: runParser "/in/username/details/education/" pageUrlP,
  37. expected: Right(UrlEducation "username")
  38. }
  39. assertEqual {
  40. actual: runParser "/jobs/view/3764313323/" pageUrlP,
  41. expected: Right(UrlJobOffer (JobOfferId (toI64 "3764313323")))
  42. }
  43. assertEqual {
  44. actual: runParser "/in/username/" pageUrlP,
  45. expected: Right(UrlProfileMain "username")
  46. }
  47. assert $ isLeft $ runParser "/not/an/url/" pageUrlP