Skip to content

Commit

Permalink
#150: Add ISIS endpoint testing for DB backend
Browse files Browse the repository at this point in the history
  • Loading branch information
MRichards99 committed Dec 7, 2020
1 parent c5a867c commit 0c59b58
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 2 deletions.
3 changes: 2 additions & 1 deletion test/db/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,14 @@ def isis_specific_endpoint_data_db():
)
facility_cycle.FACILITY_ID = 1
set_meta_attributes(facility_cycle)
insert_row_into_table(FACILITYCYCLE, facility_cycle)

investigation = create_investigation_db_data()

instrument = INSTRUMENT()
instrument.NAME = "Test Instrument for DataGateway API Endpoint Testing (DB)"
instrument.FACILITY_ID = 1
set_meta_attributes(instrument)

insert_row_into_table(INSTRUMENT, instrument)

investigation_instrument = INVESTIGATIONINSTRUMENT()
Expand All @@ -106,6 +106,7 @@ def isis_specific_endpoint_data_db():

yield (instrument.ID, facility_cycle, investigation)

delete_row_by_id(INVESTIGATIONINSTRUMENT, investigation_instrument.ID)
delete_row_by_id(FACILITYCYCLE, facility_cycle.ID)
delete_row_by_id(INVESTIGATION, investigation.ID)
delete_row_by_id(INSTRUMENT, instrument.ID)
133 changes: 133 additions & 0 deletions test/db/endpoints/test_table_endpoints_db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
class TestDBTableEndpoints:
"""
This class tests the endpoints defined in table_endpoints.py, commonly referred to
as the ISIS specific endpoints
"""

def test_valid_get_facility_cycles_with_filters(
self,
flask_test_app_db,
valid_db_credentials_header,
isis_specific_endpoint_data_db,
):

print(int(isis_specific_endpoint_data_db[0]))
test_response = flask_test_app_db.get(
f"/instruments/{int(isis_specific_endpoint_data_db[0])}/facilitycycles",
headers=valid_db_credentials_header,
)

assert test_response.json == [isis_specific_endpoint_data_db[1].to_dict()]

def test_invalid_get_facility_cycles_with_filters(
self, flask_test_app_db, valid_db_credentials_header,
):
final_instrument_result = flask_test_app_db.get(
'/instruments/findone?order="ID DESC"', headers=valid_db_credentials_header,
)
final_instrument_id = final_instrument_result.json["ID"]

test_response = flask_test_app_db.get(
f"/instruments/{final_instrument_id + 100}/facilitycycles",
headers=valid_db_credentials_header,
)

assert test_response.json == []

def test_valid_get_facility_cycles_count_with_filters(
self,
flask_test_app_db,
valid_db_credentials_header,
isis_specific_endpoint_data_db,
):
test_response = flask_test_app_db.get(
f"/instruments/{isis_specific_endpoint_data_db[0]}/facilitycycles/count",
headers=valid_db_credentials_header,
)

assert test_response.json == 1

def test_invalid_get_facility_cycles_count_with_filters(
self, flask_test_app_db, valid_db_credentials_header,
):
final_instrument_result = flask_test_app_db.get(
'/instruments/findone?order="ID DESC"', headers=valid_db_credentials_header,
)
final_instrument_id = final_instrument_result.json["ID"]

test_response = flask_test_app_db.get(
f"/instruments/{final_instrument_id + 100}/facilitycycles/count",
headers=valid_db_credentials_header,
)

assert test_response.json == 0

def test_valid_get_investigations_with_filters(
self,
flask_test_app_db,
valid_db_credentials_header,
isis_specific_endpoint_data_db,
):
test_response = flask_test_app_db.get(
f"/instruments/{isis_specific_endpoint_data_db[0]}/facilitycycles/"
f"{isis_specific_endpoint_data_db[1].to_dict()['ID']}/investigations",
headers=valid_db_credentials_header,
)

assert test_response.json == [isis_specific_endpoint_data_db[2].to_dict()]

def test_invalid_get_investigations_with_filters(
self, flask_test_app_db, valid_db_credentials_header,
):
final_instrument_result = flask_test_app_db.get(
'/instruments/findone?order="ID DESC"', headers=valid_db_credentials_header,
)
final_instrument_id = final_instrument_result.json["ID"]
final_facilitycycle_result = flask_test_app_db.get(
'/facilitycycles/findone?order="ID DESC"',
headers=valid_db_credentials_header,
)
final_facilitycycle_id = final_facilitycycle_result.json["ID"]

test_response = flask_test_app_db.get(
f"/instruments/{final_instrument_id + 100}/facilitycycles/"
f"{final_facilitycycle_id + 100}/investigations",
headers=valid_db_credentials_header,
)

assert test_response.json == []

def test_valid_get_investigations_count_with_filters(
self,
flask_test_app_db,
valid_db_credentials_header,
isis_specific_endpoint_data_db,
):
test_response = flask_test_app_db.get(
f"/instruments/{isis_specific_endpoint_data_db[0]}/facilitycycles/"
f"{isis_specific_endpoint_data_db[1].to_dict()['ID']}/investigations/count",
headers=valid_db_credentials_header,
)

assert test_response.json == 1

def test_invalid_get_investigations_count_with_filters(
self, flask_test_app_db, valid_db_credentials_header,
):
final_instrument_result = flask_test_app_db.get(
'/instruments/findone?order="id DESC"', headers=valid_db_credentials_header,
)
final_instrument_id = final_instrument_result.json["ID"]
final_facilitycycle_result = flask_test_app_db.get(
'/facilitycycles/findone?order="ID DESC"',
headers=valid_db_credentials_header,
)
final_facilitycycle_id = final_facilitycycle_result.json["ID"]

test_response = flask_test_app_db.get(
f"/instruments/{final_instrument_id + 100}/facilitycycles/"
f"{final_facilitycycle_id + 100}/investigations/count",
headers=valid_db_credentials_header,
)

assert test_response.json == 0
2 changes: 1 addition & 1 deletion test/icat/endpoints/test_table_endpoints_icat.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from test.icat.test_query import prepare_icat_data_for_assertion


class TestTableEndpoints:
class TestICATableEndpoints:
"""
This class tests the endpoints defined in table_endpoints.py, commonly referred to
as the ISIS specific endpoints
Expand Down

0 comments on commit 0c59b58

Please sign in to comment.