haskoin-store-data 0.32.0 → 0.32.1
raw patch · 3 files changed
+11/−92 lines, 3 filesdep ~haskoin-store-data
Dependency ranges changed: haskoin-store-data
Files
- haskoin-store-data.cabal +3/−3
- src/Haskoin/Store/WebCommon.hs +4/−4
- test/Haskoin/Store/DataSpec.hs +4/−85
haskoin-store-data.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 920370ff98f12e2262956b78cfaae0d854bc1fd219a429bd362da3ff98898740+-- hash: 6001f8bd564ca8781d144bcface158f883a2ad9d990d0c00ff40c34e6c8f2b36 name: haskoin-store-data-version: 0.32.0+version: 0.32.1 synopsis: Data for Haskoin Store description: Please see the README on GitHub at <https://github.com/haskoin/haskoin-store#readme> category: Bitcoin, Finance, Network@@ -74,7 +74,7 @@ , deepseq >=1.4.4.0 , hashable >=1.3.0.0 , haskoin-core >=0.13.6- , haskoin-store-data ==0.32.0+ , haskoin-store-data ==0.32.1 , hspec >=2.7.1 , http-client >=0.6.4.1 , http-types >=0.12.3
src/Haskoin/Store/WebCommon.hs view
@@ -359,14 +359,14 @@ instance Param Address where proxyLabel = const "address"- encodeParam net a = (:[]) <$> addrToString net a- parseParam net [a] = stringToAddr net a+ encodeParam net a = (:[]) <$> addrToText net a+ parseParam net [a] = textToAddr net a parseParam _ _ = Nothing instance Param [Address] where proxyLabel = const "addresses"- encodeParam = mapM . addrToString- parseParam = mapM . stringToAddr+ encodeParam = mapM . addrToText+ parseParam = mapM . textToAddr data StartParam = StartParamHash { startParamHash :: Hash256
test/Haskoin/Store/DataSpec.hs view
@@ -7,41 +7,16 @@ ( spec ) where -import Control.Monad (forM_, (<=<))-import Data.Aeson (Encoding, FromJSON (..), Value)-import qualified Data.Aeson as A-import Data.Aeson.Encoding (encodingToLazyByteString)-import Data.Aeson.Types (Parser, parseMaybe)+import Control.Monad (forM_)+import Data.Aeson (FromJSON (..)) import qualified Data.ByteString.Short as BSS-import Data.Map.Strict (singleton)-import Data.Proxy-import qualified Data.Serialize as S import Data.String.Conversions (cs)-import qualified Data.Typeable as T import Haskoin import Haskoin.Store.Data import Haskoin.Util.Arbitrary-import Test.Hspec (Spec, describe, shouldBe,- shouldSatisfy)-import Test.Hspec.QuickCheck (prop)+import Test.Hspec (Spec, describe) import Test.QuickCheck -data SerialBox =- forall a. (Show a, Eq a, T.Typeable a, S.Serialize a) =>- SerialBox (Gen a)--data JsonBox =- forall a. (Show a, Eq a, T.Typeable a, A.ToJSON a, A.FromJSON a) =>- JsonBox (Gen a)--data NetBox =- forall a. (Show a, Eq a, T.Typeable a, Arbitrary a) =>- NetBox ( Network -> a -> Value- , Network -> a -> Encoding- , Network -> Value -> Parser a- , Gen (Network, a)- )- serialVals :: [SerialBox] serialVals = [ SerialBox (arbitrary :: Gen DeriveType)@@ -131,62 +106,6 @@ describe "Data.Aeson Encoding with Network" $ forM_ netVals $ \(NetBox (j,e,p,g)) -> testNetJson j e p g -testSerial :: (Eq a, Show a, T.Typeable a, S.Serialize a) => Gen a -> Spec-testSerial gen =- prop ("Data.Serialize encoding/decoding identity for " <> name) $- forAll gen $ \x -> (S.decode . S.encode) x `shouldBe` Right x- where- name = show $ T.typeRep $ proxy gen- proxy :: Gen a -> Proxy a- proxy = const Proxy--testJson ::- (Eq a, Show a, T.Typeable a, A.ToJSON a, A.FromJSON a) => Gen a -> Spec-testJson gen = do- prop ("Data.Aeson toJSON/fromJSON identity for " <> name) $- forAll gen (`shouldSatisfy` jsonID)- prop ("Data.Aeson toEncoding/fromJSON identity for " <> name) $- forAll gen (`shouldSatisfy` encodingID)- where- name = show $ T.typeRep $ proxy gen- proxy :: Gen a -> Proxy a- proxy = const Proxy- jsonID x =- (A.fromJSON . A.toJSON) (singleton ("object" :: String) x) ==- A.Success (singleton ("object" :: String) x)- encodingID x =- (A.decode . encodingToLazyByteString . A.toEncoding)- (singleton ("object" :: String) x) ==- Just (singleton ("object" :: String) x)--testNetJson ::- (Eq a, Show a, T.Typeable a, Arbitrary a)- => (Network -> a -> Value)- -> (Network -> a -> Encoding)- -> (Network -> Value -> Parser a)- -> Gen (Network, a)- -> Spec-testNetJson j e p g = do- prop ("Data.Aeson toJSON/fromJSON identity (with network) for " <> name) $- forAll g $ \(net, x) ->- dec net (encVal net x) `shouldBe` Just x- prop ("Data.Aeson toEncoding/fromJSON identity (with network) for " <> name) $- forAll g $ \(net, x) ->- dec net (encEnc net x) `shouldBe` Just x- where- encVal net = A.encode . j net- encEnc net = encodingToLazyByteString . e net- dec net = parseMaybe (p net) <=< A.decode- name = show $ T.typeRep $ proxy j- proxy :: (Network -> a -> Value) -> Proxy a- proxy = const Proxy--arbitraryNetData :: Arbitrary a => Gen (Network, a)-arbitraryNetData = do- net <- arbitraryNetwork- x <- arbitrary- return (net, x)- instance Arbitrary BlockRef where arbitrary = oneof [BlockRef <$> arbitrary <*> arbitrary, MemRef <$> arbitrary]@@ -397,7 +316,7 @@ arbitrary = oneof [ return ThingNotFound- , return ServerError + , return ServerError , return BadRequest , UserError <$> arbitrary , StringError <$> arbitrary