module Main where import Rebase.Prelude hiding (takeWhile) import Test.Tasty import Test.Tasty.Runners import Test.Tasty.HUnit import qualified Main.Decoders as Decoders main = defaultMain $ testGroup "All tests" [ testCase "Primitive" $ let input = "{\"year\" : 2001, \"month\": 1, \"day\": 2}" result = Decoders.valueToByteStringToEither Decoders.date input in assertEqual (show result) (Right (2001, 1, 2)) result , testCase "In different order" $ let input = "{\"month\": 1, \"day\": 2, \"year\" : 2001}" result = Decoders.valueToByteStringToEither Decoders.date input in assertEqual (show result) (Right (2001, 1, 2)) result , testCase "With redundant fields" $ let input = "{\"redundant1\": \"4\", \"month\": 1, \"redundant2\": \"3\", \"day\": 2, \"year\" : 2001}" result = Decoders.valueToByteStringToEither Decoders.date input in assertEqual (show result) (Right (2001, 1, 2)) result , testCase "With trailing fields" $ let input = "{\"month\": 1, \"day\": 2, \"year\" : 2001, \"trailing\": \"3\", \"trailing\": \"4\"}" result = Decoders.valueToByteStringToEither Decoders.date input in assertEqual (show result) (Right (2001, 1, 2)) result , testCase "Array" $ let input = "[2001, 1, 2]" result = Decoders.valueToByteStringToEither Decoders.date input in assertEqual (show result) (Right (2001, 1, 2)) result , testCase "Nested object lookup" $ let input = "{\"response\":{\"numFound\":1}}" result = Decoders.valueToByteStringToEither Decoders.solrSelectResponseNumFound input in assertEqual (show result) (Right 1) result , testCase "solrSelectResponseNumFound" $ let input = "{\"responseHeader\":{\"status\":0,\"QTime\":0,\"params\":{\"json\":\"{\\\"query\\\":\\\"text:Akuttmedisinsk*\\\",\\\"offset\\\":0,\\\"limit\\\":100}\",\"wt\":\"json\"}},\"response\":{\"numFound\":1,\"start\":0,\"docs\":[{\"id\":\"ark:9788205464377\",\"text\":[\"Akuttmedisinsk sykepleie: utenfor sykehus utenfor sykehus Boken gir en samlet fremstilling av akuttmedisinske tilstander og skader, tilpasset sykepleiere.\\n\\nL\195\166restoffet er forskningsbasert\\nog bygd opp med observasjoner og tiltak p\195\165 basalt og avansert niv\195\165. Boken er rikt illustrert og inneholder mange kasuistikker som\\nhjelper leseren \195\165 knytte sammen teori og praksis.\\nBoken dekker pensumlitteratur p\195\165 fagomr\195\165det akuttmedisin i bachelorutdanningen i\\nsykepleie. Innholdet har et tydelig prehospitalt fokus, men er ogs\195\165 egnet for sykepleiere som arbeider i sykehus. Boken kan leses\\nmed stort utbytte av helsepersonell som arbeider i ambulansetjenesten, akuttmottak, p\195\165 legevakter og AMK-sentraler.\\nAkuttmedisinsk\\nsykepleie - utenfor sykehus utkom f\195\184rste gang i 2001. I denne nye utgaven er stoffet oppdatert og omfattende revidert, og flere nye\\nkapitler er kommet til.\\nSend SMS med kodeord AKUTTMEDISINSK til 2030 og f\195\165 tilsendt bok portofritt hjem til mobiladressen Haugen, Jan Erik\"],\"_version_\":1530231185253335040}]}}" result = Decoders.valueToByteStringToEither Decoders.solrSelectResponseNumFound input in assertEqual (show result) (Right 1) result , testCase "solrSelectResponseDocumentIDs" $ let input = "{\"responseHeader\":{\"status\":0,\"QTime\":0,\"params\":{\"json\":\"{\\\"query\\\":\\\"text:Akuttmedisinsk*\\\",\\\"offset\\\":0,\\\"limit\\\":100}\",\"wt\":\"json\"}},\"response\":{\"numFound\":1,\"start\":0,\"docs\":[{\"id\":\"ark:9788205464377\",\"text\":[\"Akuttmedisinsk sykepleie: utenfor sykehus utenfor sykehus Boken gir en samlet fremstilling av akuttmedisinske tilstander og skader, tilpasset sykepleiere.\\n\\nL\195\166restoffet er forskningsbasert\\nog bygd opp med observasjoner og tiltak p\195\165 basalt og avansert niv\195\165. Boken er rikt illustrert og inneholder mange kasuistikker som\\nhjelper leseren \195\165 knytte sammen teori og praksis.\\nBoken dekker pensumlitteratur p\195\165 fagomr\195\165det akuttmedisin i bachelorutdanningen i\\nsykepleie. Innholdet har et tydelig prehospitalt fokus, men er ogs\195\165 egnet for sykepleiere som arbeider i sykehus. Boken kan leses\\nmed stort utbytte av helsepersonell som arbeider i ambulansetjenesten, akuttmottak, p\195\165 legevakter og AMK-sentraler.\\nAkuttmedisinsk\\nsykepleie - utenfor sykehus utkom f\195\184rste gang i 2001. I denne nye utgaven er stoffet oppdatert og omfattende revidert, og flere nye\\nkapitler er kommet til.\\nSend SMS med kodeord AKUTTMEDISINSK til 2030 og f\195\165 tilsendt bok portofritt hjem til mobiladressen Haugen, Jan Erik\"],\"_version_\":1530231185253335040}]}}" result = Decoders.valueToByteStringToEither Decoders.solrSelectResponseDocumentIDs input in assertEqual (show result) (Right ["ark:9788205464377"]) result ]