Hi I am testing my rest endpoint. When I run my test,
python manage.py test apps.pulse.tests.PulseTestCase.test_clinical_pubmed
I get an error that the test model does not exist in the test db.
*** django.db.utils.ProgrammingError: relation "pulse_targets" does not exist
For my endpoint I need to create a test model instance, which should get populated in setUp(self), but that error gets throwed.
Here is my test class,
from django.test import TestCase
from apps.pulse.models import Twitter
from apps.pulse.models import Targets
import json
class PulseTestCase(TestCase):
def setUp(self):
Targets.objects.create(gene_id='wee1')
target = Targets.objects.get(gene_id='wee1')
Twitter.objects.create(target=target, tweet_id=21212121212112212, user_id=313133131313133, tweet='wee1 in cancer', user='DeplorableBob')
def test_twitter(self):
response = self.client.post('/api/pulse/twitter', {'geneID': 'adrb2'}, format='json')
self.assertEqual(response.status_code, 200)
def test_clinical_pubmed(self):
response = self.client.post('/api/pulse/clinicalpubmed', {'geneID': 'adrb2'}, format='json')
self.assertEqual(response.status_code, 200)
Here is my models.py
class Targets(models.Model):
gene_id = models.CharField(max_length=50, blank=True, null=True)
uniprot = models.CharField(max_length=50, blank=True, null=True)
ensemble_id = models.CharField(max_length=50, blank=True, null=True)
Here is views.py
@api_view(['POST'])
def get_clinical_pubmed(request):
try:
response = middleware.get_clinical_pubmed(request.data['geneID'])
except:
response = 'Something went wrong'
return JsonResponse({'data': response})
Here is my fixture 0001_initial.py
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='ConferenceWatchList',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(blank=True, max_length=200, null=True)),
('society', models.CharField(blank=True, max_length=200, null=True)),
('url', models.CharField(blank=True, max_length=200, null=True)),
('start_date', models.DateField(blank=True, null=True)),
('end_date', models.DateField(blank=True, null=True)),
('abstract_release_date', models.DateField(blank=True, null=True)),
('location', models.CharField(blank=True, max_length=200, null=True)),
],
),
migrations.CreateModel(
name='Drugs',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(blank=True, max_length=50, null=True)),
],
),
migrations.CreateModel(
name='Ontology',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(blank=True, max_length=200, null=True)),
],
),
migrations.CreateModel(
name='OntologyRelations',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('ontology', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pulse.Ontology')),
],
),
migrations.CreateModel(
name='TargetBindingResidues',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('binding_residues', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(blank=True, null=True), blank=True, null=True, size=None)),
],
),
migrations.CreateModel(
name='TargetDrug',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('drug', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pulse.Drugs')),
],
),
migrations.CreateModel(
name='Targets',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('gene_id', models.CharField(blank=True, max_length=50, null=True)),
('uniprot', models.CharField(blank=True, max_length=50, null=True)),
('ensemble_id', models.CharField(blank=True, max_length=50, null=True)),
],
),
migrations.CreateModel(
name='Twitter',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('tweet_id', models.BigIntegerField(blank=True, null=True)),
('tweet', models.CharField(blank=True, max_length=280, null=True)),
('created_at', models.DateField(blank=True, null=True)),
('user', models.CharField(blank=True, max_length=280, null=True)),
('user_id', models.BigIntegerField(blank=True, null=True)),
('url', models.CharField(blank=True, max_length=2083, null=True)),
('target', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='pulse.Targets')),
],
),
migrations.AddField(
model_name='targetdrug',
name='target',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pulse.Targets'),
),
migrations.AddField(
model_name='targetbindingresidues',
name='target',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='pulse.Targets'),
),
migrations.AddField(
model_name='ontologyrelations',
name='protein',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pulse.Targets'),
),
migrations.AddField(
model_name='conferencewatchlist',
name='ontology',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pulse.Ontology'),
),
]
Aucun commentaire:
Enregistrer un commentaire