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:
nikhila05 2019-08-23 10:48:41 +05:30 committed by GitHub
parent 3bc30d3c95
commit df4fa9758e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 1301 additions and 70 deletions

View file

@ -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

View file

@ -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')

View file

@ -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.

View file

@ -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()

View file

@ -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')

View file

@ -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):

View file

@ -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)

View file

@ -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 = (

View 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

View file

@ -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:

View file

@ -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)

View file

@ -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)