schematic 0.2.0.0 → 0.2.1.0
raw patch · 4 files changed
+23/−15 lines, 4 files
Files
- ChangeLog.md +4/−0
- schematic.cabal +1/−1
- src/Data/Schematic.hs +9/−0
- test/SchemaSpec.hs +9/−14
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