summaryrefslogtreecommitdiff
path: root/tests/Test
AgeCommit message (Collapse)Author
2021-09-23Remove raw-strings-qqEugen Wissner
2020-11-05Remove StarWars testsEugen Wissner
Our own test suite is slowly getting sufficient.
2020-10-07Collect types once the schema is createdEugen Wissner
2020-09-28Validate arguments are definedEugen Wissner
2020-09-26Validate field selections on composite typesEugen Wissner
2020-09-11Validate fragments don't form cyclesEugen Wissner
2020-09-04Collect types from the subscription rootEugen Wissner
2020-08-22Remove encoder test based on old external filesEugen Wissner
2020-07-19Return a stream as well from graphql* functionsEugen Wissner
2020-07-17Constrain base monad to MonadCatchEugen Wissner
Let's try MonadThrow/MonadCatch. It looks nice at a first glance. The monad transformer stack contains only the ReaderT, less lifts are required. Exception subtyping is easier, the user can (and should) define custom error types and throw them. And it is still possible to use pure error handling, if someone doesn't like runtime exceptions or need to run a query in a pure environment. Fixes #42.
2020-07-15Respect subscriptions in the executorEugen Wissner
After the last commit there were a few places needed to be adjusted to support subscriptions. This is done and a test case is added. It is important to implement subscriptions now, because they require changes to the library API, and they are a big missing part to finish the executor. When the executor is finished, we can start to provide more stable API without breaking everything every release. Validation and introspection shouldn't require much changes to the API; AST would require some changes to report good errors after the validation - this is one thing I can think of. Fixes #5.
2020-07-14Support subscriptionsEugen Wissner
This is experimental support. The implementation is based on conduit and is boring. There is a new resolver data constructor that should create a source event stream. The executor receives the events, pipes them through the normal execution and puts them into the response stream which is returned to the user. - Tests are missing. - The executor should check field value resolver on subscription types. - The graphql function should probably return (Either ResponseEventStream Response), but I'm not sure about this. It will make the usage more complicated if no subscriptions are involved, but with the current API implementing subscriptions is more difficult than it should be.
2020-07-05Handle errors using custom typesEugen Wissner
Fixes #32.
2020-07-02Merge Trans and Type.Out modulesEugen Wissner
2020-06-29Combine Resolver and ActionT in ResolverTEugen Wissner
2020-06-19Fix list input coercionEugen Wissner
2020-06-13Coerce resultEugen Wissner
Fixes #45.
2020-06-07Add description to the enum type valuesEugen Wissner
2020-06-06Coerce argument values properlyEugen Wissner
Fixes #44.
2020-06-03Resolve abstract typesEugen Wissner
Objects that can be a part of an union or interface should return __typename as string.
2020-05-29Define resolvers on type fieldsEugen Wissner
Returning resolvers from other resolvers isn't supported anymore. Since we have a type system now, we define the resolvers in the object type fields and pass an object with the previous result to them.
2020-05-26Add Union and Interface type definitionsEugen Wissner
2020-05-25Split input/output types and values into 2 modulesEugen Wissner
2020-05-24Check pointEugen Wissner
2020-05-23Don't fail on invalid fragments and variablesEugen Wissner
2020-05-21Coerce variable valuesEugen Wissner
2020-05-14Add basic output object type supportEugen Wissner
2020-05-13Accept resolvers given by the user as isEugen Wissner
2020-05-10Separate Query and Mutation resolversEugen Wissner
Fixes #33 .
2020-02-20Update to Stack 15.xEugen Wissner
2020-02-01Replace MonadIO constraint with just MonadEugen Wissner
And make the tests use Identity instead of IO.
2019-12-31Retrieve resolver arguments from the readerEugen Wissner
2019-12-30Replace substitution function with a mapEugen Wissner
It makes using variables with queries more approachable, but some work still has to be done. - The type `Subs` should be renamed and moved out of `Schema`, together with `AST.Core.Value` probably. - Some kind of conversion should be possible from a user-defined input type T to the Value. So the final HashMap should have a type like `HashMap name a`, where a is an instance of a potential typeclass InputType.
2019-12-06Support directives (skip and include)Eugen Wissner
Fixes #24.
2019-12-02Consider __typename when evaluating fragmentsEugen Wissner
Fixes #30.
2019-11-14Fail on cyclic fragments, fix #22Eugen Wissner
2019-11-12Support nested fragments in any orderEugen Wissner
Fix #19.
2019-11-09Support nested fragmentsEugen Wissner
... without forward lookup.
2019-11-03Move related modules to Language.GraphQL.ASTEugen Wissner
Fixes #18. - `Language.GraphQL.Encoder` moved to `Language.GraphQL.AST.Encoder`. - `Language.GraphQL.Parser` moved to `Language.GraphQL.AST.Parser`. - `Language.GraphQL.Lexer` moved to `Language.GraphQL.AST.Lexer`. - All `Language.GraphQL.AST.Value` data constructor prefixes were removed. The module should be imported qualified. - All `Language.GraphQL.AST.Core.Value` data constructor prefixes were removed. The module should be imported qualified. - `Language.GraphQL.AST.Transform` is now isn't exposed publically anymore.
2019-10-19Handle top-level fragmentsEugen Wissner
Fixes #17.
2019-10-11Inline fragments without typeEugen Wissner
Fixes #11.
2019-10-08Support inline fragments on typesEugen Wissner
2019-09-27Introduce hspec-megaparsecEugen Wissner
Fixes #13.
2019-09-13Add pending inline fragment testsEugen Wissner
2019-09-01Deprecate enum, enumA, wrappedEnum, wrappedEnumAEugen Wissner
These functions are from Language.GraphQL.Schema. There are actually only two generic types in GraphQL: Scalars and objects. Enum is a scalar value. According to the specification enums may be serailized to strings. And in the current implementation they used untyped strings anyway, so there is no point to have differently named functions with the same implementation as their scalar counterparts.
2019-08-30Deprecate Language.GraphQL.Execute.SchemaEugen Wissner
It is not a schema (at least not a complete one), but a resolver list, and the resolvers should be provided by the user separately, because the schema can originate from a GraphQL document. Schema name should be free to provide a data type for the real schema later.
2019-08-05Make all encoder functions return lazy textEugen Wissner
2019-08-03Implement indentation in the encoderEugen Wissner
2019-08-02Put spaces between tokens in the pretty printerEugen Wissner
2019-07-31Introduce formatter type for the encoderEugen Wissner
... to distinguish between minified and pretty printing.