summaryrefslogtreecommitdiff
path: root/Omni/Task/MigrationTest.hs
blob: f16f782c8f7a34db0fdd3d6532ffd1f66df6c840 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Omni.Task.MigrationTest where

import Alpha
import qualified Data.Set as Set
import Omni.Task.Core
import qualified Omni.Test as Test
import System.Directory (doesFileExist, removeFile)
import System.Environment (setEnv)

test :: Test.Tree
test = Test.group "Omni.Task.Migration" [migrationStartupTest]

migrationStartupTest :: Test.Tree
migrationStartupTest =
  Test.unit "database initializes with schema migrations" <| do
    setEnv "TASK_TEST_MODE" "1"

    let testFile = "_/tmp/tasks-test.db"
    exists <- doesFileExist testFile
    when exists <| removeFile testFile

    initTaskDb

    withDb <| \conn -> do
      tasksCols <- getTableColumns conn "tasks"
      activityCols <- getTableColumns conn "task_activity"
      retryCols <- getTableColumns conn "retry_context"

      Set.fromList ["id", "title", "status"]
        `Set.isSubsetOf` Set.fromList tasksCols
        Test.@?= True
      Set.fromList ["id", "task_id", "stage"]
        `Set.isSubsetOf` Set.fromList activityCols
        Test.@?= True
      Set.fromList ["task_id", "attempt", "reason"]
        `Set.isSubsetOf` Set.fromList retryCols
        Test.@?= True

    removeFile testFile