2022-03-16 03:39:21 +03:00
{- # LANGUAGE QuasiQuotes # -}
2021-11-19 18:13:33 +03:00
-- | Test ordering by fields.
2022-01-21 10:48:27 +03:00
module Test.OrderingSpec ( spec ) where
2021-11-19 18:13:33 +03:00
2022-01-21 10:48:27 +03:00
import Harness.Backend.Mysql as Mysql
2021-11-19 18:13:33 +03:00
import Harness.GraphqlEngine qualified as GraphqlEngine
2022-01-21 10:48:27 +03:00
import Harness.Quoter.Graphql
import Harness.Quoter.Yaml
2022-02-21 20:05:09 +03:00
import Harness.Test.Context qualified as Context
2022-06-17 11:44:04 +03:00
import Harness.Test.Schema ( Table ( .. ) , table )
2022-03-10 14:18:13 +03:00
import Harness.Test.Schema qualified as Schema
2022-04-20 20:15:42 +03:00
import Harness.TestEnvironment ( TestEnvironment )
2021-11-19 18:13:33 +03:00
import Test.Hspec
import Prelude
--------------------------------------------------------------------------------
-- Preamble
2022-04-20 20:15:42 +03:00
spec :: SpecWith TestEnvironment
2021-11-19 18:13:33 +03:00
spec =
2022-02-21 20:05:09 +03:00
Context . run
[ Context . Context
2022-03-15 19:08:47 +03:00
{ name = Context . Backend Context . MySQL ,
2022-04-20 20:15:42 +03:00
mkLocalTestEnvironment = Context . noLocalTestEnvironment ,
2022-03-10 14:18:13 +03:00
setup = Mysql . setup schema ,
teardown = Mysql . teardown schema ,
2022-02-18 16:35:32 +03:00
customOptions = Nothing
2022-02-14 20:24:24 +03:00
}
]
tests
2021-11-19 18:13:33 +03:00
--------------------------------------------------------------------------------
2022-03-10 14:18:13 +03:00
-- Schema
2021-11-19 18:13:33 +03:00
2022-03-10 14:18:13 +03:00
schema :: [ Schema . Table ]
schema = [ author ]
2021-11-19 18:13:33 +03:00
2022-03-10 14:18:13 +03:00
author :: Schema . Table
author =
2022-06-17 11:44:04 +03:00
( table " author " )
{ tableColumns =
[ Schema . column " id " Schema . TInt ,
Schema . column " name " Schema . TStr
] ,
tablePrimaryKey = [ " id " ] ,
tableData =
[ [ Schema . VInt 1 , Schema . VStr " Author 1 " ] ,
[ Schema . VInt 2 , Schema . VStr " Author 2 " ]
]
}
2021-11-19 18:13:33 +03:00
--------------------------------------------------------------------------------
-- Tests
2022-01-07 20:51:42 +03:00
-- Added equivalents from <https://github.com/hasura/graphql-engine-mono/blob/ee524e94caf6405ce0ae39edfe161dadd223d60f/server/tests-py/queries/graphql_query/mysql/select_query_author_order_by.yaml#L1>
-- That includes order by {text,id} {desc,asc}
--
2022-04-20 20:15:42 +03:00
tests :: Context . Options -> SpecWith TestEnvironment
2022-02-09 18:26:14 +03:00
tests opts = do
2022-04-20 20:15:42 +03:00
it " Order by id ascending " $ \ testEnvironment ->
2021-11-19 18:13:33 +03:00
shouldReturnYaml
2022-02-09 18:26:14 +03:00
opts
2021-11-19 18:13:33 +03:00
( GraphqlEngine . postGraphql
2022-04-20 20:15:42 +03:00
testEnvironment
2021-11-19 18:13:33 +03:00
[ graphql |
query {
hasura_author ( order_by : { id : asc } ) {
name
id
}
}
| ]
)
[ yaml |
data :
hasura_author :
- name : Author 1
id : 1
- name : Author 2
id : 2
| ]
2022-04-20 20:15:42 +03:00
it " Order by id descending " $ \ testEnvironment ->
2021-11-19 18:13:33 +03:00
shouldReturnYaml
2022-02-09 18:26:14 +03:00
opts
2021-11-19 18:13:33 +03:00
( GraphqlEngine . postGraphql
2022-04-20 20:15:42 +03:00
testEnvironment
2021-11-19 18:13:33 +03:00
[ graphql |
query {
hasura_author ( order_by : { id : desc } ) {
name
id
}
}
2022-01-07 20:51:42 +03:00
| ]
)
[ yaml |
data :
hasura_author :
- name : Author 2
id : 2
- name : Author 1
id : 1
| ]
2022-04-20 20:15:42 +03:00
it " Order by name ascending " $ \ testEnvironment ->
2022-01-07 20:51:42 +03:00
shouldReturnYaml
2022-02-09 18:26:14 +03:00
opts
2022-01-07 20:51:42 +03:00
( GraphqlEngine . postGraphql
2022-04-20 20:15:42 +03:00
testEnvironment
2022-01-07 20:51:42 +03:00
[ graphql |
query {
hasura_author ( order_by : { name : asc } ) {
name
id
}
}
| ]
)
[ yaml |
data :
hasura_author :
- name : Author 1
id : 1
- name : Author 2
id : 2
| ]
2022-04-20 20:15:42 +03:00
it " Order by name descending " $ \ testEnvironment ->
2022-01-07 20:51:42 +03:00
shouldReturnYaml
2022-02-09 18:26:14 +03:00
opts
2022-01-07 20:51:42 +03:00
( GraphqlEngine . postGraphql
2022-04-20 20:15:42 +03:00
testEnvironment
2022-01-07 20:51:42 +03:00
[ graphql |
query {
hasura_author ( order_by : { name : desc } ) {
name
id
}
}
2021-11-19 18:13:33 +03:00
| ]
)
[ yaml |
data :
hasura_author :
- name : Author 2
id : 2
- name : Author 1
id : 1
| ]