Skip to content

Commit

Permalink
fixed snippet tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rummanrc authored and onucsecu2 committed Aug 18, 2023
1 parent e813ff1 commit 978ea03
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 58 deletions.
6 changes: 5 additions & 1 deletion backend/src/app/schemas/snippet.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ class SnippetCreate(SnippetBase):

# Properties to receive on snippet update
class SnippetUpdate(SnippetCreate):
pass
title: Optional[str]
snippet: Optional[str]
language_id: Optional[int]
links: Optional[List[LinkBase]] = []
tag_ids: Optional[List[int]] = []


# Properties shared by models stored in DB
Expand Down
80 changes: 45 additions & 35 deletions backend/src/app/tests/crud/test_snippet.py
Original file line number Diff line number Diff line change
@@ -1,54 +1,48 @@
import pytest
# from sqlalchemy.orm import Session
from sqlalchemy.ext.asyncio import AsyncSession

from app import crud
from app.schemas import LanguageCreate
from app.schemas.link import LinkCreate
from app.schemas.snippet import SnippetCreate, SnippetUpdate
from app.tests.utils.user import create_random_user
from app.tests.utils.snippet import initialize_data
from app.tests.utils.utils import random_lower_string

pytestmark = pytest.mark.asyncio


async def test_create_snippet(async_get_db: AsyncSession) -> None:
title = random_lower_string()
snippet_text = random_lower_string()
language = LanguageCreate(id=1, name="Java")
snippet_in = SnippetCreate(title=title, snippet=snippet_text, language_id=language.id)
user = await create_random_user(async_get_db)
snippet = await crud.snippet.create_with_owner(db=async_get_db, obj_in=snippet_in, user_id=user.id)
assert snippet.title == title
assert snippet.snippet == snippet_text
assert snippet.language == language
assert snippet.user_id == user.id
save_data = await save_snippet(async_get_db)
snippet = save_data['snippet']
assert snippet.title == save_data['title']
assert snippet.snippet == save_data['snippet_text']
assert snippet.language.name == save_data['language_name']
assert snippet.links[0].url == save_data['link_url']
assert snippet.tags[0].id == 1 # todo get rid of magic number
assert snippet.user_id == save_data['user_id']


async def test_get_snippet(async_get_db: AsyncSession) -> None:
title = random_lower_string()
snippet_text = random_lower_string()
language = LanguageCreate(id=1, name="Java")
snippet_in = SnippetCreate(title=title, snippet=snippet_text, language_id=language.id)
user = await create_random_user(async_get_db)
snippet = await crud.snippet.create_with_owner(db=async_get_db, obj_in=snippet_in, user_id=user.id)
save_data = await save_snippet(async_get_db)
snippet = save_data['snippet']
stored_snippet = await crud.snippet.get(db=async_get_db, id=snippet.id)
assert stored_snippet
assert snippet.id == stored_snippet.id
assert snippet.title == stored_snippet.title
assert snippet.snippet == stored_snippet.snippet
assert snippet.language == language
assert snippet.language.name == save_data['language_name']
assert snippet.user_id == stored_snippet.user_id
assert snippet.links == stored_snippet.links
assert snippet.tags == stored_snippet.tags


async def test_update_snippet(async_get_db: AsyncSession) -> None:
title = random_lower_string()
snippet_text = random_lower_string()
language = LanguageCreate(id=1, name="Java")
snippet_in = SnippetCreate(title=title, snippet=snippet_text, language_id=language.id)
user = await create_random_user(async_get_db)
snippet = await crud.snippet.create_with_owner(db=async_get_db, obj_in=snippet_in, user_id=user.id)
snippet_text2 = random_lower_string()
snippet_update = SnippetUpdate(snippet=snippet_text)
save_data = await save_snippet(async_get_db)
snippet = save_data['snippet']
snippet_text2 = "updated snippet"
snippet_update = SnippetUpdate(snippet=snippet_text2)

snippet2 = await crud.snippet.update(db=async_get_db, db_obj=snippet, obj_in=snippet_update)
assert snippet.id == snippet2.id
assert snippet.title == snippet2.title
Expand All @@ -57,16 +51,32 @@ async def test_update_snippet(async_get_db: AsyncSession) -> None:


async def test_delete_snippet(async_get_db: AsyncSession) -> None:
title = random_lower_string()
snippet_text = random_lower_string()
language = LanguageCreate(id=1, name="Java")
snippet_in = SnippetCreate(title=title, snippet=snippet_text, language_id=language.id)
user = await create_random_user(async_get_db)
snippet = await crud.snippet.create_with_owner(db=async_get_db, obj_in=snippet_in, user_id=user.id)
save_data = await save_snippet(async_get_db)
snippet = save_data['snippet']
snippet2 = await crud.snippet.remove(db=async_get_db, id=snippet.id)
snippet3 = await crud.snippet.get(db=async_get_db, id=snippet.id)
assert snippet3 is None
assert snippet2.id == snippet.id
assert snippet2.title == title
assert snippet2.snippet == snippet_text
assert snippet2.user_id == user.id
assert snippet2.title == save_data['title']
assert snippet2.snippet == save_data['snippet_text']
assert snippet2.user_id == save_data['user_id']


async def save_snippet(async_get_db: AsyncSession) -> dict:
user = await create_random_user(async_get_db)
await initialize_data(async_get_db, user_id=user.id) # todo receive data from here
title = random_lower_string()
snippet_text = random_lower_string()
language = LanguageCreate(id=1, name="Java")
link = LinkCreate(url="https://snip.pet")
snippet_in = SnippetCreate(title=title, snippet=snippet_text, language_id=1, tag_ids=[1], links=[link])
snippet = await crud.snippet.create_with_owner(db=async_get_db, obj_in=snippet_in, user_id=user.id)

return {
'user_id': user.id,
'title': title,
'language_name': language.name,
'link_url': link.url,
'snippet_text': snippet_text,
'snippet': snippet,
}
22 changes: 0 additions & 22 deletions backend/src/app/tests/utils/snippet.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
from typing import Optional

from httpx import AsyncClient
from sqlalchemy import select
#from sqlalchemy.orm import Session
from sqlalchemy.ext.asyncio import AsyncSession

from app import crud, models, schemas
from app.core.config import settings
from app.models import Tag
from app.models.language import Language
from app.schemas.link import LinkCreate
from app.schemas.snippet import SnippetCreate
from app.tests.utils.user import create_random_user
Expand All @@ -28,20 +20,6 @@ async def create_random_snippet(db: AsyncSession, *, user_id: Optional[int] = No


async def initialize_data(db: AsyncSession, user_id: Optional[int] = None):
# tags_to_be_deleted = await db.execute(
# select(Tag)
# )
# tags_to_delete = tags_to_be_deleted.scalars().all()
# for tag in tags_to_delete:
# await db.delete(tag)
#
# languages_to_be_deleted = await db.execute(
# select(Language)
# )
# languages_to_delete = languages_to_be_deleted.scalars().all()
# for tag in languages_to_delete:
# await db.delete(tag)

languages = [
{"id": 1, "name": "Java"},
{"id": 2, "name": "Python"},
Expand Down

0 comments on commit 978ea03

Please sign in to comment.