Skip to content

Commit 62e1aff

Browse files
committed
adding tests to qiita pet
1 parent e2a5558 commit 62e1aff

File tree

5 files changed

+87
-58
lines changed

5 files changed

+87
-58
lines changed

qiita_db/metadata_template/base_metadata_template.py

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -772,54 +772,6 @@ def _add_common_creation_steps_to_queue(cls, md_template, obj_id,
772772
', '.join(["%s"] * len(headers))),
773773
values, many=True)
774774

775-
@classmethod
776-
def delete(cls, id_):
777-
r"""Deletes the table from the database
778-
779-
Parameters
780-
----------
781-
id_ : obj
782-
The object identifier
783-
784-
Raises
785-
------
786-
QiitaDBUnknownIDError
787-
If no metadata_template with id id_ exists
788-
"""
789-
cls._check_subclass()
790-
if not cls.exists(id_):
791-
raise QiitaDBUnknownIDError(id_, cls.__name__)
792-
793-
table_name = cls._table_name(id_)
794-
conn_handler = SQLConnectionHandler()
795-
796-
# Delete the sample template filepaths
797-
queue = "delete_sample_template_%d" % id_
798-
conn_handler.create_queue(queue)
799-
800-
conn_handler.add_to_queue(
801-
queue,
802-
"DELETE FROM qiita.sample_template_filepath WHERE study_id = %s",
803-
(id_, ))
804-
805-
conn_handler.add_to_queue(
806-
queue,
807-
"DROP TABLE qiita.{0}".format(table_name))
808-
809-
conn_handler.add_to_queue(
810-
queue,
811-
"DELETE FROM qiita.{0} where {1} = %s".format(cls._table,
812-
cls._id_column),
813-
(id_,))
814-
815-
conn_handler.add_to_queue(
816-
queue,
817-
"DELETE FROM qiita.{0} where {1} = %s".format(cls._column_table,
818-
cls._id_column),
819-
(id_,))
820-
821-
conn_handler.execute_queue(queue)
822-
823775
@classmethod
824776
def exists(cls, obj_id):
825777
r"""Checks if already exists a MetadataTemplate for the provided object

qiita_db/metadata_template/sample_template.py

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
from qiita_core.exceptions import IncompetentQiitaDeveloperError
1919
from qiita_db.exceptions import (QiitaDBDuplicateError, QiitaDBError,
20-
QiitaDBWarning)
20+
QiitaDBWarning, QiitaDBUnknownIDError)
2121
from qiita_db.sql_connection import SQLConnectionHandler
2222
from qiita_db.util import (get_table_cols, get_required_sample_info_status,
2323
get_mountpoint, scrub_data)
@@ -152,6 +152,63 @@ def create(cls, md_template, study):
152152

153153
return st
154154

155+
@classmethod
156+
def delete(cls, id_):
157+
r"""Deletes the table from the database
158+
159+
Parameters
160+
----------
161+
id_ : integer
162+
The object identifier
163+
164+
Raises
165+
------
166+
QiitaDBUnknownIDError
167+
If no sample template with id id_ exists
168+
QiitaDBError
169+
If the study that owns this sample template has raw datas
170+
"""
171+
cls._check_subclass()
172+
173+
if not cls.exists(id_):
174+
raise QiitaDBUnknownIDError(id_, cls.__name__)
175+
176+
raw_datas = [str(rd) for rd in Study(cls(id_).study_id).raw_data()]
177+
if raw_datas:
178+
raise QiitaDBError("Sample template can not be erased because "
179+
"there are raw datas (%s) associated." %
180+
', '.join(raw_datas))
181+
182+
table_name = cls._table_name(id_)
183+
conn_handler = SQLConnectionHandler()
184+
185+
# Delete the sample template filepaths
186+
queue = "delete_sample_template_%d" % id_
187+
conn_handler.create_queue(queue)
188+
189+
conn_handler.add_to_queue(
190+
queue,
191+
"DELETE FROM qiita.sample_template_filepath WHERE study_id = %s",
192+
(id_, ))
193+
194+
conn_handler.add_to_queue(
195+
queue,
196+
"DROP TABLE qiita.{0}".format(table_name))
197+
198+
conn_handler.add_to_queue(
199+
queue,
200+
"DELETE FROM qiita.{0} where {1} = %s".format(cls._table,
201+
cls._id_column),
202+
(id_,))
203+
204+
conn_handler.add_to_queue(
205+
queue,
206+
"DELETE FROM qiita.{0} where {1} = %s".format(cls._column_table,
207+
cls._id_column),
208+
(id_,))
209+
210+
conn_handler.execute_queue(queue)
211+
155212
@property
156213
def study_id(self):
157214
"""Gets the study id with which this sample template is associated

