Skip to content
Open
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
9 changes: 8 additions & 1 deletion backend/crud/charts_crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,12 @@ def get_charts(db: Session):
차트 정보 불러오는 API
:param db:
:return: fish_type, count(fish_id)
아무것도 없을시 0으로 반환
"""
return db.query(Fish.fish_type,func.count(History.fish_id)).group_by(History.fish_id).join(Fish,History.fish_id == Fish.fish_id)
# create an alias for the right table
# right_table = aliased(Fish)

# perform the right join
# query = db.query(LeftTable).join(right_table, LeftTable.id == right_table.left_id, isouter=True)

return db.query(Fish.fish_type,func.count(History.fish_id)).group_by(Fish.fish_type).group_by(History.fish_id).outerjoin(History,History.fish_id == Fish.fish_id)
17 changes: 17 additions & 0 deletions backend/database.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,28 @@
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import socket

import os


SQLALCHEMY_DATABASE_URL = "mysql+pymysql://taegong:[email protected]:3306/taegong"

try:
hostname = socket.gethostname()
# Get the IP address
ip_address = socket.gethostbyname(hostname)
if ip_address == "127.0.0.1":
print("Running on localhost.")
SQLALCHEMY_DATABASE_URL = "mysql+pymysql://taegong:taegong@localhost:3306/taegong"
else:
print("the docker container ip is:",ip_address)
except:
print("Could not determine if running on localhost or in a Docker container.")




engine = create_engine(
SQLALCHEMY_DATABASE_URL,
# connect_args={"check_same_thread": False}
Expand Down
Empty file added backend/test/__init__.py
Empty file.
41 changes: 41 additions & 0 deletions backend/test/test_charts_crud.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import unittest
from unittest.mock import MagicMock
from crud import charts_crud
from fastapi.testclient import TestClient
from fastapi import FastAPI, HTTPException
from unittest.mock import MagicMock
from main import app



class MyTestCase(unittest.TestCase):

def get_db(self):
"""
Fake 데이터 베이스
:return:
"""
# Create a fake database object
db = MagicMock()
# Add some test data
items = [{"id": 1, "name": "Item 1"}]
db.query.return_value.filter.return_value.first.side_effect = items
return db

def test_charts_crud(self):
"""
차트 정보 불러오는 API 테스트
현재 데이터 베이스에 있는 데이터를 불러오는지 확인
:return: 모든 Fish_type
history에 fish_type이 없을시 0으로 반환
"""
# db = self.get_db()
client = TestClient(app)

response = client.get("http://0.0.0.0:8000/api/charts")
assert response.status_code == 200
assert response.json() == {'고등어': 0, '넙치': 5, '노랑 가오리': 11, '볼락': 3, '적색퉁돔': 5}


if __name__ == '__main__':
unittest.main()