packages feed

servant-mock 0.8.6 → 0.8.7

raw patch · 5 files changed

+55/−14 lines, 5 filesdep ~servantdep ~servant-servernew-uploaderPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: servant, servant-server

API changes (from Hackage documentation)

- Servant.Mock: instance (Servant.Server.Internal.Context.HasContextEntry context (Servant.Server.Internal.Context.NamedContext name subContext), Servant.Mock.HasMock rest subContext) => Servant.Mock.HasMock (Servant.API.WithNamedContext.WithNamedContext name subContext rest) context
- Servant.Mock: instance Servant.Mock.HasMock Servant.API.Empty.EmptyAPI context
- Servant.Mock: instance Servant.Mock.HasMock Servant.API.Raw.Raw context
- Servant.Mock: instance forall k1 (headerTypes :: [*]) a (status :: GHC.Types.Nat) (method :: k1) (ctypes :: [*]) (context :: [*]). (Servant.API.ResponseHeaders.GetHeaders (Servant.API.ResponseHeaders.Headers headerTypes a), Test.QuickCheck.Arbitrary.Arbitrary (Servant.API.ResponseHeaders.HList headerTypes), Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat status, Servant.API.Verbs.ReflectMethod method, Servant.API.ContentTypes.AllCTRender ctypes a) => Servant.Mock.HasMock (Servant.API.Verbs.Verb method status ctypes (Servant.API.ResponseHeaders.Headers headerTypes a)) context
- Servant.Mock: instance forall k1 (method :: k1) (context :: [*]). Servant.API.Verbs.ReflectMethod method => Servant.Mock.HasMock (Servant.API.Verbs.NoContentVerb method) context
- Servant.Mock: instance forall k1 a (status :: GHC.Types.Nat) (method :: k1) (ctypes :: [*]) (context :: [*]). (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat status, Servant.API.Verbs.ReflectMethod method, Servant.API.ContentTypes.AllCTRender ctypes a) => Servant.Mock.HasMock (Servant.API.Verbs.Verb method status ctypes a) context
- Servant.Mock: instance forall k1 a (status :: GHC.Types.Nat) (method :: k1) ctype chunk fr (context :: [*]). (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat status, Servant.API.Verbs.ReflectMethod method, Servant.API.ContentTypes.MimeRender ctype chunk, Servant.API.Stream.FramingRender fr, Servant.API.Stream.ToSourceIO chunk a) => Servant.Mock.HasMock (Servant.API.Stream.Stream method status fr ctype a) context
+ Servant.Mock: instance (Servant.Server.Internal.Context.HasContextEntry context (Servant.Server.Internal.Context.NamedContext name subContext), Servant.Server.Internal.Context.HasContextEntry (context Servant.Server.Internal.Context..++ Servant.Server.Internal.ErrorFormatter.DefaultErrorFormatters) Servant.Server.Internal.ErrorFormatter.ErrorFormatters, Servant.Mock.HasMock rest subContext) => Servant.Mock.HasMock (Servant.API.WithNamedContext.WithNamedContext name subContext rest) context
+ Servant.Mock: instance Servant.Server.Internal.Context.HasContextEntry (context Servant.Server.Internal.Context..++ Servant.Server.Internal.ErrorFormatter.DefaultErrorFormatters) Servant.Server.Internal.ErrorFormatter.ErrorFormatters => Servant.Mock.HasMock Servant.API.Empty.EmptyAPI context
+ Servant.Mock: instance Servant.Server.Internal.Context.HasContextEntry (context Servant.Server.Internal.Context..++ Servant.Server.Internal.ErrorFormatter.DefaultErrorFormatters) Servant.Server.Internal.ErrorFormatter.ErrorFormatters => Servant.Mock.HasMock Servant.API.Raw.Raw context
+ Servant.Mock: instance forall k1 (headerTypes :: [*]) a (status :: GHC.Types.Nat) (method :: k1) (ctypes :: [*]) (context :: [*]). (Servant.API.ResponseHeaders.GetHeaders (Servant.API.ResponseHeaders.Headers headerTypes a), Test.QuickCheck.Arbitrary.Arbitrary (Servant.API.ResponseHeaders.HList headerTypes), Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat status, Servant.API.Verbs.ReflectMethod method, Servant.API.ContentTypes.AllCTRender ctypes a, Servant.Server.Internal.Context.HasContextEntry (context Servant.Server.Internal.Context..++ Servant.Server.Internal.ErrorFormatter.DefaultErrorFormatters) Servant.Server.Internal.ErrorFormatter.ErrorFormatters) => Servant.Mock.HasMock (Servant.API.Verbs.Verb method status ctypes (Servant.API.ResponseHeaders.Headers headerTypes a)) context
+ Servant.Mock: instance forall k1 (method :: k1) (context :: [*]). (Servant.API.Verbs.ReflectMethod method, Servant.Server.Internal.Context.HasContextEntry (context Servant.Server.Internal.Context..++ Servant.Server.Internal.ErrorFormatter.DefaultErrorFormatters) Servant.Server.Internal.ErrorFormatter.ErrorFormatters) => Servant.Mock.HasMock (Servant.API.Verbs.NoContentVerb method) context
+ Servant.Mock: instance forall k1 a (status :: GHC.Types.Nat) (method :: k1) (ctypes :: [*]) (context :: [*]). (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat status, Servant.API.Verbs.ReflectMethod method, Servant.API.ContentTypes.AllCTRender ctypes a, Servant.Server.Internal.Context.HasContextEntry (context Servant.Server.Internal.Context..++ Servant.Server.Internal.ErrorFormatter.DefaultErrorFormatters) Servant.Server.Internal.ErrorFormatter.ErrorFormatters) => Servant.Mock.HasMock (Servant.API.Verbs.Verb method status ctypes a) context
+ Servant.Mock: instance forall k1 a (status :: GHC.Types.Nat) (method :: k1) ctype chunk fr (context :: [*]). (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat status, Servant.API.Verbs.ReflectMethod method, Servant.API.ContentTypes.MimeRender ctype chunk, Servant.API.Stream.FramingRender fr, Servant.API.Stream.ToSourceIO chunk a, Servant.Server.Internal.Context.HasContextEntry (context Servant.Server.Internal.Context..++ Servant.Server.Internal.ErrorFormatter.DefaultErrorFormatters) Servant.Server.Internal.ErrorFormatter.ErrorFormatters) => Servant.Mock.HasMock (Servant.API.Stream.Stream method status fr ctype a) context
- Servant.Mock: class HasServer api context => HasMock api context
+ Servant.Mock: class (HasServer api context, HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters) => HasMock api context

