Skip to content

Commit

Permalink
integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ZhihaoDC committed Dec 21, 2024
1 parent e5069af commit 2f754b0
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 6 deletions.
3 changes: 1 addition & 2 deletions client/src/components/Experiments.vue
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,7 @@ export default {
visualize(experiment) {
this.submitted = true
this.$store.commit('experiment/setExperiment', experiment);
this.$store.commit('experiment/setIsNewExperiment', false);
console.log(this.$store.getters['experiment/getExperiment'])
this.$store.commit('experiment/setIsNewExperiment', false);
this.$router.push(`/community-detection/${experiment.category.toLowerCase()}/experiment`);
},
Expand Down
Binary file modified server/.coverage
Binary file not shown.
27 changes: 24 additions & 3 deletions server/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,38 @@
from src import create_app
from io import StringIO
from csv import writer, QUOTE_NONNUMERIC
from src.plugins.SQLAlchemy import db
from testcontainers.mysql import MySqlContainer
import time
from sqlalchemy.exc import OperationalError
import sys

mysql = MySqlContainer()

@pytest.fixture(scope='session', autouse=True)
def client(request):
def remove_container():
mysql.stop()

@pytest.fixture(scope='module')
def client():
app = create_app(env='TEST')
app.config['TESTING'] = True


mysql.start()
request.addfinalizer(remove_container)
mysql_url = mysql.get_connection_url()
app.config['SQLALCHEMY_DATABASE_URI'] = mysql_url
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

app.app_context().push()
db.init_app(app)

db.create_all()

with app.test_client() as client:
yield client



@pytest.fixture(scope='function')
def csv_file():
mock_csv = [
Expand Down
67 changes: 67 additions & 0 deletions server/tests/test_experimentController.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@

import jwt
from datetime import datetime, timedelta
from src import app_config
from src.services import ExperimentService, UserService
from src.models.UserModel import User
from src.models.ExperimentModel import Experiment
from werkzeug.security import generate_password_hash
import sys
import json

def test_save_experiment(client):
"""
GIVEN backend listens in route '/save-experiment'
WHEN receives POST request with the experiment as payload
AND the experiment does not exist in the database
AND user is logged in
THEN save the experiment in the database
"""
ENDPOINT = '/save-experiment/'

#Mock user
user_mock = UserService.add_instance(User,
username='test_user',
email='test_user@gmail.com',
password=generate_password_hash('test', method='sha256'))


#Mock logged user
token_mock = jwt.encode({"sub": user_mock['email'],
"iat": datetime.utcnow(),
"exp": datetime.utcnow() + timedelta(minutes=30)
},
app_config.SECRET_KEY)

headers_mock = {"Authorization": f"Bearer {token_mock}"}


mock_experiment = {'category': "Louvain",
'creation_date': "2024/02/20, 21:59",
'dataset_id': "8bc32cde24e792e54c9a62b54a02808f",
'dataset_name': "book3",
'description': "",
'experiment_id': 4,
'experiment_name': "book3",
'metrics': {"modularity": 0.42},
'network_json': {"elements": {"edges": [], "nodes": []}},
'thumbnail': "",
'user_id': user_mock['id'],
'visualization_params': {"communitySeparation": 800,
"gravity": 0.1,
"nodeSeparation": 500}
}
mock_experiment = json.dumps(mock_experiment)
response = client.post(ENDPOINT,
data= mock_experiment,
headers=headers_mock,
content_type="application/json")

response_json = response.get_json()
print(response_json, file=sys.stderr)
assert response.status_code == 200
assert "experiment" in response_json
assert "Louvain" == response_json['experiment']["category"]
assert "nodes" in response_json['experiment']["network_json"]["elements"]
assert "edges" in response_json['experiment']["network_json"]["elements"]
assert "modularity" in response_json['experiment']["metrics"]
1 change: 0 additions & 1 deletion server/tests/test_louvainController.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ def test_apply_louvain(client):
AND contains graph's nodes
AND contains communities
AND contains modularity
AND me
"""
#create mock csv for POST request
mock_csv = BytesIO(b"""\
Expand Down

0 comments on commit 2f754b0

Please # to comment.