qiita_db/metadata_template/test/test_base_metadata_template.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,5 @@ def test_clean_validate_template(self):
6464
MetadataTemplate._clean_validate_template(None, 1, None, None)
6565

6666

67-
@qiita_test_checker()
68-
class TestMetadataTemplateReadWrite(TestCase):
69-
def test_delete(self):
70-
"""delete raises an error because it's not called from a subclass"""
71-
with self.assertRaises(IncompetentQiitaDeveloperError):
72-
MetadataTemplate.delete(1)
73-
7467
if __name__ == '__main__':
7568
main()

qiita_db/metadata_template/test/test_sample_template.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,20 +1229,26 @@ def test_create_already_prefixed_samples(self):
12291229

12301230
def test_delete(self):
12311231
"""Deletes Sample template 1"""
1232-
SampleTemplate.create(self.metadata, self.new_study)
1233-
SampleTemplate.delete(2)
1232+
st = SampleTemplate.create(self.metadata, self.new_study)
1233+
SampleTemplate.delete(st.id)
1234+
12341235
obs = self.conn_handler.execute_fetchall(
12351236
"SELECT * FROM qiita.required_sample_info WHERE study_id=2")
12361237
exp = []
12371238
self.assertEqual(obs, exp)
1239+
12381240
obs = self.conn_handler.execute_fetchall(
12391241
"SELECT * FROM qiita.study_sample_columns WHERE study_id=2")
12401242
exp = []
12411243
self.assertEqual(obs, exp)
1244+
12421245
with self.assertRaises(QiitaDBExecutionError):
12431246
self.conn_handler.execute_fetchall(
12441247
"SELECT * FROM qiita.sample_2")
12451248

1249+
with self.assertRaises(QiitaDBError):
1250+
SampleTemplate.delete(1)
1251+
12461252
def test_delete_unkonwn_id_error(self):
12471253
"""Try to delete a non existent prep template"""
12481254
with self.assertRaises(QiitaDBUnknownIDError):

qiita_pet/test/test_study_handlers.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,29 +389,50 @@ def test_delete_sample_template(self):
389389
'action': 'delete_sample_template'})
390390
self.assertEqual(response.code, 200)
391391

392+
# checking that the action was sent
393+
self.assertIn("Sample template can not be erased because there are "
394+
"raw datas", response.body)
395+
392396
def test_delete_raw_data(self):
393397
response = self.post('/study/description/1',
394398
{'raw_data_id': 1,
395399
'action': 'delete_raw_data'})
396400
self.assertEqual(response.code, 200)
397401

402+
# checking that the action was sent
403+
self.assertIn("Raw data 1 has prep template(s) associated so it can't "
404+
"be erased", response.body)
405+
398406
def test_delete_prep_template(self):
399407
response = self.post('/study/description/1',
400408
{'prep_template_id': 1,
401409
'action': 'delete_prep_template'})
402410
self.assertEqual(response.code, 200)
403411

412+
# checking that the action was sent
413+
self.assertIn('Cannot remove prep template 1 because a preprocessed '
414+
'data has been already generated using it.',
415+
response.body)
416+
404417
def test_delete_preprocessed_data(self):
405418
response = self.post('/study/description/1',
406419
{'preprocessed_data_id': 1,
407420
'action': 'delete_preprocessed_data'})
408421
self.assertEqual(response.code, 200)
409422

423+
# checking that the action was sent
424+
self.assertIn('Illegal operation on non sandboxed preprocessed data',
425+
response.body)
426+
410427
def test_delete_processed_data(self):
411428
response = self.post('/study/description/1',
412429
{'processed_data_id': 1,
413430
'action': 'delete_processed_data'})
414431
self.assertEqual(response.code, 200)
415432

433+
# checking that the action was sent
434+
self.assertIn('Illegal operation on non sandboxed processed data',
435+
response.body)
436+
416437
if __name__ == "__main__":
417438
main()

0 commit comments

Comments
 (0)