@@ -6,19 +6,20 @@ import Data.Array.NonEmpty as NEA
66import Data.BigInt (BigInt)
77import Data.Either (Either(..))
88import Data.Foldable (traverse_)
9−import Data.JSDate as JSDAte
109import Data.JSDate as JSDate
1110import Data.List as List
1211import Data.List.Lazy as LazyList
1312import Data.Map as Map
14−import Data.Maybe (Maybe(..))
13+import Data.Maybe (Maybe(..), fromMaybe')
1514import Data.Newtype (class Newtype, un)
1615import Data.Nullable as Nullable
1716import Data.Tuple (Tuple(..))
1817import Data.Tuple.Nested ((/\))
1918import Data.Variant (Variant, inj)
2019import Effect.Class (liftEffect)
20+import Effect.Now (nowDate, nowDateTime)
2121import Foreign.Object as Object
22+import Partial.Unsafe (unsafeCrashWith, unsafePartial)
2223import Test.Spec (Spec, describe, it)
2324import Test.Spec.Assertions (shouldEqual)
2425import Test.Util (roundtrips)
@@ -91,6 +92,15 @@ spec = describe "En- and decoding" $ do
9192 let expected = show "2022-01-01T00:00:00.000Z"
9293 result `shouldEqual` expected
9394
95+ describe "works with DateTime" do
96+ it "roundtrips" do
97+ now <- nowDateTime # liftEffect
98+ roundtrips now
99+ someDate <- JSDate.parse "2022-01-01:00:00:00Z" <#> (JSDate.toDateTime >>> fromMaybe' \_ -> unsafeCrashWith "nope") # liftEffect
100+ let result = writeJSON someDate
101+ let expected = show "2022-01-01T00:00:00.000Z"
102+ result `shouldEqual` expected
103+
94104 describe "works on record types" do
95105 it "roundtrips" do
96106 roundtrips { a: 12, b: "54" }