not really known
Go to file
Matt Parsons d66c2d278a
Safer MVar usage (#49)
* Fix stack.yaml file

* Remove unfixable stack files

* Resolve ambiguous import in GHCi

* handle MVars without error

* Consistent messaging

* Add comment
2018-05-10 10:08:06 -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 Safer MVar usage (#49) 2018-05-10 10:08:06 -06:00
test Support GHC-8.4.1 2018-03-23 08:13:36 +02:00
.gitignore Add predicate getsHaveLastModifiedHeader. 2016-10-03 15:39:46 +02:00
.travis.yml Support GHC-8.4.1 2018-03-23 08:13:36 +02:00
CHANGELOG.yaml Allow base-compat-0.10 and temporary-1.3 2018-04-12 09:29:23 +03: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 Safer MVar usage (#49) 2018-05-10 10:08:06 -06:00
Setup.hs initial commit 2016-04-22 13:00:23 +02:00
stack.yaml Safer MVar usage (#49) 2018-05-10 10:08:06 -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.