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
8 changes: 4 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ run-build:
fi

test:
sudo docker-compose -f docker-compose.dev.yml run request python manage.py test
sudo docker-compose -f docker-compose.dev.yml run --rm request python manage.py test

lint:
sudo docker-compose -f docker-compose.dev.yml run request black .
sudo docker-compose -f docker-compose.dev.yml run --rm request black .

check-db:
sudo docker-compose -f docker-compose.dev.yml exec db psql -U postgres
Expand All @@ -47,8 +47,8 @@ down:
sudo docker-compose -f docker-compose.dev.yml down

recreate-db:
sudo docker-compose -f docker-compose.dev.yml run request python manage.py recreate-db
sudo docker-compose -f docker-compose.dev.yml run --rm request python manage.py recreate-db

cov-html:
sudo docker-compose -f docker-compose.dev.yml run request python manage.py cov;
sudo docker-compose -f docker-compose.dev.yml run --rm request python manage.py cov;
google-chrome $(CURRENT_DIR)/htmlcov/index.html;
4 changes: 2 additions & 2 deletions project/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ def to_json(self):
return {
"requestid": self.requestid,
"productname": self.productname,
"startdate": self.startdate,
"enddate": self.enddate,
"startdate": self.startdate.isoformat(),
"enddate": self.enddate.isoformat(),
"description": self.description,
"requester": self.requester,
"finalized": self.finalized,
Expand Down
29 changes: 23 additions & 6 deletions project/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from project.api.models import db
from project.api.models import Category
from project.api.utils import get_category_name

from datetime import datetime, date

category_blueprint = Blueprint("categories", __name__)
request_blueprint = Blueprint("requests", __name__)
Expand Down Expand Up @@ -57,6 +57,7 @@ def add_categories():
def get_all_request():
requester = request.args.get("requester")
lender = request.args.get("lender")

if requester:
requests = get_category_name(
[
Expand Down Expand Up @@ -94,12 +95,16 @@ def get_all_request():
def get_all_available_requests():
usermail = request.args.get("usermail")

today_date = datetime.now().date().isoformat()

error_response = {"status": "fail", "message": "Request not found"}

available_requests = [
request.to_json()
for request in Request.query.filter(
Request.lender == None, Request.requester != usermail
Request.lender == None,
Request.requester != usermail,
Request.enddate >= today_date,
).all()
]

Expand All @@ -113,17 +118,29 @@ def get_all_available_requests():
return jsonify(response), 200


@request_blueprint.route("/requests/<productcategoryid>", methods=["GET"])
def get_filtered_request(productcategoryid):
@request_blueprint.route("/requests/available/<productcategoryid>", methods=["GET"])
def get_requests_filtered_by_category(productcategoryid):
usermail = request.args.get("usermail")

today_date = datetime.now().date().isoformat()

error_response = {"status": "fail", "message": "Request not found"}

requests = get_category_name(
[
request.to_json()
for request in Request.query.filter_by(
productcategoryid=productcategoryid
for request in Request.query.filter(
Request.lender == None,
Request.requester != usermail,
Request.enddate >= today_date,
Request.productcategoryid == productcategoryid,
).all()
]
)

if not requests:
return jsonify(error_response), 404

response = {
"status": "success",
"data": {"requests": requests},
Expand Down
85 changes: 81 additions & 4 deletions project/tests/test_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
FAKE_DESCRIPTION = (
"Queria um Uno emprestado para jogar com meus amigos neste fim de semana!"
)
FAKE_ENDDATE = "2020-09-30 00:00:00.000"
FAKE_ENDDATE = "2021-09-30 00:00:00.000"
FAKE_STARTDATE = "2020-09-12 00:00:00.000"
FAKE_REQUESTER = "matheus@email.com"
REQUEST_BASE_URL = "/requests"
Expand Down Expand Up @@ -91,6 +91,81 @@ def test_get_all_requests(self):

self.assertEqual(len(data["data"]["requests"]), 3)

def test_get_all_available_requests(self):
add_category("Eletrodomésticos")
add_request(
"Banco Imobiliario",
FAKE_STARTDATE,
FAKE_ENDDATE,
"Queria um banco imobiliário emprestado para jogar com meus amigos neste fim de semana!",
FAKE_REQUESTER,
1,
)
add_request(
"Jogo da vida",
FAKE_STARTDATE,
FAKE_ENDDATE,
"Queria um jogo da vida emprestado para jogar com meus amigos neste fim de semana!",
FAKE_REQUESTER,
1,
)
add_request(
"War",
FAKE_STARTDATE,
FAKE_ENDDATE,
"Queria um war emprestado para jogar com meus amigos neste fim de semana!",
FAKE_REQUESTER,
1,
)

with self.client:
response = self.client.get(
f"{REQUEST_BASE_URL}/available?usermail={FAKE_EMAIL}"
)
data = json.loads(response.data.decode())

self.assertEqual(response.status_code, 200)
self.assertIn("success", data["status"])

self.assertEqual(len(data["data"]["available requests"]), 3)

def test_not_available_requests(self):
add_category("Eletrodomésticos")
add_request(
"Banco Imobiliario",
FAKE_STARTDATE,
FAKE_ENDDATE,
"Queria um banco imobiliário emprestado para jogar com meus amigos neste fim de semana!",
"tah_tu@email.com",
1,
)
add_request(
"Jogo da vida",
FAKE_STARTDATE,
"2021-01-30 00:00:00.000",
"Queria um jogo da vida emprestado para jogar com meus amigos neste fim de semana!",
FAKE_REQUESTER,
1,
)
add_request(
"War",
FAKE_STARTDATE,
FAKE_ENDDATE,
"Queria um war emprestado para jogar com meus amigos neste fim de semana!",
FAKE_REQUESTER,
1,
lender="jose@email.com",
)

with self.client:
response = self.client.get(
f"{REQUEST_BASE_URL}/available?usermail={FAKE_EMAIL}"
)
data = json.loads(response.data.decode())

self.assertEqual(response.status_code, 404)
self.assertIn("fail", data["status"])

def test_get_all_requests_requester(self):
add_category("Eletrodomésticos")
add_request(
Expand Down Expand Up @@ -151,8 +226,8 @@ def test_get_all_requests_lender(self):

self.assertEqual(len(data["data"]["requests"]), 1)

def test_get_filtered_requests(self):
add_category("Eletrodomésticos")
def test_get_requests_filtered_by_category(self):
add_category("Jogos")
add_request(
"Jogo da vida",
FAKE_STARTDATE,
Expand All @@ -171,7 +246,9 @@ def test_get_filtered_requests(self):
)

with self.client:
response = self.client.get(f"{REQUEST_BASE_URL}/1")
response = self.client.get(
f"{REQUEST_BASE_URL}/available/1?usermail={FAKE_EMAIL}"
)
data = json.loads(response.data.decode())

self.assertEqual(response.status_code, 200)
Expand Down