packages feed

schematic 0.2.0.0 → 0.2.1.0

raw patch · 4 files changed

+23/−15 lines, 4 files

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for schematic +## 0.2.1.0 -- 2017-09-26++Add decodeAndValidateVersionedWithPureMList, fix tests+ ## 0.2.0.0 -- 2017-09-26  Migratable is deprecated, migrations are now possible in an arbitrary monad.
schematic.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                schematic-version:             0.2.0.0+version:             0.2.1.0 synopsis:            JSON-biased spec and validation tool -- description: license:             BSD3
src/Data/Schematic.hs view
@@ -13,6 +13,7 @@   , parseAndValidateTopVersionJson   , parseAndValidateWithMList   , decodeAndValidateVersionedWithMList+  , decodeAndValidateVersionedWithPureMList   , isValid   , isDecodingError   , isValidationError@@ -114,3 +115,11 @@ decodeAndValidateVersionedWithMList _ mlist bs = case decode bs of   Nothing -> pure $ DecodingError "malformed json"   Just x  -> parseAndValidateWithMList mlist x++decodeAndValidateVersionedWithPureMList+  :: proxy versioned+  -> MList Identity (MapSnd (AllVersions versioned))+  -> BL.ByteString+  -> ParseResult (JsonRepr (Head (MapSnd (AllVersions versioned))))+decodeAndValidateVersionedWithPureMList a b c =+  runIdentity $ decodeAndValidateVersionedWithMList a b c
test/SchemaSpec.hs view
@@ -2,8 +2,9 @@  module SchemaSpec (spec, main) where -import Data.ByteString.Lazy import Data.Aeson+import Data.ByteString.Lazy+import Data.Functor.Identity import Data.Proxy import Data.Schematic import Data.Vinyl@@ -44,14 +45,6 @@     :& FieldRepr (ReprText "test")     :& RNil -instance-  MigrateSchema-    SchemaExample-    ('SchemaObject-      '[ '("foo", 'SchemaNumber '[]), '("bar", 'SchemaText '[])])-  where-  migrate = const topObject- spec :: Spec spec = do   -- it "show/read JsonRepr properly" $@@ -67,13 +60,15 @@   it "validates incorrect representation" $     ((decodeAndValidateJson schemaJson2) :: ParseResult (JsonRepr SchemaExample))       `shouldSatisfy` isValidationError-  it "validates versioned json" $ do-    decodeAndValidateVersionedJson (Proxy @VS) schemaJson-      `shouldSatisfy` isValid+  -- it "validates versioned json" $ do+  --   decodeAndValidateVersionedJson (Proxy @VS) schemaJson+  --     `shouldSatisfy` isValid   it "validates versioned json with a migration list" $ do-    decodeAndValidateVersionedWithMList+    decodeAndValidateVersionedWithPureMList       (Proxy @VS)-      ((:&&) (Proxy @(SchemaByRevision "test_revision" VS)) (const topObject) MNil)+      ((:&&)+        (Proxy @(SchemaByRevision "test_revision" VS))+        (const $ Identity topObject) MNil)       schemaJson         `shouldSatisfy` isValid