Files

CHANGELOG.md view
@@ -1,3 +1,12 @@+0.8.7+-----++- Support for servant-0.18+   - Hint for migration: if you get errors about `ambiguous type+     variable ‘context0’ arising from a use of ‘mock’`, try calling+     `mock` with explicit type information about the context: `mock+     api (Proxy @'[])`, not `mock api Proxy`.+ 0.8.6 ----- 
example/main.hs view
@@ -23,4 +23,4 @@ api = Proxy  main :: IO ()-main = run 8080 (serve api $ mock api Proxy)+main = run 8080 (serve api $ mock api (Proxy :: Proxy '[]))
servant-mock.cabal view
@@ -1,6 +1,6 @@ cabal-version:       >=1.10 name:                servant-mock-version:             0.8.6+version:             0.8.7  synopsis:            Derive a mock server for free from your servant API types category:            Servant, Web, Testing@@ -43,8 +43,8 @@     base-compat     >=0.10.5   && <0.12,     bytestring      >=0.10.8.1 && <0.11,     http-types      >=0.12.2   && <0.13,-    servant         >=0.17     && <0.18,-    servant-server  >=0.17     && <0.18,+    servant         >=0.17     && <0.19,+    servant-server  >=0.17     && <0.19,     transformers    >=0.5.2.0  && <0.6,     QuickCheck      >=2.12.6.1 && <2.14,     wai             >=3.2.1.2  && <3.3
src/Servant/Mock.hs view
@@ -76,7 +76,11 @@ --   than turns them into random-response-generating --   request handlers, hence providing an instance for --   all the combinators of the core /servant/ library.-class HasServer api context => HasMock api context where+class (HasServer api context+#if MIN_VERSION_servant_server(0,18,0)+      , HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters+#endif+      ) => HasMock api context where   -- | Calling this method creates request handlers of   --   the right type to implement the API described by   --   @api@ that just generate random response values of@@ -156,32 +160,56 @@     => HasMock (Header' mods h a :> rest) context where   mock _ context = \_ -> mock (Proxy :: Proxy rest) context -instance (Arbitrary a, KnownNat status, ReflectMethod method, AllCTRender ctypes a)+instance (Arbitrary a, KnownNat status, ReflectMethod method, AllCTRender ctypes a+#if MIN_VERSION_servant_server(0,18,0)+         , HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters+#endif+         )     => HasMock (Verb method status ctypes a) context where   mock _ _ = mockArbitrary -instance (ReflectMethod method) => HasMock (NoContentVerb method) context where+instance (ReflectMethod method+#if MIN_VERSION_servant_server(0,18,0)+         , HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters+#endif+         ) => HasMock (NoContentVerb method) context where   mock _ _ = mockArbitrary -instance (Arbitrary a, KnownNat status, ReflectMethod method, MimeRender ctype chunk, FramingRender fr, ToSourceIO chunk a)+instance (Arbitrary a, KnownNat status, ReflectMethod method, MimeRender ctype chunk, FramingRender fr, ToSourceIO chunk a+#if MIN_VERSION_servant_server(0,18,0)+         , HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters+#endif+         )     => HasMock (Stream method status fr ctype a) context where   mock _ _ = mockArbitrary  instance OVERLAPPING_     (GetHeaders (Headers headerTypes a), Arbitrary (HList headerTypes),-     Arbitrary a, KnownNat status, ReflectMethod method, AllCTRender ctypes a)+     Arbitrary a, KnownNat status, ReflectMethod method, AllCTRender ctypes a+#if MIN_VERSION_servant_server(0,18,0)+    , HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters+#endif+    )     => HasMock (Verb method status ctypes (Headers headerTypes a)) context where   mock _ _ = mockArbitrary -instance HasMock Raw context where+instance+#if MIN_VERSION_servant_server(0,18,0)+    HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters =>+#endif+    HasMock Raw context where   mock _ _ = Tagged $ \_req respond -> do     bdy <- genBody     respond $ responseLBS status200 [] bdy      where genBody = pack <$> generate (vector 100 :: Gen [Char]) -instance HasMock EmptyAPI context where-    mock _ _ = emptyServer+instance+#if MIN_VERSION_servant_server(0,18,0)+    HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters =>+#endif+    HasMock EmptyAPI context where+  mock _ _ = emptyServer  instance HasMock api context => HasMock (Summary d :> api) context where     mock _ context = mock (Proxy :: Proxy api) context@@ -189,7 +217,11 @@ instance HasMock api context => HasMock (Description d :> api) context where     mock _ context = mock (Proxy :: Proxy api) context -instance (HasContextEntry context (NamedContext name subContext), HasMock rest subContext) =>+instance ( HasContextEntry context (NamedContext name subContext)+#if MIN_VERSION_servant_server(0,18,0)+         , HasContextEntry (context .++ DefaultErrorFormatters) ErrorFormatters+#endif+         , HasMock rest subContext) =>   HasMock (WithNamedContext name subContext rest) context where    mock _ _ = mock (Proxy :: Proxy rest) (Proxy :: Proxy subContext)
test/Servant/MockSpec.hs view
@@ -61,7 +61,7 @@     context "Get" $ do       let api :: Proxy (Get '[JSON] Body)           api = Proxy-          app = serve api (mock api Proxy)+          app = serve api (mock api (Proxy :: Proxy '[]))       with (return app) $ do         it "serves arbitrary response bodies" $ do           get "/" `shouldRespondWith` 200{