Use insert' everywhere applicable.
This commit is contained in:
parent
0e25e1361c
commit
e571513ddb
96
test/Test.hs
96
test/Test.hs
@ -59,31 +59,31 @@ main = do
|
|||||||
describe "select/from" $ do
|
describe "select/from" $ do
|
||||||
it "works for a simple example" $
|
it "works for a simple example" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \person ->
|
from $ \person ->
|
||||||
return person
|
return person
|
||||||
liftIO $ ret `shouldBe` [ Entity p1k p1 ]
|
liftIO $ ret `shouldBe` [ p1e ]
|
||||||
|
|
||||||
it "works for a simple self-join (one entity)" $
|
it "works for a simple self-join (one entity)" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \(person1, person2) ->
|
from $ \(person1, person2) ->
|
||||||
return (person1, person2)
|
return (person1, person2)
|
||||||
liftIO $ ret `shouldBe` [ (Entity p1k p1, Entity p1k p1) ]
|
liftIO $ ret `shouldBe` [ (p1e, p1e) ]
|
||||||
|
|
||||||
it "works for a simple self-join (two entities)" $
|
it "works for a simple self-join (two entities)" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
p2k <- insert p2
|
p2e <- insert' p2
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \(person1, person2) ->
|
from $ \(person1, person2) ->
|
||||||
return (person1, person2)
|
return (person1, person2)
|
||||||
liftIO $ ret `shouldBe` [ (Entity p1k p1, Entity p1k p1)
|
liftIO $ ret `shouldBe` [ (p1e, p1e)
|
||||||
, (Entity p1k p1, Entity p2k p2)
|
, (p1e, p2e)
|
||||||
, (Entity p2k p2, Entity p1k p1)
|
, (p2e, p1e)
|
||||||
, (Entity p2k p2, Entity p2k p2) ]
|
, (p2e, p2e) ]
|
||||||
|
|
||||||
it "works for a simple projection" $
|
it "works for a simple projection" $
|
||||||
run $ do
|
run $ do
|
||||||
@ -110,58 +110,58 @@ main = do
|
|||||||
describe "select/where_" $ do
|
describe "select/where_" $ do
|
||||||
it "works for a simple example with (==.)" $
|
it "works for a simple example with (==.)" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
_ <- insert p2
|
_ <- insert' p2
|
||||||
_ <- insert p3
|
_ <- insert' p3
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \p -> do
|
from $ \p -> do
|
||||||
where_ (p ^. PersonName ==. val "John")
|
where_ (p ^. PersonName ==. val "John")
|
||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ Entity p1k p1 ]
|
liftIO $ ret `shouldBe` [ p1e ]
|
||||||
|
|
||||||
it "works for a simple example with (==.) and (||.)" $
|
it "works for a simple example with (==.) and (||.)" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
p2k <- insert p2
|
p2e <- insert' p2
|
||||||
_ <- insert p3
|
_ <- insert' p3
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \p -> do
|
from $ \p -> do
|
||||||
where_ (p ^. PersonName ==. val "John" ||. p ^. PersonName ==. val "Rachel")
|
where_ (p ^. PersonName ==. val "John" ||. p ^. PersonName ==. val "Rachel")
|
||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ Entity p1k p1, Entity p2k p2 ]
|
liftIO $ ret `shouldBe` [ p1e, p2e ]
|
||||||
|
|
||||||
it "works for a simple example with (>.) [uses val . Just]" $
|
it "works for a simple example with (>.) [uses val . Just]" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
_ <- insert p2
|
_ <- insert' p2
|
||||||
_ <- insert p3
|
_ <- insert' p3
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \p -> do
|
from $ \p -> do
|
||||||
where_ (p ^. PersonAge >. val (Just 17))
|
where_ (p ^. PersonAge >. val (Just 17))
|
||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ Entity p1k p1 ]
|
liftIO $ ret `shouldBe` [ p1e ]
|
||||||
|
|
||||||
it "works for a simple example with (>.) and not_ [uses just . val]" $
|
it "works for a simple example with (>.) and not_ [uses just . val]" $
|
||||||
run $ do
|
run $ do
|
||||||
_ <- insert p1
|
_ <- insert' p1
|
||||||
_ <- insert p2
|
_ <- insert' p2
|
||||||
p3k <- insert p3
|
p3e <- insert' p3
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \p -> do
|
from $ \p -> do
|
||||||
where_ (not_ $ p ^. PersonAge >. just (val 17))
|
where_ (not_ $ p ^. PersonAge >. just (val 17))
|
||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ Entity p3k p3 ]
|
liftIO $ ret `shouldBe` [ p3e ]
|
||||||
|
|
||||||
it "works with isNothing" $
|
it "works with isNothing" $
|
||||||
run $ do
|
run $ do
|
||||||
_ <- insert p1
|
_ <- insert' p1
|
||||||
p2k <- insert p2
|
p2e <- insert' p2
|
||||||
_ <- insert p3
|
_ <- insert' p3
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \p -> do
|
from $ \p -> do
|
||||||
where_ $ isNothing (p ^. PersonAge)
|
where_ $ isNothing (p ^. PersonAge)
|
||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ Entity p2k p2 ]
|
liftIO $ ret `shouldBe` [ p2e ]
|
||||||
|
|
||||||
it "works for a many-to-many implicit join" $
|
it "works for a many-to-many implicit join" $
|
||||||
run $ do
|
run $ do
|
||||||
@ -189,46 +189,38 @@ main = do
|
|||||||
describe "select/orderBy" $ do
|
describe "select/orderBy" $ do
|
||||||
it "works with a single ASC field" $
|
it "works with a single ASC field" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
p2k <- insert p2
|
p2e <- insert' p2
|
||||||
p3k <- insert p3
|
p3e <- insert' p3
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \p -> do
|
from $ \p -> do
|
||||||
orderBy [asc $ p ^. PersonName]
|
orderBy [asc $ p ^. PersonName]
|
||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ Entity p1k p1
|
liftIO $ ret `shouldBe` [ p1e, p3e, p2e ]
|
||||||
, Entity p3k p3
|
|
||||||
, Entity p2k p2 ]
|
|
||||||
|
|
||||||
it "works with two ASC fields" $
|
it "works with two ASC fields" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
p2k <- insert p2
|
p2e <- insert' p2
|
||||||
p3k <- insert p3
|
p3e <- insert' p3
|
||||||
p4k <- insert p4
|
p4e <- insert' p4
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \p -> do
|
from $ \p -> do
|
||||||
orderBy [asc (p ^. PersonAge), asc (p ^. PersonName)]
|
orderBy [asc (p ^. PersonAge), asc (p ^. PersonName)]
|
||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ Entity p2k p2
|
liftIO $ ret `shouldBe` [ p2e, p4e, p3e, p1e ]
|
||||||
, Entity p4k p4
|
|
||||||
, Entity p3k p3
|
|
||||||
, Entity p1k p1 ]
|
|
||||||
|
|
||||||
it "works with one ASC and one DESC field" $
|
it "works with one ASC and one DESC field" $
|
||||||
run $ do
|
run $ do
|
||||||
p1k <- insert p1
|
p1e <- insert' p1
|
||||||
p2k <- insert p2
|
p2e <- insert' p2
|
||||||
p3k <- insert p3
|
p3e <- insert' p3
|
||||||
p4k <- insert p4
|
p4e <- insert' p4
|
||||||
ret <- select $
|
ret <- select $
|
||||||
from $ \p -> do
|
from $ \p -> do
|
||||||
orderBy [desc (p ^. PersonAge), asc (p ^. PersonName)]
|
orderBy [desc (p ^. PersonAge), asc (p ^. PersonName)]
|
||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ Entity p1k p1
|
liftIO $ ret `shouldBe` [ p1e, p4e, p3e, p2e ]
|
||||||
, Entity p4k p4
|
|
||||||
, Entity p3k p3
|
|
||||||
, Entity p2k p2 ]
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user