Skip to content

Commit b4bb316

Browse files
authored
Merge pull request #229 from TeresasaZ/dev
modified publications endpoint and tests
2 parents c0e8772 + b4bb9f3 commit b4bb316

2 files changed

Lines changed: 30 additions & 17 deletions

File tree

api/resources/gene_information.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,29 +87,37 @@ def post(self):
8787
return BARUtils.error_exit("No data for the given species/genes"), 400
8888

8989

90-
@gene_information.route("/gene_publications/<string:gene_id>")
90+
@gene_information.route("/gene_publications/<string:species>/<string:gene_id>")
9191
class GenePublications(Resource):
92-
# @gene_information.param("species", _in="path", default="arabidopsis")
92+
@gene_information.param("species", _in="path", default="arabidopsis")
9393
@gene_information.param("gene_id", _in="path", default="AT1G01010")
94-
def get(self, gene_id=""):
94+
def get(self, species="", gene_id=""):
9595
"""This end point provides publications given a gene ID."""
9696
publications = []
9797

9898
# Escape input
99+
species = escape(species)
99100
gene_id = escape(gene_id)
100101

101-
# truncate
102+
# truncate gene ID
102103
for i in range(len(gene_id)):
103104
if gene_id[i] == ".":
104105
gene_id = gene_id[0:i]
105106
break
106107

107-
if BARUtils.is_arabidopsis_gene_valid(gene_id):
108-
rows = db.session.execute(db.select(EPlant2Publications).where(EPlant2Publications.gene == gene_id)).scalars().all()
109-
for row in rows:
110-
publications.append({"gene_id": row.gene, "author": row.author, "year": row.year, "journal": row.journal, "title": row.title, "pubmed": row.pubmed})
108+
# Set the database and check if genes are valid
109+
if species == "arabidopsis":
110+
database = EPlant2Publications
111+
112+
if not BARUtils.is_arabidopsis_gene_valid(gene_id):
113+
return BARUtils.error_exit("Invalid gene id"), 400
111114
else:
112-
return BARUtils.error_exit("Invalid gene id"), 400
115+
return BARUtils.error_exit("No data for the given species")
116+
117+
# Get data
118+
rows = db.session.execute(db.select(database).where(database.gene == gene_id)).scalars().all()
119+
for row in rows:
120+
publications.append({"gene_id": row.gene, "author": row.author, "year": row.year, "journal": row.journal, "title": row.title, "pubmed": row.pubmed})
113121

114122
# Return results if there are data
115123
if len(publications) > 0:

tests/resources/test_gene_information.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def test_get_arabidopsis_gene_publications(self):
4848
:return:
4949
"""
5050
# Valid data
51-
response = self.app_client.get("/gene_information/gene_publications/AT1G01020")
51+
response = self.app_client.get("/gene_information/gene_publications/arabidopsis/AT1G01020")
5252
expected = {
5353
"wasSuccessful": True,
5454
"data": [
@@ -72,7 +72,7 @@ def test_get_arabidopsis_gene_publications(self):
7272
}
7373
self.assertEqual(response.json, expected)
7474

75-
response = self.app_client.get("/gene_information/gene_publications/AT1G01020.")
75+
response = self.app_client.get("/gene_information/gene_publications/arabidopsis/AT1G01020.")
7676
expected = {
7777
"wasSuccessful": True,
7878
"data": [
@@ -96,7 +96,7 @@ def test_get_arabidopsis_gene_publications(self):
9696
}
9797
self.assertEqual(response.json, expected)
9898

99-
response = self.app_client.get("/gene_information/gene_publications/AT1G01020.0")
99+
response = self.app_client.get("/gene_information/gene_publications/arabidopsis/AT1G01020.0")
100100
expected = {
101101
"wasSuccessful": True,
102102
"data": [
@@ -120,7 +120,7 @@ def test_get_arabidopsis_gene_publications(self):
120120
}
121121
self.assertEqual(response.json, expected)
122122

123-
response = self.app_client.get("/gene_information/gene_publications/AT1G01020.1")
123+
response = self.app_client.get("/gene_information/gene_publications/arabidopsis/AT1G01020.1")
124124
expected = {
125125
"wasSuccessful": True,
126126
"data": [
@@ -144,7 +144,7 @@ def test_get_arabidopsis_gene_publications(self):
144144
}
145145
self.assertEqual(response.json, expected)
146146

147-
response = self.app_client.get("/gene_information/gene_publications/AT1G01020.12345")
147+
response = self.app_client.get("/gene_information/gene_publications/arabidopsis/AT1G01020.12345")
148148
expected = {
149149
"wasSuccessful": True,
150150
"data": [
@@ -169,25 +169,30 @@ def test_get_arabidopsis_gene_publications(self):
169169
self.assertEqual(response.json, expected)
170170

171171
# Data not found, but gene is valid
172-
response = self.app_client.get("/gene_information/gene_publications/AT1G01035")
172+
response = self.app_client.get("/gene_information/gene_publications/arabidopsis/AT1G01035")
173173
expected = {
174174
"wasSuccessful": False,
175175
"error": "There are no data found for the given gene",
176176
}
177177
self.assertEqual(response.json, expected)
178178

179-
response = self.app_client.get("/gene_information/gene_publications/AT1G010400")
179+
response = self.app_client.get("/gene_information/gene_publications/arabidopsis/AT1G010400")
180180
expected = {
181181
"wasSuccessful": False,
182182
"error": "There are no data found for the given gene",
183183
}
184184
self.assertEqual(response.json, expected)
185185

186186
# Invalid Gene
187-
response = self.app_client.get("/gene_information/gene_publications/001G01030")
187+
response = self.app_client.get("/gene_information/gene_publications/arabidopsis/001G01030")
188188
expected = {"wasSuccessful": False, "error": "Invalid gene id"}
189189
self.assertEqual(response.json, expected)
190190

191+
# Invalid Species
192+
response = self.app_client.get("/gene_information/gene_publications/x/AT1G01020")
193+
expected = {"wasSuccessful": False, "error": "No data for the given species"}
194+
self.assertEqual(response.json, expected)
195+
191196
def test_get_arabidopsis_gene_isoform(self):
192197
"""This tests checks GET request for gene isoforms Arabidopsis
193198
:return:

0 commit comments

Comments
 (0)