mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-17 20:41:49 +03:00
50 lines
1.4 KiB
Haskell
50 lines
1.4 KiB
Haskell
|
-- | This module tests that the postgres table metadata collection correctly
|
||
|
-- handles unique constraints that are based on expressions rather than columns.
|
||
|
module Test.GatheringUniqueConstraintsSpec (spec) where
|
||
|
|
||
|
import Harness.Backend.Citus qualified as Citus
|
||
|
import Harness.Backend.Postgres qualified as Postgres
|
||
|
import Harness.Test.BackendType qualified as BackendType
|
||
|
import Harness.Test.Fixture
|
||
|
import Harness.Test.Schema
|
||
|
import Harness.TestEnvironment (TestEnvironment)
|
||
|
import Hasura.Prelude
|
||
|
import Test.Hspec
|
||
|
|
||
|
--------------------------------------------------------------------------------
|
||
|
-- Preamble
|
||
|
|
||
|
spec :: SpecWith TestEnvironment
|
||
|
spec = run [postgresFixture, citusFixture] (it "Tracks tables without failing" $ \_ -> return @IO ())
|
||
|
|
||
|
postgresFixture :: Fixture ()
|
||
|
postgresFixture =
|
||
|
(fixture $ Backend BackendType.Postgres)
|
||
|
{ setupTeardown = \(t, _) ->
|
||
|
[ Postgres.setupTablesAction tables t
|
||
|
]
|
||
|
}
|
||
|
|
||
|
citusFixture :: Fixture ()
|
||
|
citusFixture =
|
||
|
(fixture $ Backend BackendType.Citus)
|
||
|
{ setupTeardown = \(t, _) ->
|
||
|
[ Citus.setupTablesAction tables t
|
||
|
]
|
||
|
}
|
||
|
|
||
|
{-
|
||
|
CREATE TABLE test (id INT, username TEXT);
|
||
|
CREATE UNIQUE INDEX ON test ((lower(username)));
|
||
|
-}
|
||
|
tables :: [Table]
|
||
|
tables =
|
||
|
[ (table "test")
|
||
|
{ tableColumns =
|
||
|
[ column "id" TInt,
|
||
|
column "username" TStr
|
||
|
],
|
||
|
tableUniqueConstraints = [UniqueConstraintExpression "lower(username)"]
|
||
|
}
|
||
|
]
|