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
This commit is contained in:
parent
3bc30d3c95
commit
df4fa9758e
12 changed files with 1301 additions and 70 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
419
events/tests.py
419
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.
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 = (
|
||||
|
|
|
|||
19
requirements_with_no_dependencies.txt
Normal file
19
requirements_with_no_dependencies.txt
Normal file
|
|
@ -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
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
169
tasks/tests.py
169
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)
|
||||
|
|
|
|||
168
teams/tests.py
168
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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue