not really known
Go to file
parsonsmatt 0190e5e737 QuickCheck 2.12 Compatibility
This commit relaxes the bounds on QuickCheck, allowing it to be
compatible with 2.12. In order to be compatible with 2.12, we had to CPP
some definitions that referenced code that was deleted.
2018-10-12 13:34:13 -06:00
doc docs 2016-07-18 16:12:21 -03:00
example Support for servant-0.13 2018-02-09 20:26:02 +02:00
src/Servant QuickCheck 2.12 Compatibility 2018-10-12 13:34:13 -06:00
test Add test for onlyJsonObjects when no content-type header is present. 2018-08-27 22:31:18 -06:00
.gitignore Add predicate getsHaveLastModifiedHeader. 2016-10-03 15:39:46 +02:00
.travis.yml Support servant-0.14 2018-06-19 13:05:16 +03:00
CHANGELOG.yaml v0.0.7.2 (#51) 2018-05-10 11:32:50 -06:00
LICENSE initial commit 2016-04-22 13:00:23 +02:00
README.md Add readme 2016-04-26 13:43:52 +02:00
servant-quickcheck.cabal QuickCheck 2.12 Compatibility 2018-10-12 13:34:13 -06:00
Setup.hs initial commit 2016-04-22 13:00:23 +02:00
stack.yaml QuickCheck 2.12 Compatibility 2018-10-12 13:34:13 -06:00

servant-quickcheck

servant-quickcheck provides tools to test properties across entire APIs. Rather than writing the same tests for each endpoint, with servant-quickcheck you can simply specify properties every endpoint must meet once and for all. For example:

followsBestPractices :: Spec
followsBestPractices = describe "my API" $ do

  it "follows best practices" $ do
    withServantServer myAPI myServer $ \burl ->
      serverSatisfies api burl stdArgs
           ( not500
         <%> onlyJsonObjects
         <%> getsHaveCacheControlHeader
         <%> headsHaveCacheControlHeader
         <%> mempty)

Additionally, servant-quickcheck provides a serversEqual function that generates arbitrary requests (that conform to the description of an API) and tests that two servers respond identically to them. This can be useful when refactoring or rewriting an API that should not change.