https://github.com/delfes/hodur-graphql-gen
hodur-graphql-gen is a tool for generating full queries for testing purposes.
https://github.com/delfes/hodur-graphql-gen
clojure graphql test
Last synced: 6 months ago
JSON representation
hodur-graphql-gen is a tool for generating full queries for testing purposes.
- Host: GitHub
- URL: https://github.com/delfes/hodur-graphql-gen
- Owner: delfes
- License: mit
- Created: 2018-12-04T05:05:51.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2020-02-13T15:52:52.000Z (almost 6 years ago)
- Last Synced: 2025-02-26T23:04:17.264Z (11 months ago)
- Topics: clojure, graphql, test
- Language: Clojure
- Homepage:
- Size: 14.6 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hodur-graphql-gen
hodur-graphql-gen is a tool for generating full queries for testing purposes.
It uses model generated from [Hodur](https://github.com/hodur-org/hodur-engine),
making it integrated into project model domain.
### Getting started
Add `hodur-engine` and `hodur-graphql-gen` dependencies in your `deps.edn` file:
```
{:deps
{hodur/engine {:mvn/version "0.1.6"}
delfes/hodur-graphql-gen {:mvn/version "0.5.0"}}}
```
Require them:
```clojure
(require '[hodur-engine.core :as hodur]
'[hodur-graphql-gen.core :as generator])
```
Using Hodur to generate our GraphQL model, for instance:
```clojure
(def meta-db (hodur/init-schema
'[^:lacinia/tag
default
^:lacinia/query
QueryRoot
[^UserQueries users]
UserQueries
[^User
findUser [^String namePattern]]
User
[^ID id
^String firstName
^String lastName]]))
```
Now we get a full query with:
```clojure
(generator/generate-full-query meta-db)
```
Which generates:
```graphql
fragment fragUser on User {
id
firstName
lastName
}
fragment fragUserQueries on UserQueries {
findUser(namePattern: $findUser_namePattern) {
...fragUser
}
}
query ($findUser_namePattern: String!) {
users {
...fragUserQueries
}
}
```
For selecting a specific node, we may pass a sequence of fields, for instance:
```clojure
(generator/generate-full-query meta-db ["users" "findUser"])
```
Mutations require a different method:
```clojure
(generator/generate-full-mutation meta-db "setUserInformation")
```