mardi 7 juillet 2020

Updated with Fixtures: Django REST test error: *** django.db.utils.ProgrammingError: relation “” does not exist

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