From af967bf9584e7331d8a9ea3debb4299c490a1ab9 Mon Sep 17 00:00:00 2001 From: minhnp2 Date: Mon, 7 Nov 2022 18:24:24 -0600 Subject: [PATCH 1/4] Separated get request processing + fix decorator test --- src/backend/app.py | 17 ++++++++--------- src/backend/database/database_test.db | Bin 36864 -> 36864 bytes src/backend/dataholders/mainpage_get.py | 24 ++++++++++++++++++++++++ src/backend/tests/test_decorators.py | 1 + 4 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 src/backend/dataholders/mainpage_get.py diff --git a/src/backend/app.py b/src/backend/app.py index 42148ee58..ff189e9cb 100644 --- a/src/backend/app.py +++ b/src/backend/app.py @@ -1,12 +1,12 @@ """ This is a module docstring """ import json import dataclasses -from collections import namedtuple from werkzeug.datastructures import MultiDict from flask import Flask, request from flask_cors import CORS from pages.login import Login from pages.mainpage import MainPage +from dataholders.mainpage_get import ActionType, Params # from logging import FileHandler, WARNING app = Flask(__name__) @@ -67,20 +67,14 @@ def mainpage_get(mainpage_obj: MainPage, args: MultiDict): - Getting reviews of an apartment - Getting pictures of an apartment """ - action_type = namedtuple( - "action_type", ["is_search", "is_populate", "is_review", "is_pictures"] - ) - action = action_type( + action = ActionType( args.get("search", default=False, type=bool), args.get("populate", default=False, type=bool), args.get("review", default=False, type=bool), args.get("pictures", default=False, type=bool), ) - params = namedtuple( - "params", ["num_apts", "apt_id", "search_query", "price_sort", "rating_sort"] - ) - param = params( + param = Params( args.get("numApts", type=int), args.get("aptId", type=int), args.get("searchQuery", type=str), @@ -88,6 +82,11 @@ def mainpage_get(mainpage_obj: MainPage, args: MultiDict): args.get("ratingSort", type=int), ) + return mainpage_process_get(mainpage_obj, action, param) + + +def mainpage_process_get(mainpage_obj: MainPage, action: ActionType, param: Params): + """Process the get requests""" query_result = "" if action.is_search is True and param.search_query is not None: apts = mainpage_obj.search_apartments(param.search_query) diff --git a/src/backend/database/database_test.db b/src/backend/database/database_test.db index 1b1b8e6d5e282c1afa310c98fe7950df857bb741..dd4be4daa74b2f432738586f182421b3c66f9510 100644 GIT binary patch delta 68 zcmZozz|^pSX@V3}cGpB1Cm^{op;TX+S&N66S(+&*wJbBWyqMXQfq{V^h+%+>ky)H6 Ov^ce>m}&nag9HFoEDvx1 delta 68 zcmZozz|^pSX@V3}Cfh_ACm^{op;TX+@emI)voupsYFTD#c`@Tf1_lOxAcg@hMrLuQ O(BjmhV#fAG1_=N~zYj|Q diff --git a/src/backend/dataholders/mainpage_get.py b/src/backend/dataholders/mainpage_get.py new file mode 100644 index 000000000..60d9ecb16 --- /dev/null +++ b/src/backend/dataholders/mainpage_get.py @@ -0,0 +1,24 @@ +"""Contains dataclasses for mainpage get requests""" +from dataclasses import dataclass +from typing import Union + + +@dataclass +class ActionType: + """Specific action of the request""" + + is_search: bool + is_populate: bool + is_review: bool + is_pictures: bool + + +@dataclass +class Params: + """Other request parameters""" + + num_apts: Union[int, None] + apt_id: Union[int, None] + search_query: Union[str, None] + rating_sort: Union[int, None] + price_sort: Union[int, None] diff --git a/src/backend/tests/test_decorators.py b/src/backend/tests/test_decorators.py index 16c9ddc3d..6c3aab039 100644 --- a/src/backend/tests/test_decorators.py +++ b/src/backend/tests/test_decorators.py @@ -14,6 +14,7 @@ def insert_review(): ) +@decorators.use_test def test_use_database_raise_exception(): """use_database correctly raises an exception""" connection = sqlite3.connect("database/database_test.db") From 64f9bcc0485ed1a38f731dba1b18ca6624d1714a Mon Sep 17 00:00:00 2001 From: minhnp2 Date: Mon, 7 Nov 2022 18:25:32 -0600 Subject: [PATCH 2/4] Removed dataclass tests --- src/backend/database/database_test.db | Bin 36864 -> 36864 bytes src/backend/tests/test_apt.py | 41 -------------------------- src/backend/tests/test_review.py | 28 ------------------ 3 files changed, 69 deletions(-) delete mode 100644 src/backend/tests/test_apt.py delete mode 100644 src/backend/tests/test_review.py diff --git a/src/backend/database/database_test.db b/src/backend/database/database_test.db index dd4be4daa74b2f432738586f182421b3c66f9510..8d45ad6fddb57d4ca66a51e0844bf4d0298aa666 100644 GIT binary patch delta 68 zcmZozz|^pSX@V3}Ztg@GCm^{op;TX+#e#>KS(+&*wJbBWyqG11fq{V^h+%+>ky)H6 Ov^ce>n0e(Qg9HFh&<{)i delta 68 zcmZozz|^pSX@V3}cGpB1Cm^{op;TX+S&N66S(+&*wJbBWyqMXQfq{V^h+%+>ky)H6 Ov^ce>m}&nag9HFoEDvx1 diff --git a/src/backend/tests/test_apt.py b/src/backend/tests/test_apt.py deleted file mode 100644 index d1b6735dd..000000000 --- a/src/backend/tests/test_apt.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Test apt.py""" -from dataholders.apt import Apt - - -class TestApt: - """Test Apt class""" - - sample_id = 0 - sample_name = "Sherman Hall" - sample_address = "909 S 5th St" - sample_rating = 3 - sample_price_min = 5500 - sample_price_max = 6500 - sample_apt = Apt( - sample_id, - sample_name, - sample_address, - sample_rating, - sample_price_min, - sample_price_max, - ) - - def test_name(self): - """Test class stores correct name""" - assert self.sample_name == self.sample_apt.name - - def test_address(self): - """Test class stores correct address""" - assert self.sample_address == self.sample_apt.address - - def test_rating(self): - """Test class stores correct rating""" - assert self.sample_rating == self.sample_apt.rating - - def test_price_min(self): - """Test class stores correct min price""" - assert self.sample_price_min == self.sample_apt.price_min - - def test_price_max(self): - """Test class stores correct max price""" - assert self.sample_price_max == self.sample_apt.price_max diff --git a/src/backend/tests/test_review.py b/src/backend/tests/test_review.py deleted file mode 100644 index 61b14daa4..000000000 --- a/src/backend/tests/test_review.py +++ /dev/null @@ -1,28 +0,0 @@ -"""Test review.py""" -from dataholders.review import Review - - -class TestReview: - """Test Review class""" - - sample_username = "Minh Phan" - sample_date = "2022-10-07" - sample_comment = "Decent hall" - sample_vote = True - sample_review = Review(sample_username, sample_date, sample_comment, sample_vote) - - def test_username(self): - """Test class stores correct username""" - assert self.sample_username == self.sample_review.username - - def test_date(self): - """Test class stores correct date""" - assert self.sample_date == self.sample_review.date - - def test_comment(self): - """Test class stores correct comment""" - assert self.sample_comment == self.sample_review.comment - - def test_vote(self): - """Test class stores correct vote""" - assert self.sample_vote == self.sample_review.vote From c6cef25c1bfae22b5daeba4ebf29bb06b82beddb Mon Sep 17 00:00:00 2001 From: minhnp2 Date: Mon, 7 Nov 2022 18:27:30 -0600 Subject: [PATCH 3/4] Removed pytest-coverage.txt --- src/backend/database/database_test.db | Bin 36864 -> 36864 bytes src/backend/tests/pytest-coverage.txt | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/backend/tests/pytest-coverage.txt diff --git a/src/backend/database/database_test.db b/src/backend/database/database_test.db index 8d45ad6fddb57d4ca66a51e0844bf4d0298aa666..150da8bae4ae5da49a20a857249a6e573d41e51c 100644 GIT binary patch delta 67 zcmZozz|^pSX@V3}-uj6$PC#;FLYcnS8y;q6X{Mmmvdq--VpcH*1_pj0h5;@{W^ty_ N;?$yI7S}}v2>^Jh5840# delta 67 zcmZozz|^pSX@V3}Ztg@GCm^{op-f-Pf`^$|nkgu?EHkydm?egRfq@^0VStN~S)3`f NIJKyldF3L51OP^)4@dw2 diff --git a/src/backend/tests/pytest-coverage.txt b/src/backend/tests/pytest-coverage.txt deleted file mode 100644 index e69de29bb..000000000 From d1bb346aedbaff06c898aecf134e09a63dd1c313 Mon Sep 17 00:00:00 2001 From: minhnp2 Date: Mon, 7 Nov 2022 20:01:24 -0600 Subject: [PATCH 4/4] Renamed get request type to be more descriptive --- src/backend/app.py | 6 +++--- src/backend/database/database_test.db | Bin 36864 -> 36864 bytes src/backend/dataholders/mainpage_get.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/app.py b/src/backend/app.py index ff189e9cb..6173966af 100644 --- a/src/backend/app.py +++ b/src/backend/app.py @@ -6,7 +6,7 @@ from flask_cors import CORS from pages.login import Login from pages.mainpage import MainPage -from dataholders.mainpage_get import ActionType, Params +from dataholders.mainpage_get import GetRequestType, Params # from logging import FileHandler, WARNING app = Flask(__name__) @@ -67,7 +67,7 @@ def mainpage_get(mainpage_obj: MainPage, args: MultiDict): - Getting reviews of an apartment - Getting pictures of an apartment """ - action = ActionType( + action = GetRequestType( args.get("search", default=False, type=bool), args.get("populate", default=False, type=bool), args.get("review", default=False, type=bool), @@ -85,7 +85,7 @@ def mainpage_get(mainpage_obj: MainPage, args: MultiDict): return mainpage_process_get(mainpage_obj, action, param) -def mainpage_process_get(mainpage_obj: MainPage, action: ActionType, param: Params): +def mainpage_process_get(mainpage_obj: MainPage, action: GetRequestType, param: Params): """Process the get requests""" query_result = "" if action.is_search is True and param.search_query is not None: diff --git a/src/backend/database/database_test.db b/src/backend/database/database_test.db index 150da8bae4ae5da49a20a857249a6e573d41e51c..fce928f4de73f323a7e3694da24674472feeda4f 100644 GIT binary patch delta 68 zcmZozz|^pSX@V3}{>OjEBTW@)CN)UwRf@?zEt3=9nXKnw$1jLhOp Pp~b01#VijO86*GzsqYbQ delta 68 zcmZozz|^pSX@V3}-uj6$PC#;FLaDws%NrhMW@)CN)UwRf@?uso1_lOxAcg@hMrLuQ O(BjmhViwm$1_=OxTMym< diff --git a/src/backend/dataholders/mainpage_get.py b/src/backend/dataholders/mainpage_get.py index 60d9ecb16..68efbbf6e 100644 --- a/src/backend/dataholders/mainpage_get.py +++ b/src/backend/dataholders/mainpage_get.py @@ -4,7 +4,7 @@ @dataclass -class ActionType: +class GetRequestType: """Specific action of the request""" is_search: bool