Skip to content

Commit 3076af2

Browse files
committed
Rewrote 'test_movie_count' function to make use database set up in pytest
1 parent 0bfeafa commit 3076af2

File tree

1 file changed

+42
-49
lines changed

1 file changed

+42
-49
lines changed

tests/server/api/test_movies.py

Lines changed: 42 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,68 @@
1-
from unittest.mock import Mock, create_autospec, patch
1+
from unittest.mock import ANY
22

3-
import pytest
43
from fastapi.testclient import TestClient
54
from sqlmodel import Session
65

6+
from murfey.server.api.auth import validate_instrument_token
77
from murfey.server.main import app
8-
from murfey.server.murfey_db import murfey_db_session
8+
from murfey.server.murfey_db import murfey_db
99
from murfey.util.api import url_path_for
10+
from murfey.util.db import Movie
1011

12+
# @pytest.fixture(scope="module")
13+
# def test_user():
14+
# return {"username": "testuser", "password": "testpass"}
1115

12-
@pytest.fixture(scope="module")
13-
def test_user():
14-
return {"username": "testuser", "password": "testpass"}
1516

17+
# def movies_return():
18+
# return [("Supervisor_1", 2)]
1619

17-
def movies_return():
18-
return [("Supervisor_1", 2)]
1920

21+
# expression = Mock()
22+
# expression.all = movies_return
2023

21-
expression = Mock()
22-
expression.all = movies_return
24+
# mock_session = create_autospec(Session, instance=True)
25+
# mock_session.exec.return_value = expression
2326

24-
mock_session = create_autospec(Session, instance=True)
25-
mock_session.exec.return_value = expression
2627

28+
# def override_murfey_db():
29+
# try:
30+
# db = mock_session
31+
# yield db
32+
# finally:
33+
# db.close()
2734

28-
def override_murfey_db():
29-
try:
30-
db = mock_session
31-
yield db
32-
finally:
33-
db.close()
3435

35-
36-
app.dependency_overrides[murfey_db_session] = override_murfey_db
36+
# app.dependency_overrides[murfey_db] = override_murfey_db
3737

3838
client = TestClient(app)
3939

4040

41-
def login(test_user):
42-
with patch(
43-
"murfey.server.api.auth.validate_user", return_value=True
44-
) as mock_validate:
45-
response = client.post(
46-
f"{url_path_for('auth.router', 'mint_session_token', session_id=1)}",
47-
data=test_user,
48-
)
49-
assert mock_validate.called_once()
50-
assert response.status_code == 200
51-
token = response.json()["access_token"]
52-
assert token is not None
53-
return token
54-
55-
56-
@patch("murfey.server.api.auth.check_user", return_value=True)
57-
@patch("murfey.server.api.auth.murfey_db")
5841
def test_movie_count(
59-
mock_check,
60-
mock_murfey_db,
61-
test_user,
62-
murfey_db_session,
42+
murfey_db_session: Session,
6343
):
6444

65-
mock_murfey_db = murfey_db_session
66-
token = login(test_user)
45+
# Insert test movies into Murfey DB
46+
tag = "test_movie"
47+
num_movies = 5
48+
murfey_db_session
49+
for i in range(num_movies):
50+
movie_db_entry = Movie(
51+
murfey_id=i,
52+
path="/some/path",
53+
image_number=i,
54+
tag=tag,
55+
)
56+
murfey_db_session.add(movie_db_entry)
57+
murfey_db_session.commit()
58+
59+
# Replace the murfey_db instance in endpoint with properly initialised pytest one
60+
app.dependency_overrides[murfey_db] = murfey_db_session
61+
# Disable instrument token validation
62+
app.dependency_overrides[validate_instrument_token] = lambda: None
63+
6764
response = client.get(
6865
f"{url_path_for('session_control.router', 'count_number_of_movies')}",
69-
headers={"Authorization": f"Bearer {token}"},
66+
headers={"Authorization": f"Bearer {ANY}"},
7067
)
71-
assert mock_murfey_db
72-
assert mock_check.called_once()
73-
assert response.status_code == 200
74-
assert len(mock_session.method_calls) == 2
75-
assert response.json() == {"Supervisor_1": 2}
68+
assert response.json() == {tag: num_movies}

0 commit comments

Comments
 (0)