graphql-engine/server/tests-hspec/WhereSpec.hs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

119 lines
2.1 KiB
Haskell
Raw Normal View History

{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RecordWildCards #-}
-- | Tests that `where' works.
module WhereSpec (spec) where
import Harness.Constants
import Harness.Feature qualified as Feature
import Harness.Graphql
import Harness.GraphqlEngine qualified as GraphqlEngine
import Harness.Mysql as Mysql
import Harness.Sql
import Harness.Yaml
import Test.Hspec
import Prelude
--------------------------------------------------------------------------------
-- Preamble
spec :: Spec
spec =
Feature.feature
Feature.Feature
{ Feature.backends =
[ Feature.Backend
{ name = "MySQL",
setup = mysqlSetup,
teardown = mysqlTeardown
}
],
Feature.tests = tests
}
--------------------------------------------------------------------------------
-- MySQL backend
mysqlSetup :: IO ()
mysqlSetup = do
-- Clear and reconfigure the metadata
GraphqlEngine.post_
"/v1/metadata"
[yaml|
type: replace_metadata
args:
version: 3
sources:
- name: mysql
kind: mysql
tables: []
configuration:
database: *mysqlDatabase
user: *mysqlUser
password: *mysqlPassword
host: *mysqlHost
port: *mysqlPort
pool_settings: {}
|]
-- Setup tables
Mysql.run_
[sql|
CREATE TABLE author
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(45) UNIQUE KEY
);
|]
Mysql.run_
[sql|
INSERT INTO author
(name)
VALUES
( 'Author 1'),
( 'Author 2');
|]
-- Track the tables
GraphqlEngine.post_
"/v1/metadata"
[yaml|
type: mysql_track_table
args:
source: mysql
table:
schema: hasura
name: author
|]
mysqlTeardown :: IO ()
mysqlTeardown = do
Mysql.run_
[sql|
DROP TABLE author;
|]
--------------------------------------------------------------------------------
-- Tests
tests :: Spec
tests = do
it "Where id=1" $
shouldReturnYaml
( GraphqlEngine.postGraphql
[graphql|
query {
hasura_author(where: {id: {_eq: 1}}) {
name
id
}
}
|]
)
[yaml|
data:
hasura_author:
- name: Author 1
id: 1
|]