Completed
Push — master ( 2c16e2...28a4a1 )
by Paolo
17s queued 14s
created

AnnotateOrganismPartViewTest.test_post_start_task()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nop 2
1
#!/usr/bin/env python3
2
# -*- coding: utf-8 -*-
3
"""
4
Created on Fri Sep 27 15:59:57 2019
5
6
@author: Paolo Cozzi <[email protected]>
7
"""
8
9
from unittest.mock import patch
10
11
from django.test import TestCase, Client
12
from django.urls import resolve, reverse
13
14
from common.tests import GeneralMixinTestCase
15
16
from ..views import (
17
    OntologiesReportView, AnnotateBreedsView, AnnotateCountriesView,
18
    AnnotateSpeciesView, AnnotateOrganismPartView, AnnotateDevelStageView,
19
    AnnotatePhysioStageView)
20
21
22
class OntologiesMixin():
23
    fixtures = [
24
        "image_app/user",
25
        'image_app/dictbreed',
26
        'image_app/dictcountry',
27
        'image_app/dictrole',
28
        'image_app/dictsex',
29
        'image_app/dictspecie',
30
        'image_app/dictstage',
31
        'image_app/dictuberon',
32
    ]
33
34
    def setUp(self):
35
        """Set up"""
36
37
        super().setUp()
38
39
        # authenticate
40
        self.client = Client()
41
        self.client.login(username='test', password='test')
42
43
44
class OntologiesReportViewTest(
45
        OntologiesMixin, GeneralMixinTestCase, TestCase):
46
47
    def setUp(self):
48
        """Set up"""
49
50
        super().setUp()
51
52
        # get the url for dashboard
53
        self.url = reverse('zooma:ontologies_report')
54
55
        # get a response
56
        self.response = self.client.get(self.url)
57
58
    def test_url_resolves_view(self):
59
        view = resolve('/zooma/ontologies_report/')
60
        self.assertIsInstance(view.func.view_class(), OntologiesReportView)
61
62
63
class AnnotateViewMixinTest(OntologiesMixin, GeneralMixinTestCase):
64
65
    task_name = "AnnotateBreeds"
66
    zooma_url = "annotate_breeds"
67
    view_class = AnnotateBreedsView
68
69
    def setUp(self):
70
        """Set up"""
71
72
        super().setUp()
73
74
        # get the url for dashboard
75
        self.url = reverse('zooma:%s' % self.zooma_url)
76
77
        # get a response with an ajax request
78
        self.response = self.client.get(
79
            self.url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
80
81
    def test_url_resolves_view(self):
82
        view = resolve('/zooma/%s/' % (self.zooma_url))
83
        self.assertIsInstance(view.func.view_class(), self.view_class)
84
85
    def test_non_ajax_call(self):
86
        """A non ajax call reply 400 status"""
87
88
        response = self.client.get(self.url)
89
        self.assertEqual(response.status_code, 400)
90
91
    def test_post_start_task(self, my_task):
92
        response = self.client.post(
93
            self.url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
94
95
        self.assertEqual(response.status_code, 200)
96
        self.assertEqual(
97
            response.json(),
98
            {'status': '%s started' % (self.task_name)})
99
        self.assertTrue(my_task.called)
100
101
102
class AnnotateBreedViewTest(AnnotateViewMixinTest, TestCase):
103
104
    task_name = "AnnotateBreeds"
105
    zooma_url = "annotate_breeds"
106
    view_class = AnnotateBreedsView
107
108
    @patch("zooma.tasks.AnnotateBreeds.delay")
109
    def test_post_start_task(self, my_task):
110
        super().test_post_start_task(my_task)
111
112
113
class AnnotateCountriesViewTest(AnnotateViewMixinTest, TestCase):
114
115
    task_name = "AnnotateCountries"
116
    zooma_url = "annotate_countries"
117
    view_class = AnnotateCountriesView
118
119
    @patch("zooma.tasks.AnnotateCountries.delay")
120
    def test_post_start_task(self, my_task):
121
        super().test_post_start_task(my_task)
122
123
124
class AnnotateSpeciesViewTest(AnnotateViewMixinTest, TestCase):
125
126
    task_name = "AnnotateSpecies"
127
    zooma_url = "annotate_species"
128
    view_class = AnnotateSpeciesView
129
130
    @patch("zooma.tasks.AnnotateSpecies.delay")
131
    def test_post_start_task(self, my_task):
132
        super().test_post_start_task(my_task)
133
134
135
class AnnotateOrganismPartViewTest(AnnotateViewMixinTest, TestCase):
136
137
    task_name = "AnnotateOrganismPart"
138
    zooma_url = "annotate_organismparts"
139
    view_class = AnnotateOrganismPartView
140
141
    @patch("zooma.tasks.AnnotateOrganismPart.delay")
142
    def test_post_start_task(self, my_task):
143
        super().test_post_start_task(my_task)
144
145
146
class AnnotateDevelStageViewTest(AnnotateViewMixinTest, TestCase):
147
148
    task_name = "AnnotateDevelStage"
149
    zooma_url = "annotate_develstages"
150
    view_class = AnnotateDevelStageView
151
152
    @patch("zooma.tasks.AnnotateDevelStage.delay")
153
    def test_post_start_task(self, my_task):
154
        super().test_post_start_task(my_task)
155
156
157
class AnnotatePhysioStageViewTest(AnnotateViewMixinTest, TestCase):
158
159
    task_name = "AnnotatePhysioStage"
160
    zooma_url = "annotate_physiostages"
161
    view_class = AnnotatePhysioStageView
162
163
    @patch("zooma.tasks.AnnotatePhysioStage.delay")
164
    def test_post_start_task(self, my_task):
165
        super().test_post_start_task(my_task)
166