Add failing test to test correct view column detection

This commit is contained in:
Ruslan Talpa
2016-02-29 11:37:23 +02:00
parent 4cd2475bf2
commit 62af792add
3 changed files with 76 additions and 9 deletions
+56
View File
@@ -24,6 +24,7 @@ spec = do
, {"schema":"test","name":"comments","insertable":true}
, {"schema":"test","name":"complex_items","insertable":true}
, {"schema":"test","name":"compound_pk","insertable":true}
, {"schema":"test","name":"filtered_tasks","insertable":true}
, {"schema":"test","name":"ghostBusters","insertable":true}
, {"schema":"test","name":"has_count_column","insertable":false}
, {"schema":"test","name":"has_fk","insertable":true}
@@ -57,6 +58,61 @@ spec = do
{matchStatus = 200}
describe "Table info" $ do
it "The structure of complex views is correctly detected" $
request methodOptions "/filtered_tasks" [] "" `shouldRespondWith`
[json|
{
"pkey": [
"myId"
],
"columns": [
{
"references": null,
"default": null,
"precision": 32,
"updatable": true,
"schema": "test",
"name": "myId",
"type": "integer",
"maxLen": null,
"enum": [],
"nullable": true,
"position": 1
},
{
"references": null,
"default": null,
"precision": null,
"updatable": true,
"schema": "test",
"name": "name",
"type": "text",
"maxLen": null,
"enum": [],
"nullable": true,
"position": 2
},
{
"references": {
"schema": "test",
"column": "id",
"table": "projects"
},
"default": null,
"precision": 32,
"updatable": true,
"schema": "test",
"name": "projectID",
"type": "integer",
"maxLen": null,
"enum": [],
"nullable": true,
"position": 3
}
]
}
|]
it "is available with OPTIONS verb" $
request methodOptions "/menagerie" [] "" `shouldRespondWith`
[json|
+1
View File
@@ -28,6 +28,7 @@ GRANT ALL ON TABLE
, projects_view
, simple_pk
, tasks
, filtered_tasks
, tsearch
, users
, users_projects
+19 -9
View File
@@ -540,6 +540,15 @@ CREATE TABLE simple_pk (
extra character varying NOT NULL
);
--
-- Name: users_projects; Type: TABLE; Schema: test; Owner: -
--
CREATE TABLE users_projects (
user_id integer NOT NULL,
project_id integer NOT NULL
);
--
-- Name: tasks; Type: TABLE; Schema: test; Owner: -
@@ -551,6 +560,16 @@ CREATE TABLE tasks (
project_id integer
);
CREATE OR REPLACE VIEW filtered_tasks AS
SELECT id AS "myId", name, project_id AS "projectID"
FROM tasks
WHERE project_id IN (
SELECT id FROM projects WHERE id = 1
) AND
project_id IN (
SELECT project_id FROM users_projects WHERE user_id = 1
);
--
-- Name: tsearch; Type: TABLE; Schema: test; Owner: -
@@ -571,15 +590,6 @@ CREATE TABLE users (
);
--
-- Name: users_projects; Type: TABLE; Schema: test; Owner: -
--
CREATE TABLE users_projects (
user_id integer NOT NULL,
project_id integer NOT NULL
);
--
-- Name: users_tasks; Type: TABLE; Schema: test; Owner: -