glean-0.1.0.0: glean/test/tests/Angle/DataTest.hs
{-
Copyright (c) Meta Platforms, Inc. and affiliates.
All rights reserved.
This source code is licensed under the BSD-style license found in the
LICENSE file in the root directory of this source tree.
-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeApplications #-}
module Angle.DataTest (main) where
import Data.List
import Test.HUnit
import TestRunner
import Util.String.Quasi
import Data.Text ( Text )
import Glean.Init
import Glean.Query.Thrift as Thrift
import Glean.Types
import TestDB
main :: IO ()
main = withUnitTest $ withDbTests $ \dbTestCase -> testRunner $ TestList
[ TestLabel "angleData" $ angleDataTest dbTestCase id
, TestLabel "angleData/page" $ angleDataTest dbTestCase (limit 1)
]
angleDataTest :: (WithDB () -> Test) -> (forall a . Query a -> Query a) -> Test
angleDataTest dbTestCase modify = dbTestCase $ \env repo -> do
results <- runQuery_ env repo $ modify $ angleData
[s| { 3, false } : { x : nat, y : bool } |]
assertEqual "angleData 1" [(Nat 3, False)] results
results :: [Text] <- runQuery_ env repo $ modify $ angleData
[s| X where Y = cxx1.Name "ab"..; Y = cxx1.Name X |]
assertEqual "angleData 2" ["abba", "abcd"] (sort results)