Browse Source

Make service unique for speed, type and price. And test it

devel
Dmitry Novikov 8 years ago
parent
commit
6b28eea39b
  1. 3
      tariff_app/locale/ru/LC_MESSAGES/django.po
  2. 1
      tariff_app/models.py
  3. 2
      tariff_app/templates/tariff_app/editTarif.html
  4. 64
      tariff_app/tests.py

3
tariff_app/locale/ru/LC_MESSAGES/django.po

@ -215,3 +215,6 @@ msgstr "Вы уверены что хотите удалить тариф?"
msgid "IS Daily service"
msgstr "Услуга на сутки"
msgid "Service with this Speed In, Speed Out, Price and Script already exists."
msgstr "Услуга с такой скоростью, ценой и логикой уже есть"

1
tariff_app/models.py

@ -54,6 +54,7 @@ class Tariff(models.Model):
ordering = ('title',)
verbose_name = _('Service')
verbose_name_plural = _('Services')
unique_together = ('speedIn', 'speedOut', 'amount', 'calc_type')
class PeriodicPay(models.Model):

2
tariff_app/templates/tariff_app/editTarif.html

@ -24,6 +24,8 @@
<div class="panel-body">
<form action="{% url 'tarifs:edit' tarif_id %}" method="post">{% csrf_token %}
{% bootstrap_form_errors form %}
{% bootstrap_icon 'tag' as ic %}
{% bootstrap_field form.title addon_before=ic %}

64
tariff_app/tests.py

@ -0,0 +1,64 @@
from abc import ABCMeta
from django.conf import settings
from django.shortcuts import resolve_url
from django.test import TestCase
from accounts_app.models import UserProfile
from group_app.models import Group
from tariff_app.models import Tariff
class MyBaseTestCase(metaclass=ABCMeta):
def _client_get_check_login(self, url):
"""
Checks if url is protected from unauthorized access
:param url:
:return: authorized response
"""
r = self.client.get(url)
self.assertRedirects(r, "%s?next=%s" % (getattr(settings, 'LOGIN_URL'), url))
self.client.force_login(self.adminuser)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
return r
def setUp(self):
grp = Group.objects.create(title='Grp1')
my_admin = UserProfile.objects.create_superuser('+79781234567', 'local_superuser', 'ps')
self.adminuser = my_admin
self.group = grp
class ServiceTestCase(MyBaseTestCase, TestCase):
def setUp(self):
super(ServiceTestCase, self).setUp()
trf = Tariff.objects.create(
title='test',
descr='Some descr',
speedIn=10.0,
speedOut=2.0,
amount=1.0,
calc_type='Df'
)
trf.groups.add(self.group.pk)
trf.save()
self.tariff = trf
def test_add_same_services(self):
print('test_add_same_services')
url = resolve_url('tariff_app:add')
self._client_get_check_login(url)
self.client.post(url, data={
'title': 'same srv',
'descr': 'descriptive',
'speedIn': 10.0,
'speedOut': 2.0,
'amount': 1.0,
'calc_type': 'Df'
})
try:
Tariff.objects.get(title='same srv')
raise self.failureException('Services cannot be saved because it duplicates other service')
except Tariff.DoesNotExist:
pass
Loading…
Cancel
Save