Fixes regression where the search path did not recognize schemas with uppercase, spaces and other special characters in their names.
68 lines
2.9 KiB
Haskell
68 lines
2.9 KiB
Haskell
module Feature.ExtraSearchPathSpec where
|
|
|
|
import Network.HTTP.Types
|
|
import Network.Wai (Application)
|
|
import Test.Hspec
|
|
import Test.Hspec.Wai
|
|
import Test.Hspec.Wai.JSON
|
|
|
|
import Protolude hiding (get)
|
|
import SpecHelper
|
|
|
|
spec :: SpecWith ((), Application)
|
|
spec = describe "extra search path" $ do
|
|
|
|
it "finds the ltree <@ operator on the public schema" $
|
|
request methodGet "/ltree_sample?path=cd.Top.Science.Astronomy" [] ""
|
|
`shouldRespondWith` [json|[
|
|
{"path":"Top.Science.Astronomy"},
|
|
{"path":"Top.Science.Astronomy.Astrophysics"},
|
|
{"path":"Top.Science.Astronomy.Cosmology"}]|]
|
|
{ matchHeaders = [matchContentTypeJson] }
|
|
|
|
it "finds the ltree ~ operator on the public schema" $ do
|
|
request methodGet "/ltree_sample?path=match.*.Science" [] ""
|
|
`shouldRespondWith` [json|[
|
|
{"path": "Top.Science"}]|]
|
|
{ matchHeaders = [matchContentTypeJson] }
|
|
|
|
request methodGet "/ltree_sample?path=match.*.Astronomy.*" [] ""
|
|
`shouldRespondWith` [json|[
|
|
{"path": "Top.Science.Astronomy"},
|
|
{"path": "Top.Science.Astronomy.Astrophysics"},
|
|
{"path": "Top.Science.Astronomy.Cosmology"},
|
|
{"path": "Top.Collections.Pictures.Astronomy"},
|
|
{"path": "Top.Collections.Pictures.Astronomy.Stars"},
|
|
{"path": "Top.Collections.Pictures.Astronomy.Galaxies"},
|
|
{"path": "Top.Collections.Pictures.Astronomy.Astronauts"}]|]
|
|
{ matchHeaders = [matchContentTypeJson] }
|
|
|
|
request methodGet "/ltree_sample?path=match.*.Collections.*{1,2}" [] ""
|
|
`shouldRespondWith` [json|[
|
|
{"path": "Top.Collections.Pictures"},
|
|
{"path": "Top.Collections.Pictures.Astronomy"}]|]
|
|
{ matchHeaders = [matchContentTypeJson] }
|
|
|
|
it "finds the ltree nlevel function on the public schema, used through a computed column" $
|
|
request methodGet "/ltree_sample?select=number_of_labels&path=eq.Top.Science" [] ""
|
|
`shouldRespondWith` [json|[{"number_of_labels":2}]|]
|
|
{ matchHeaders = [matchContentTypeJson] }
|
|
|
|
it "finds the isn = operator on the extensions schema" $
|
|
request methodGet "/isn_sample?id=eq.978-0-393-04002-9&select=name" [] ""
|
|
`shouldRespondWith` [json|[{"name":"Mathematics: From the Birth of Numbers"}]|]
|
|
{ matchHeaders = [matchContentTypeJson] }
|
|
|
|
it "finds the isn is_valid function on the extensions schema" $
|
|
request methodGet "/rpc/is_valid_isbn?input=978-0-393-04002-9" [] ""
|
|
`shouldRespondWith` [json|true|]
|
|
{ matchHeaders = [matchContentTypeJson] }
|
|
|
|
it "finds a function on a schema with uppercase and special characters in its name" $
|
|
request methodGet "/rpc/special_extended_schema?val=value" [] ""
|
|
`shouldRespondWith` [json|"value"|]
|
|
{ matchHeaders = [matchContentTypeJson] }
|
|
|
|
it "can detect fk relations through multiple views recursively when middle views are in extra search path" $
|
|
get "/consumers_extra_view?select=*,orders_view(*)" `shouldRespondWith` 200
|