From df4fa9758e20ffce6f0cc36f4e1f39ddd1c5b044 Mon Sep 17 00:00:00 2001 From: nikhila05 Date: Fri, 23 Aug 2019 10:48:41 +0530 Subject: [PATCH] updated testcases in events, invoices, tasks modules (#272) * updated testcases, update code for account view page, modified code for attachments and comments for assigned user * updated testcases in events, invoices, tasks modules --- .gitlab-ci.yml | 2 +- events/forms.py | 10 +- events/tests.py | 419 +++++++++++++++++++- events/views.py | 13 +- invoices/forms.py | 8 +- invoices/models.py | 12 +- invoices/tests.py | 533 +++++++++++++++++++++++++- invoices/views.py | 8 +- requirements_with_no_dependencies.txt | 19 + tasks/forms.py | 10 +- tasks/tests.py | 169 ++++++-- teams/tests.py | 168 +++++++- 12 files changed, 1301 insertions(+), 70 deletions(-) create mode 100644 requirements_with_no_dependencies.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 74aaf2bd..27f57205 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ Python 3.5.2: - source env/bin/activate - pip install --no-cache-dir -r requirements.txt - python manage.py test --noinput - - coverage run --source=accounts,cases,common,contacts,emails,leads,opportunity,planner manage.py test --noinput + - coverage run --source=accounts,cases,common,contacts,emails,leads,opportunity,planner,tasks,invoices,events,teams manage.py test --noinput - coverage report -m except: - tags diff --git a/events/forms.py b/events/forms.py index ff77da24..1e92c9d9 100644 --- a/events/forms.py +++ b/events/forms.py @@ -34,11 +34,11 @@ class EventForm(forms.ModelForm): self.fields["contacts"].queryset = Contact.objects.filter() self.fields['assigned_to'].required = True self.fields["teams"].choices = [(team.get('id'), team.get('name')) for team in Teams.objects.all().values('id', 'name')] - elif request_user.google.all(): - self.fields['assigned_to'].queryset = User.objects.none() - self.fields["contacts"].queryset = Contact.objects.filter( - Q(assigned_to__in=[request_user]) | Q(created_by=request_user)) - self.fields['assigned_to'].required = False + # elif request_user.google.all(): + # self.fields['assigned_to'].queryset = User.objects.none() + # self.fields["contacts"].queryset = Contact.objects.filter( + # Q(assigned_to__in=[request_user]) | Q(created_by=request_user)) + # self.fields['assigned_to'].required = False elif request_user.role == 'USER': self.fields['assigned_to'].queryset = User.objects.filter( role='ADMIN') diff --git a/events/tests.py b/events/tests.py index 7ce503c2..0b1e4eb9 100644 --- a/events/tests.py +++ b/events/tests.py @@ -1,3 +1,418 @@ -from django.test import TestCase +from datetime import datetime, timedelta + +from django.core.files.uploadedfile import SimpleUploadedFile +from django.test import TestCase +from django.urls import reverse + +from common.models import Address, Attachments, Comment, User +from contacts.models import Contact +from events.models import Event +from teams.models import Teams + + +class EventObjectTest(object): + + def setUp(self): + self.user = User.objects.create( + first_name="johnEvent", username='johnDoeEvent', email='johnDoeEvent@example.com', role='ADMIN') + self.user.set_password('password') + self.user.save() + + self.user1 = User.objects.create( + first_name="janeEvent", + username='janeDoeEvent', + email='janeDoeEvent@example.com', + role="USER", + has_sales_access=True) + self.user1.set_password('password') + self.user1.save() + + self.user2 = User.objects.create( + first_name="joeEvent", + username='joeEvent', + email='joeEvent@example.com', + role="USER", + has_sales_access=True) + self.user2.set_password('password') + self.user2.save() + + self.team_dev = Teams.objects.create(name='events teams') + self.team_dev.users.add(self.user2.id) + + self.contact = Contact.objects.create( + first_name="contact event", + email="contact@event.com", + phone="12345", + description="contact", + created_by=self.user1) + self.contact.assigned_to.add(self.user1) + + self.event = Event.objects.create( + name='event object test', + event_type='Non-Recurring', + start_date=(datetime.now()).strftime('%Y-%m-%d'), + start_time=(datetime.now()).strftime('%H:%M:%S'), + end_date=(datetime.now()).strftime('%Y-%m-%d'), + end_time=(datetime.now() + timedelta(hours=2) + ).strftime('%H:%M:%S'), + description='non recurring event', + created_by=self.user, + date_of_meeting=(datetime.now()).strftime('%Y-%m-%d'), + ) + self.event.contacts.add(self.contact) + self.event.assigned_to.add(self.user.id, self.user1.id) + + self.event_1 = Event.objects.create( + name='event object test check', + event_type='Non-Recurring', + start_date=(datetime.now()).strftime('%Y-%m-%d'), + start_time=(datetime.now()).strftime('%H:%M:%S'), + end_date=(datetime.now()).strftime('%Y-%m-%d'), + end_time=(datetime.now() + timedelta(hours=2) + ).strftime('%H:%M:%S'), + description='non recurring event', + created_by=self.user1, + ) + self.event_1.contacts.add(self.contact) + self.event_1.assigned_to.add(self.user2.id) + + self.comment = Comment.objects.create( + comment='test comment', event=self.event, + commented_by=self.user + ) + self.attachment = Attachments.objects.create( + attachment='image.png', event=self.event, + created_by=self.user + ) + + +class EventListTestCase(EventObjectTest, TestCase): + + def test_events_list(self): + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.get(reverse('events:events_list')) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.get(reverse('events:events_list')) + self.assertEqual(response.status_code, 200) + + data = { + 'event_name': 'event name', + 'created_by': self.user.id, + 'assigned_to': self.user1.id, + 'date_of_meeting': (datetime.now()).strftime('%Y-%m-%d'), + } + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.post(reverse('events:events_list'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.post(reverse('events:events_list'), data) + self.assertEqual(response.status_code, 200) + + +class EventCreateTestCase(EventObjectTest, TestCase): + + def test_events_create(self): + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.get(reverse('events:event_create')) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.get(reverse('events:event_create')) + self.assertEqual(response.status_code, 200) + + data = { + 'event_name': 'event name', + 'event_type': 'Non-Recurring', + 'contacts': self.contact.id, + 'teams': self.team_dev.id, + 'assigned_to': self.user1.id, + 'start_date': (datetime.now()).strftime('%Y-%m-%d'), + 'start_time': (datetime.now()).strftime('%H:%M:%S'), + 'end_date': (datetime.now()).strftime('%Y-%m-%d'), + 'end_time': (datetime.now() + timedelta(hours=2)).strftime('%H:%M:%S'), + } + + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + data = {**data, 'name': 'event name'} + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + + data = {**data, 'event_type': 'Recurring', 'recurring_days': [ + 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']} + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + + data = {**data, 'name': 'recurring event test', 'end_date': (datetime.now() + timedelta(days=7)).strftime('%Y-%m-%d'), + 'start_date': (datetime.now()).strftime('%Y-%m-%d'), } + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + + data = {**data, 'event_type': 'Recurring', 'recurring_days': []} + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + + data = {**data, 'name': 'recurring event test', 'start_date': (datetime.now() + timedelta(days=7)).strftime('%Y-%m-%d'), + 'end_date': (datetime.now()).strftime('%Y-%m-%d'), } + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + + data = {**data, 'event_type': 'Recurring', 'start_date': ''} + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + + data = {**data, 'event_type': 'Recurring', 'start_time': ''} + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + + data = {**data, 'event_type': 'Recurring', + 'start_time': (datetime.now() + timedelta(hours=2)).strftime('%H:%M:%S'), + 'end_time': (datetime.now()).strftime('%H:%M:%S'), + } + response = self.client.post(reverse('events:event_create'), data) + self.assertEqual(response.status_code, 200) + + +class EventDetailTestCase(EventObjectTest, TestCase): + + def test_events_detail(self): + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.get( + reverse('events:detail_view', args=(self.event.id,))) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.get( + reverse('events:detail_view', args=(self.event.id,))) + self.assertEqual(response.status_code, 200) + response = self.client.get( + reverse('events:detail_view', args=(self.event_1.id,))) + self.assertEqual(response.status_code, 200) + + self.client.login(email='joeEvent@example.com', + password='password') + response = self.client.get( + reverse('events:detail_view', args=(self.event.id,))) + self.assertEqual(response.status_code, 403) + + +class EventEditTestCase(EventObjectTest, TestCase): + + def test_events_edit(self): + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.get( + reverse('events:event_update', args=(self.event.id,))) + self.assertEqual(response.status_code, 200) + + self.client.login(email='joeEvent@example.com', + password='password') + response = self.client.get( + reverse('events:event_update', args=(self.event.id,))) + self.assertEqual(response.status_code, 403) + + data = { + 'event_name': 'event name', + 'event_type': 'Non-Recurring', + 'contacts': self.contact.id, + 'teams': self.team_dev.id, + 'assigned_to': self.user1.id, + 'start_date': (datetime.now()).strftime('%Y-%m-%d'), + 'start_time': (datetime.now()).strftime('%H:%M:%S'), + 'end_date': (datetime.now()).strftime('%Y-%m-%d'), + 'end_time': (datetime.now() + timedelta(hours=2)).strftime('%H:%M:%S'), + } + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:event_update', args=(self.event.id,)), data) + self.assertEqual(response.status_code, 200) + + data = {**data, 'name': 'event object test edit'} + response = self.client.post( + reverse('events:event_update', args=(self.event.id,)), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='joeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:event_update', args=(self.event.id,)), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnDoeEvent@example.com', + password='password') + new_data = { + 'name': 'event name edit object', + 'event_type': 'Recurring', + 'contacts': self.contact.id, + 'teams': self.team_dev.id, + 'assigned_to': self.user1.id, 'end_date': (datetime.now() + timedelta(days=7)).strftime('%Y-%m-%d'), + 'end_time': (datetime.now() + timedelta(hours=2)).strftime('%H:%M:%S'), + 'start_time': (datetime.now()).strftime('%H:%M:%S'), + 'start_date': (datetime.now()).strftime('%Y-%m-%d'), + 'recurring_days': [ + 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] + } + response = self.client.post( + reverse('events:event_update', args=(self.event.id,)), new_data) + self.assertEqual(response.status_code, 200) + + +class AddCommentTestCase(EventObjectTest, TestCase): + + def test_event_add_comment(self): + + self.client.login(email='johnDoeEvent@example.com', + password='password') + data = { + 'comment': '', + 'event_id': self.event.id, + } + response = self.client.post( + reverse('events:add_comment'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'comment': 'test comment event', + 'event_id': self.event.id, + } + response = self.client.post( + reverse('events:add_comment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:add_comment'), data) + self.assertEqual(response.status_code, 200) + + +class UpdateCommentTestCase(EventObjectTest, TestCase): + + def test_event_update_comment(self): + + self.client.login(email='johnDoeEvent@example.com', + password='password') + data = { + 'commentid': self.comment.id, + 'event_id': self.event.id, + 'comment': '' + } + response = self.client.post( + reverse('events:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'comment': 'test comment', + 'commentid': self.comment.id, + 'event_id': self.event.id, + } + response = self.client.post( + reverse('events:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + +class DeleteCommentTestCase(EventObjectTest, TestCase): + + def test_event_delete_comment(self): + + data = { + 'comment_id': self.comment.id, + } + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:remove_comment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:remove_comment'), data) + self.assertEqual(response.status_code, 200) + + +class AddAttachmentTestCase(EventObjectTest, TestCase): + + def test_event_add_attachment(self): + + data = { + 'attachment': SimpleUploadedFile('file_name.txt', bytes('file contents.', 'utf-8')), + 'event_id': self.event.id + } + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'attachment': '', + 'event_id': self.event.id + } + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + +class DeleteAttachmentTestCase(EventObjectTest, TestCase): + + def test_invoice_delete_attachment(self): + + data = { + 'attachment_id': self.attachment.id, + } + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:remove_attachment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.post( + reverse('events:remove_attachment'), data) + self.assertEqual(response.status_code, 200) + + +class EventDeleteTestCase(EventObjectTest, TestCase): + + def test_events_delete(self): + + self.client.login(email='janeDoeEvent@example.com', + password='password') + response = self.client.get( + reverse('events:event_delete', args=(self.event.id,))) + self.assertEqual(response.status_code, 403) + + self.client.login(email='johnDoeEvent@example.com', + password='password') + response = self.client.get( + reverse('events:event_delete', args=(self.event.id,))) + self.assertEqual(response.status_code, 302) -# Create your tests here. diff --git a/events/views.py b/events/views.py index 22e09e31..1c5785a6 100644 --- a/events/views.py +++ b/events/views.py @@ -26,12 +26,14 @@ def events_list(request): if request.user.role == 'ADMIN' or request.user.is_superuser: users = User.objects.all() - elif request.user.google.all(): - # users = User.objects.none() - users = User.objects.filter(Q(role='ADMIN') | Q(id=request.user.id)) + # elif request.user.google.all(): + # # users = User.objects.none() + # users = User.objects.filter(Q(role='ADMIN') | Q(id=request.user.id)) elif request.user.role == 'USER': # users = User.objects.filter(role='ADMIN') users = User.objects.filter(Q(role='ADMIN') | Q(id=request.user.id)) + else: + pass if request.method == 'GET': @@ -201,8 +203,7 @@ def event_update(request, event_id): end_date = form.cleaned_data.get('end_date') # recurring_days # recurring_days = request.POST.getlist('days') - - if form.cleaned_data.get('event_type') == 'Non-Recurring': + if form.data.get('event_type') == 'Non-Recurring': event = form.save(commit=False) event.date_of_meeting = start_date # event.created_by = request.user @@ -217,7 +218,7 @@ def event_update(request, event_id): send_email.delay( event.id, domain=request.get_host(), protocol=request.scheme) - if form.cleaned_data.get('event_type') == 'Recurring': + if form.data.get('event_type') == 'Recurring': event = form.save(commit=False) event.save() form.save_m2m() diff --git a/invoices/forms.py b/invoices/forms.py index 284cf514..f2848af3 100644 --- a/invoices/forms.py +++ b/invoices/forms.py @@ -25,10 +25,10 @@ class InvoiceForm(forms.ModelForm): 'name')) for team in Teams.objects.all().values('id', 'name')] self.fields['accounts'].queryset = Account.objects.filter( status='open') - elif request_user.google.all(): - self.fields['assigned_to'].queryset = User.objects.none() - self.fields['accounts'].queryset = Account.objects.filter(status='open').filter( - Q(created_by=request_user) | Q(assigned_to=request_user)) + # elif request_user.google.all(): + # self.fields['assigned_to'].queryset = User.objects.none() + # self.fields['accounts'].queryset = Account.objects.filter(status='open').filter( + # Q(created_by=request_user) | Q(assigned_to=request_user)) elif request_user.role == 'USER': self.fields['assigned_to'].queryset = User.objects.filter( role='ADMIN') diff --git a/invoices/models.py b/invoices/models.py index b2eb5c18..15f39c0c 100644 --- a/invoices/models.py +++ b/invoices/models.py @@ -65,13 +65,13 @@ class Invoice(models.Model): return self.invoice_number def formatted_total_amount(self): - return self.currency + ' ' + str(self.total_amount) + return self.currency + ' ' + str(self.total_amount) def formatted_rate(self): - return self.rate + ' ' + self.currency + return str(self.rate) + ' ' + self.currency def formatted_total_quantity(self): - return self.currency + ' ' + 'Hours' + return str(self.quantity) + ' ' + 'Hours' def is_draft(self): if self.status == 'Draft': @@ -159,13 +159,13 @@ class InvoiceHistory(models.Model): return self.invoice_number def formatted_total_amount(self): - return self.currency + ' ' + str(self.total_amount) + return self.currency + ' ' + str(self.total_amount) def formatted_rate(self): - return self.rate + ' ' + self.currency + return str(self.rate) + ' ' + self.currency def formatted_total_quantity(self): - return self.currency + ' ' + 'Hours' + return str(self.quantity) + ' ' + 'Hours' @property def created_on_arrow(self): diff --git a/invoices/tests.py b/invoices/tests.py index 7ce503c2..a1cf352c 100644 --- a/invoices/tests.py +++ b/invoices/tests.py @@ -1,3 +1,532 @@ -from django.test import TestCase +from datetime import datetime, timedelta -# Create your tests here. +from django.core.files.uploadedfile import SimpleUploadedFile +from django.test import TestCase +from django.urls import reverse + +from accounts.models import Account +from common.models import Address, Attachments, Comment, User +from invoices.models import Invoice, InvoiceHistory +from teams.models import Teams + + +class InvoiceCreateTest(object): + + def setUp(self): + self.user = User.objects.create( + first_name="johnInvoice", username='johnDoeInvoice', email='johnDoeInvoice@example.com', role='ADMIN') + self.user.set_password('password') + self.user.save() + + self.user1 = User.objects.create( + first_name="janeInvoice", + username='janeDoeInvoice', + email='janeDoeInvoice@example.com', + role="USER", + has_sales_access=True) + self.user1.set_password('password') + self.user1.save() + + self.user2 = User.objects.create( + first_name="joeInvoice", + username='joeInvoice', + email='joeInvoice@example.com', + role="USER", + has_sales_access=True) + self.user2.set_password('password') + self.user2.save() + + self.team_dev = Teams.objects.create(name='invoices teams') + self.team_dev.users.add(self.user2.id) + + self.account = Account.objects.create( + name="john invoice", email="johnDoeInvoice@example.com", phone="123456789", + billing_address_line="", billing_street="street name", + billing_city="city name", + billing_state="state", billing_postcode="1234", + billing_country="US", + website="www.example.como", created_by=self.user, status="open", + industry="SOFTWARE", description="Testing") + self.account.assigned_to.add(self.user1.id) + + self.from_address = Address.objects.create( + street="from street number", + city="from city", + state="from state", + postcode=12346, country="IN") + + self.to_address = Address.objects.create( + street="to street number", + city="to city", + state="to state", + postcode=12346, country="IN") + + self.invoice = Invoice.objects.create( + invoice_title='invoice title', + invoice_number='invoice number', + currency='USD', + email='invoiceTitle@email.com', + due_date=(datetime.now() + timedelta(days=2)).strftime('%Y-%m-%d'), + total_amount='1000', + created_by=self.user, + from_address=self.from_address, + to_address=self.to_address, + ) + self.invoice.assigned_to.add(self.user1.id) + + self.invoice_history = InvoiceHistory.objects.create( + invoice_title='invoice title', + invoice_number='invoice number', + currency='USD', + email='invoiceTitle@email.com', + due_date=(datetime.now() + timedelta(days=2)).strftime('%Y-%m-%d'), + total_amount='1000', + from_address=self.from_address, + to_address=self.to_address, + invoice=self.invoice + ) + + self.invoice_1 = Invoice.objects.create( + invoice_title='invoice title', + invoice_number='invoice_1 number', + currency='USD', + email='invoiceTitle@email.com', + due_date=(datetime.now() + timedelta(days=2)).strftime('%Y-%m-%d'), + total_amount='1000', + created_by=self.user1 + ) + self.invoice_1.assigned_to.add(self.user2.id) + self.invoice_1.assigned_to.add(self.user1.id) + self.invoice_1.accounts.add(self.account.id) + + self.comment = Comment.objects.create( + comment='test comment', invoice=self.invoice, + commented_by=self.user + ) + self.attachment = Attachments.objects.create( + attachment='image.png', invoice=self.invoice, + created_by=self.user + ) + + +class InvoiceListTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_list(self): + self.client.login(email='johnDoeInvoice@example.com', + password='password') + response = self.client.get(reverse('invoices:invoices_list')) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.get(reverse('invoices:invoices_list')) + self.assertEqual(response.status_code, 200) + + data = { + 'invoice_title_number': 'title', + 'created_by': self.user.id, + 'assigned_to': self.user1.id, + 'status': 'Draft', + 'total_amount': '1000', + } + self.client.login(email='johnDoeInvoice@example.com', + password='password') + response = self.client.post(reverse('invoices:invoices_list'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.post(reverse('invoices:invoices_list'), data) + self.assertEqual(response.status_code, 200) + + self.assertEqual(str(self.invoice), 'invoice number') + self.assertEqual(str(self.invoice.formatted_rate()), '0 USD') + self.assertEqual(str(self.invoice.formatted_total_quantity()), '0 Hours') + + self.assertEqual(str(self.invoice_history), 'invoice number') + self.assertEqual(str(self.invoice_history.formatted_rate()), '0 USD') + self.assertEqual(str(self.invoice_history.formatted_total_quantity()), '0 Hours') + self.assertEqual(str(self.invoice_history.formatted_total_amount()), 'USD 1000') + + self.assertTrue(self.invoice_history.created_on_arrow in ['just now' or 'seconds ago']) + + + +class InvoiceAddTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_create(self): + self.client.login(email='johnDoeInvoice@example.com', + password='password') + response = self.client.get(reverse('invoices:invoices_create')) + self.assertEqual(response.status_code, 200) + + data = { + 'invoice_title': 'invoice title create', + 'status': 'Draft', + 'invoice_number': 'invoice number', + 'currency': 'INR', + 'email': 'invoice@example.com', + 'due_data': (datetime.now() + timedelta(days=2)).strftime('%Y-%m-%d'), + 'total_amount': '1234', + 'teams': self.team_dev.id, + 'accounts': self.account.id, + 'assigned_to': self.user1.id, + } + + response = self.client.post(reverse('invoices:invoices_create'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'invoice_title': 'invoice title', + 'status': 'Draft', + 'invoice_number': 'INV123', + 'currency': 'INR', + 'email': 'invoice@example.com', + 'due_date': (datetime.now() + timedelta(days=2)).strftime('%Y-%m-%d'), + 'total_amount': '1234', + 'teams': self.team_dev.id, + 'accounts': self.account.id, + 'assigned_to': self.user1.id, + 'quantity': 0, + } + response = self.client.post(reverse('invoices:invoices_create'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'invoice_title': 'invoice title', + 'status': 'Draft', + 'invoice_number': 'INV1234', + 'currency': 'INR', + 'email': 'invoice@example.com', + 'due_date': (datetime.now() + timedelta(days=2)).strftime('%Y-%m-%d'), + 'total_amount': '1234', + 'teams': self.team_dev.id, + 'accounts': self.account.id, + 'assigned_to': self.user1.id, + 'quantity': 0, + 'from_account': self.account.id + } + response = self.client.post(reverse('invoices:invoices_create'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.get(reverse('invoices:invoices_list')) + self.assertEqual(response.status_code, 200) + + +class InvoiceDetailTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_detail(self): + self.client.login(email='johnDoeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_details', args=(self.invoice.id,))) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_details', args=(self.invoice.id,))) + self.assertEqual(response.status_code, 200) + response = self.client.get( + reverse('invoices:invoice_details', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 200) + + self.client.login(email='joeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_details', args=(self.invoice.id,))) + self.assertEqual(response.status_code, 403) + + +class InvoiceEditTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_edit(self): + self.client.login(email='johnDoeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_edit', args=(self.invoice.id,))) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_edit', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 200) + + self.client.login(email='joeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_edit', args=(self.invoice.id,))) + self.assertEqual(response.status_code, 403) + + data = { + 'invoice_title': 'invoice title', + 'status': 'Draft', + 'invoice_number': 'INV1234', + 'currency': 'INR', + 'email': 'invoice@example.com', + 'due_date': (datetime.now() + timedelta(days=2)).strftime('%Y-%m-%d'), + 'total_amount': '1234', + 'teams': self.team_dev.id, + 'accounts': self.account.id, + 'assigned_to': self.user1.id, + 'quantity': 0, + 'from_account': self.account.id, + 'from-address_line': '', + 'from-street': '', + 'from-city': '', + 'from-state': '', + 'from-postcode': '', + 'from-country': '', + 'to-address_line': '', + 'to-street': '', + 'to-city': '', + 'to-state': '', + 'to-postcode': '', + 'to-country': '', + } + + self.client.login(email='johnDoeInvoice@example.com', + password='password') + response = self.client.post( + reverse('invoices:invoice_edit', args=(self.invoice.id,)), data) + self.assertEqual(response.status_code, 200) + + data.pop('from_account') + self.client.login(email='johnDoeInvoice@example.com', + password='password') + response = self.client.post( + reverse('invoices:invoice_edit', args=(self.invoice.id,)), data) + self.assertEqual(response.status_code, 200) + + data.pop('invoice_number') + self.client.login(email='johnDoeInvoice@example.com', + password='password') + response = self.client.post( + reverse('invoices:invoice_edit', args=(self.invoice.id,)), data) + self.assertEqual(response.status_code, 200) + + +class InvoiceSendMailTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_send_mail(self): + + self.client.login(email='joeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_send_mail', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 403) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_send_mail', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 302) + + +class InvoiceChangeStatusPaidTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_change_status_to_paid(self): + + self.client.login(email='joeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_change_status_paid', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 403) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_change_status_paid', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 302) + + +class InvoiceChangeStatusCancelledTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_change_status_to_cancelled(self): + + self.client.login(email='joeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_change_status_cancelled', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 403) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_change_status_cancelled', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 302) + + +class InvoiceDownloadTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_download(self): + + self.client.login(email='joeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_download', args=(self.invoice.id,))) + self.assertEqual(response.status_code, 403) + + # self.client.login(email='johnDoeInvoice@example.com', + # password='password') + # response = self.client.get( + # reverse('invoices:invoice_download', args=(self.invoice_1.id,))) + # self.assertEqual(response.status_code, 200) + + +class AddCommentTestCase(InvoiceCreateTest, TestCase): + + def test_invoice_add_comment(self): + + self.client.login(email='johnDoeInvoice@example.com', password='password') + data = { + 'comment': '', + 'invoice_id': self.invoice.id, + } + response = self.client.post( + reverse('invoices:add_comment'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'comment': 'test comment invoice', + 'invoice_id': self.invoice.id, + } + response = self.client.post( + reverse('invoices:add_comment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:add_comment'), data) + self.assertEqual(response.status_code, 200) + + +class UpdateCommentTestCase(InvoiceCreateTest, TestCase): + + def test_invoice_update_comment(self): + + self.client.login(email='johnDoeInvoice@example.com', password='password') + data = { + 'commentid': self.comment.id, + 'invoice_id': self.invoice.id, + 'comment': '' + } + response = self.client.post( + reverse('invoices:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'comment': 'test comment', + 'commentid': self.comment.id, + 'invoice_id': self.invoice.id, + } + response = self.client.post( + reverse('invoices:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + +class DeleteCommentTestCase(InvoiceCreateTest, TestCase): + + def test_invoice_delete_comment(self): + + data = { + 'comment_id': self.comment.id, + } + self.client.login(email='janeDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:remove_comment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:remove_comment'), data) + self.assertEqual(response.status_code, 200) + + +class AddAttachmentTestCase(InvoiceCreateTest, TestCase): + + def test_invoice_add_attachment(self): + + data = { + 'attachment': SimpleUploadedFile('file_name.txt', bytes('file contents.', 'utf-8')), + 'invoice_id': self.invoice.id + } + self.client.login(email='johnDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'attachment': '', + 'invoice_id': self.invoice.id + } + self.client.login(email='johnDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + +class DeleteAttachmentTestCase(InvoiceCreateTest, TestCase): + + def test_invoice_delete_attachment(self): + + data = { + 'attachment_id': self.attachment.id, + } + self.client.login(email='janeDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:remove_attachment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnDoeInvoice@example.com', password='password') + response = self.client.post( + reverse('invoices:remove_attachment'), data) + self.assertEqual(response.status_code, 200) + + +class InvoiceDeleteTestCase(InvoiceCreateTest, TestCase): + + def test_invoices_delete(self): + + self.client.login(email='joeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_delete', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 403) + + self.client.login(email='janeDoeInvoice@example.com', + password='password') + response = self.client.get( + reverse('invoices:invoice_delete', args=(self.invoice_1.id,))) + self.assertEqual(response.status_code, 302) + + self.client.login(email='johnDoeInvoice@example.com', + password='password') + self.invoice.status = 'Sent' + self.invoice.is_email_sent = False + self.invoice.save() + self.assertEqual(self.invoice.is_sent(), True) + self.invoice.status = 'Sent' + self.invoice.is_email_sent = True + self.invoice.save() + self.assertEqual(self.invoice.is_resent(), True) + self.assertEqual(self.invoice.is_draft(), False) + self.invoice.status = 'Paid' + self.invoice.save() + self.assertEqual(self.invoice.is_paid_or_cancelled(), True) + response = self.client.get( + reverse('invoices:invoice_delete', args=(self.invoice.id,)) + '?view_account={}'.format(self.account.id,)) + self.assertEqual(response.status_code, 302) diff --git a/invoices/views.py b/invoices/views.py index bf51a0af..15afffa3 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -31,10 +31,10 @@ def invoices_list(request): if request.user.role == 'ADMIN' or request.user.is_superuser: users = User.objects.all() - elif request.user.google.all(): - # users = User.objects.none() - # users = User.objects.filter(id=request.user.id) - users = User.objects.filter(Q(role='ADMIN') | Q(id=request.user.id)) + # elif request.user.google.all(): + # # users = User.objects.none() + # # users = User.objects.filter(id=request.user.id) + # users = User.objects.filter(Q(role='ADMIN') | Q(id=request.user.id)) elif request.user.role == 'USER': users = User.objects.filter(Q(role='ADMIN') | Q(id=request.user.id)) status = ( diff --git a/requirements_with_no_dependencies.txt b/requirements_with_no_dependencies.txt new file mode 100644 index 00000000..534ace00 --- /dev/null +++ b/requirements_with_no_dependencies.txt @@ -0,0 +1,19 @@ +django==2.2.4 +celery==4.3.0 +django-simple-pagination==1.3 +django-compressor==2.3 +django-phonenumber-field==2.2.0 +django-storages==1.7.1 +psycopg2-binary==2.8.3 +arrow==0.14.5 +phonenumbers==8.10.4 +requests==2.22.0 +boto3==1.9.207 +lxml==4.4.1 +cssselect==1.1.0 +openpyxl==2.6.2 +xlrd==1.2.0 +pdfkit==0.6.1 +redis==3.3.7 +coverage==4.5.4 +raven==6.10.0 \ No newline at end of file diff --git a/tasks/forms.py b/tasks/forms.py index dfaa43af..b760a008 100644 --- a/tasks/forms.py +++ b/tasks/forms.py @@ -52,15 +52,9 @@ class TaskForm(forms.ModelForm): def clean_title(self): title = self.cleaned_data.get('title') - if not self.obj_instance: - if Task.objects.filter(title=title).exists(): - raise forms.ValidationError( - 'Task with this Title already exists') - return title - if Task.objects.filter(title=title).exclude(id=self.obj_instance.id).exists(): + if Task.objects.filter(title=title).exclude(id=self.instance.id).exists(): raise forms.ValidationError( - 'Task with this Title already exists') - return title + 'Task with this Title already exists.') return title class Meta: diff --git a/tasks/tests.py b/tasks/tests.py index 2548682c..963a2893 100644 --- a/tasks/tests.py +++ b/tasks/tests.py @@ -3,7 +3,7 @@ from django.test import TestCase from django.urls import reverse from accounts.models import Account -from common.models import User +from common.models import Attachments, Comment, User from tasks.models import Task from teams.models import Teams @@ -34,15 +34,6 @@ class TaskCreateTest(object): self.user2.set_password('password') self.user2.save() - # self.user3 = User.objects.create( - # first_name="joeTask", - # username='joeDoeTask', - # email='joeDoeTask@example.com', - # role="USER", - # has_sales_access=True) - # self.user3.set_password('password') - # self.user3.save() - self.team_dev = Teams.objects.create(name='task teams') self.team_dev.users.add(self.user2.id) @@ -75,6 +66,15 @@ class TaskCreateTest(object): self.task_2.created_by = self.user1 self.task_2.save() + self.comment = Comment.objects.create( + comment='test comment', task=self.task, + commented_by=self.user + ) + self.attachment = Attachments.objects.create( + attachment='image.png', task=self.task, + created_by=self.user + ) + class TaskListTestCase(TaskCreateTest, TestCase): @@ -156,6 +156,8 @@ class TaskDetailTestCase(TaskCreateTest, TestCase): reverse('tasks:task_detail', args=(self.task.id,))) self.assertEqual(response.status_code, 403) + self.assertEqual(str(self.task), 'first task') + class TaskEditTestCase(TaskCreateTest, TestCase): @@ -195,6 +197,18 @@ class TaskEditTestCase(TaskCreateTest, TestCase): reverse('tasks:task_edit', args=(self.task.id,)), data) self.assertEqual(response.status_code, 200) + data = { + 'title': 'second task', + 'status': 'New', + 'priority': 'High', + 'teams': self.team_dev.id, + 'from_account': self.account.id, + } + + response = self.client.post( + reverse('tasks:task_edit', args=(self.task.id,)), data) + self.assertEqual(response.status_code, 200) + class TaskDeleteTestCase(TaskCreateTest, TestCase): @@ -215,28 +229,121 @@ class TaskDeleteTestCase(TaskCreateTest, TestCase): -# class AddCommentTestCase(TaskCreateTest, TestCase): +class AddCommentTestCase(TaskCreateTest, TestCase): -# def test_task_delete(self): + def test_task_add_comment(self): -# self.client.login(email='johnTask@example.com', password='password') -# data = { -# 'comment': '', -# 'task_id': self.task.id, -# } -# response = self.client.post( -# reverse('tasks:add_comment'), data) -# self.assertEqual(response.status_code, 200) + self.client.login(email='johnTask@example.com', password='password') + data = { + 'comment': '', + 'task_id': self.task.id, + } + response = self.client.post( + reverse('tasks:add_comment'), data) + self.assertEqual(response.status_code, 200) -# data = { -# 'comment': 'test comment', -# 'task_id': self.task.id, -# } -# response = self.client.post( -# reverse('tasks:add_comment'), data) -# self.assertEqual(response.status_code, 200) + data = { + 'comment': 'test comment', + 'task_id': self.task.id, + } + response = self.client.post( + reverse('tasks:add_comment'), data) + self.assertEqual(response.status_code, 200) -# self.client.login(email='janeDoeTask@example.com', password='password') -# response = self.client.post( -# reverse('tasks:add_comment')) -# self.assertEqual(response.status_code, 200) + self.client.login(email='janeDoeTask@example.com', password='password') + response = self.client.post( + reverse('tasks:add_comment'), data) + self.assertEqual(response.status_code, 200) + + +class UpdateCommentTestCase(TaskCreateTest, TestCase): + + def test_task_update_comment(self): + + self.client.login(email='johnTask@example.com', password='password') + data = { + 'commentid': self.comment.id, + 'task_id': self.task.id, + 'comment':'' + } + response = self.client.post( + reverse('tasks:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'comment': 'test comment', + 'commentid': self.comment.id, + 'task_id': self.task.id, + } + response = self.client.post( + reverse('tasks:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeTask@example.com', password='password') + response = self.client.post( + reverse('tasks:edit_comment'), data) + self.assertEqual(response.status_code, 200) + + +class DeleteCommentTestCase(TaskCreateTest, TestCase): + + def test_task_delete_comment(self): + + data = { + 'comment_id': self.comment.id, + } + self.client.login(email='janeDoeTask@example.com', password='password') + response = self.client.post( + reverse('tasks:remove_comment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnTask@example.com', password='password') + response = self.client.post( + reverse('tasks:remove_comment'), data) + self.assertEqual(response.status_code, 200) + + +class AddAttachmentTestCase(TaskCreateTest, TestCase): + + def test_task_add_attachment(self): + + data = { + 'attachment': SimpleUploadedFile('file_name.txt', bytes('file contents.', 'utf-8')), + 'task_id':self.task.id + } + self.client.login(email='johnTask@example.com', password='password') + response = self.client.post( + reverse('tasks:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnTask@example.com', password='password') + response = self.client.post( + reverse('tasks:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'attachment': '', + 'task_id':self.task.id + } + self.client.login(email='janeDoeTask@example.com', password='password') + response = self.client.post( + reverse('tasks:add_attachment'), data) + self.assertEqual(response.status_code, 200) + + +class DeleteAttachmentTestCase(TaskCreateTest, TestCase): + + def test_task_delete_attachment(self): + + data = { + 'attachment_id': self.attachment.id, + } + self.client.login(email='janeDoeTask@example.com', password='password') + response = self.client.post( + reverse('tasks:remove_attachment'), data) + self.assertEqual(response.status_code, 200) + + self.client.login(email='johnTask@example.com', password='password') + response = self.client.post( + reverse('tasks:remove_attachment'), data) + self.assertEqual(response.status_code, 200) diff --git a/teams/tests.py b/teams/tests.py index 7ce503c2..2c39036e 100644 --- a/teams/tests.py +++ b/teams/tests.py @@ -1,3 +1,169 @@ from django.test import TestCase +from django.urls import reverse -# Create your tests here. +from common.models import User +from teams.models import Teams + + +class TeamObjectTest(object): + + def setUp(self): + self.user = User.objects.create( + first_name="johnTeam", username='johnDoeTeam', email='johnDoeTeam@example.com', role='ADMIN') + self.user.set_password('password') + self.user.save() + + self.user1 = User.objects.create( + first_name="janeTeam", + username='janeDoeTeam', + email='janeDoeTeam@example.com', + role="USER", + has_sales_access=True) + self.user1.set_password('password') + self.user1.save() + + self.user2 = User.objects.create( + first_name="joeTeam", + username='joeTeam', + email='joeTeam@example.com', + role="USER", + has_sales_access=True) + self.user2.set_password('password') + self.user2.save() + + self.team_dev = Teams.objects.create(name='team 1') + self.team_dev.users.add(self.user1.id) + + +class TeamListTestCase(TeamObjectTest, TestCase): + + def test_teams_list(self): + self.client.login(email='johnDoeTeam@example.com', + password='password') + response = self.client.get(reverse('teams:teams_list')) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeTeam@example.com', + password='password') + response = self.client.get(reverse('teams:teams_list')) + self.assertEqual(response.status_code, 403) + + data = { + 'team_name': 'team 1', + 'created_by': self.user.id, + 'assigned_to': self.user1.id, + } + + self.client.login(email='johnDoeTeam@example.com', + password='password') + response = self.client.post(reverse('teams:teams_list'), data) + self.assertEqual(response.status_code, 200) + + +class TeamCreateCase(TeamObjectTest, TestCase): + + def test_team_create(self): + self.client.login(email='johnDoeTeam@example.com', + password='password') + response = self.client.get(reverse('teams:team_create')) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeTeam@example.com', + password='password') + response = self.client.get(reverse('teams:team_create')) + self.assertEqual(response.status_code, 403) + + data = { + 'name': 'team create', + 'users': self.user1.id, + 'description': 'team description' + } + + self.client.login(email='johnDoeTeam@example.com', + password='password') + response = self.client.post(reverse('teams:team_create'), data) + self.assertEqual(response.status_code, 200) + + data = { + 'name': '', + 'users': self.user1.id, + 'description': 'team description' + } + + response = self.client.post(reverse('teams:team_create'), data) + self.assertEqual(response.status_code, 200) + + +class TeamDetailCase(TeamObjectTest, TestCase): + + def test_team_detail(self): + self.client.login(email='johnDoeTeam@example.com', + password='password') + response = self.client.get( + reverse('teams:team_detail', args=(self.team_dev.id,))) + self.assertEqual(response.status_code, 200) + self.assertEqual(str(self.team_dev), 'team 1') + + self.client.login(email='janeDoeTeam@example.com', + password='password') + response = self.client.get( + reverse('teams:team_detail', args=(self.team_dev.id,))) + self.assertEqual(response.status_code, 403) + + +class TeamEditCase(TeamObjectTest, TestCase): + + def test_team_edit(self): + self.client.login(email='johnDoeTeam@example.com', + password='password') + response = self.client.get( + reverse('teams:team_edit', args=(self.team_dev.id,))) + self.assertEqual(response.status_code, 200) + + self.client.login(email='janeDoeTeam@example.com', + password='password') + response = self.client.get( + reverse('teams:team_edit', args=(self.team_dev.id,))) + self.assertEqual(response.status_code, 403) + + data = { + 'name': 'team 1 edit', + 'users': '', + } + + self.client.login(email='johnDoeTeam@example.com', + password='password') + response = self.client.post( + reverse('teams:team_edit', args=(self.team_dev.id,)), data) + self.assertEqual(response.status_code, 200) + data = { + 'name': 'team 1 edit', + 'users': self.user1.id, + } + response = self.client.post( + reverse('teams:team_edit', args=(self.team_dev.id,)), data) + self.assertEqual(response.status_code, 200) + + data = { + 'name': 'team 1 Edit', + 'users': self.user1.id, + } + response = self.client.post( + reverse('teams:team_create'), data) + self.assertEqual(response.status_code, 200) + + +class TeamDeleteCase(TeamObjectTest, TestCase): + + def test_team_delete(self): + self.client.login(email='janeDoeTeam@example.com', + password='password') + response = self.client.get( + reverse('teams:team_delete', args=(self.team_dev.id,))) + self.assertEqual(response.status_code, 403) + + self.client.login(email='johnDoeTeam@example.com', + password='password') + response = self.client.get( + reverse('teams:team_delete', args=(self.team_dev.id,))) + self.assertEqual(response.status_code, 302)