Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ add_google_tests(${PROJECT_NAME}_unittest)
# Functional Tests
userver_testsuite_add_simple(
REQUIREMENTS ${CMAKE_CURRENT_SOURCE_DIR}/tests/requirements.txt
SQL_LIBRARY ${PROJECT_NAME}_sql
)

# Install
Expand Down
49 changes: 0 additions & 49 deletions postgresql/schemas/db-1.sql
Original file line number Diff line number Diff line change
Expand Up @@ -334,55 +334,6 @@ END;
$$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION real_medium.update_article_by_slug(_old_slug varchar(255), _user_id text, _title varchar(255) = NULL, _new_slug varchar(255) = NULL, _description text = NULL, _body text = NULL)
RETURNS SETOF TEXT
AS $$
BEGIN
RETURN QUERY UPDATE
real_medium.articles
SET
title = COALESCE(_title, title),
slug = COALESCE(_new_slug, slug),
description = COALESCE(_description, description),
body = COALESCE(_body, body),
updated_at = NOW()
WHERE
slug = _old_slug
AND user_id = _user_id
RETURNING
article_id;
END;
$$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION real_medium.get_article_id_by_slug(_slug varchar(255))
RETURNS SETOF TEXT
AS $$
BEGIN
RETURN QUERY
SELECT
article_id
FROM
real_medium.articles
WHERE
slug = _slug;
END;
$$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION real_medium.delete_article_by_slug(_slug varchar(255), _user_id text)
RETURNS SETOF TEXT
AS $$
BEGIN
RETURN QUERY DELETE FROM real_medium.articles
WHERE slug = _slug
AND user_id = _user_id
RETURNING
article_id;
END;
$$
LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION real_medium.get_articles_by_filters(_user_id text = NULL, _tag text = NULL, _author text = NULL, _favorited text = NULL, _limit int = 20, _offset int = 0)
RETURNS SETOF real_medium.tagged_article_with_author_profile
AS $$
Expand Down
4 changes: 3 additions & 1 deletion src/db/delete_article_by_slug.sql
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
SELECT real_medium.delete_article_by_slug($1, $2)
DELETE FROM real_medium.articles
WHERE slug = $1 AND user_id = $2
RETURNING article_id
1 change: 0 additions & 1 deletion src/db/find_articles_by_filters.sql

This file was deleted.

1 change: 0 additions & 1 deletion src/db/find_articles_by_followed_users.sql

This file was deleted.

18 changes: 0 additions & 18 deletions src/db/find_comments_by_article_id.sql

This file was deleted.

4 changes: 3 additions & 1 deletion src/db/get_article_id_by_slug.sql
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
SELECT real_medium.get_article_id_by_slug($1)
SELECT article_id
FROM real_medium.articles
WHERE slug = $1
1 change: 0 additions & 1 deletion src/db/is_profile_following.sql

This file was deleted.

10 changes: 9 additions & 1 deletion src/db/update_article_by_slug.sql
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
SELECT real_medium.update_article_by_slug($1, $2, $3, $4, $5, $6)
UPDATE real_medium.articles
SET
title = COALESCE($3, title),
slug = COALESCE($4, slug),
description = COALESCE($5, description),
body = COALESCE($6, body),
updated_at = NOW()
WHERE slug = $1 AND user_id = $2
RETURNING article_id
20 changes: 20 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import pytest

from pytest_userver.plugins import coverage
from testsuite.databases.pgsql import discover

sys.path.append(os.path.join(os.path.dirname(__file__), 'helpers'))
Expand All @@ -19,3 +20,22 @@ def pgsql_local(service_source_dir, pgsql_local_create):
[service_source_dir.joinpath('postgresql/schemas')],
)
return pgsql_local_create(list(databases.values()))


@pytest.fixture
def on_uncovered():
"""
Will be called when the coverage is incomplete.
"""

def _on_uncovered(uncovered_statements):
used_in_caches_sqls = {
'select_full_article_info',
'select_cached_comments',
}
uncovered_statements = set(uncovered_statements) - used_in_caches_sqls
if uncovered_statements:
msg = f'Uncovered SQL/YQL statements: {uncovered_statements}'
raise coverage.UncoveredError(msg)

return _on_uncovered