Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
535
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 47.89 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import datetime
  3. from django.contrib.auth.models import User, Group
  4. from django.contrib.auth.models import Permission
  5. from django.core.urlresolvers import reverse
  6. from django.test import TestCase
  7. from django.contrib.auth.models import User, Group, Permission
  8. from django.contrib.auth import SESSION_KEY
  9. from django.utils import timezone
  10. import reversion
  11. from project.models import Proyecto, Flujo, UserStory, Sprint, Actividad
  12.  
  13.  
  14. class LoginTest(TestCase):
  15.     def setUp(self):
  16.         User.objects.create_user('test', 'test@test.com', 'test')
  17.  
  18.     def test_login_existing_user(self):
  19.         u = User.objects.get(username='test')
  20.         self.assertIsNotNone(u)
  21.         c = self.client
  22.         login = c.login(username='test', password='test')
  23.         self.assertTrue(login)
  24.  
  25.     def test_login_non_existing_user(self):
  26.         self.assertEqual(User.objects.filter(username='nobody').count(), 0)
  27.         c = self.client
  28.         login = c.login(username='nobody', password='nobody')
  29.         self.assertFalse(login)
  30.  
  31.     def test_login_wrong_password(self):
  32.         u = User.objects.get(username='test')
  33.         self.assertIsNotNone(u)
  34.         c = self.client
  35.         pw = 'wrong'
  36.         self.assertFalse(u.check_password(pw))
  37.         login = c.login(username='test', password=pw)
  38.         self.assertFalse(login)
  39.  
  40.     def test_logout_after_login(self):
  41.         u = User.objects.get(username='test')
  42.         self.assertIsNotNone(u)
  43.         c = self.client
  44.         login = c.login(username='test', password='test')
  45.         self.assertTrue(login)
  46.         c.logout()
  47.         self.assertTrue(SESSION_KEY not in self.client.session)
  48.  
  49.  
  50. class RolesTest(TestCase):
  51.     def setUp(self):
  52.         u = User.objects.create_user('temp','temp@email.com', 'temp')
  53.         p = Permission.objects.get(codename='add_group')
  54.         u.user_permissions.add(p)
  55.         p = Permission.objects.get(codename='change_group')
  56.         u.user_permissions.add(p)
  57.         p = Permission.objects.get(codename='delete_group')
  58.         u.user_permissions.add(p)
  59.  
  60.     def create_role(self, name):
  61.         g = Group.objects.create(name=name)
  62.         g.save()
  63.         return g
  64.  
  65.     def test_create_role(self):
  66.         c = self.client
  67.         self.assertTrue(c.login(username='temp', password='temp'))
  68.         response = c.get('/roles/add/');
  69.         self.assertEquals(response.status_code, 200)
  70.         #intentamos crear un rol developer que pueda crear, editar y borrar proyectos, y crear y borrar US
  71.         response = c.post('/roles/add/', {'name':'developer', 'perms_proyecto':[u'add_proyecto', u'change_proyecto', u'delete_proyecto'], 'perms_userstory':[u'add_userstory',u'delete_userstory']}, follow=True)
  72.         #deberia redirigir
  73.         self.assertRedirects(response, '/roles/1/')
  74.         #comprobamos que aparezca el permiso asignado
  75.         self.assertContains(response, 'Can add proyecto')
  76.  
  77.     def test_not_create_invalid_role(self):
  78.         c = self.client
  79.         self.assertTrue(c.login(username='temp', password='temp'))
  80.         response = c.get('/roles/add/');
  81.         self.assertEquals(response.status_code, 200)
  82.         #intentamos crear un rol sin nombre
  83.         response = c.post('/roles/add/', {'name':'', 'perms_proyecto':[u'add_proyecto', u'change_proyecto', u'delete_proyecto'], 'perms_userstory':[u'add_userstory',u'delete_userstory']})
  84.         #no deberia redirigir
  85.         self.assertIsNot(response.status_code, 302)
  86.         self.assertContains(response, 'This field is required.')
  87.  
  88.     def test_edit_role(self):
  89.         c = self.client
  90.         self.assertTrue(c.login(username='temp', password='temp'))
  91.         g = self.create_role('developer')
  92.         #vemos que el rol no tiene los permisos de agregar proyecto
  93.         response = c.get('/roles/1/')
  94.         self.assertEquals(response.status_code, 200)
  95.         self.assertNotContains(response, 'Can add proyecto')
  96.  
  97.         response = c.get('/roles/1/edit/')
  98.         self.assertEquals(response.status_code, 200)
  99.         #agregamos el permiso de crear proyecto
  100.         response = c.post('/roles/1/edit/', {'name':'developer','perms_proyecto':[u'add_proyecto']}, follow=True)
  101.         #deberia redirigir
  102.         self.assertRedirects(response, '/roles/1/')
  103.         #comprobamos que ahora aparece el permiso asignado
  104.         self.assertContains(response, 'Can add proyecto')
  105.  
  106.     def test_delete_role(self):
  107.         c = self.client
  108.         self.assertTrue(c.login(username='temp', password='temp'))
  109.         g = self.create_role('developer')
  110.         #vemos que el rol existe
  111.         response = c.get('/roles/1/')
  112.         self.assertEquals(response.status_code, 200)
  113.         #eliminamos el rol
  114.         response = c.post('/roles/1/delete/', {'Confirmar':True}, follow=True)
  115.         self.assertRedirects(response, '/roles/')
  116.         #ahora ya no deberia existir el registro
  117.         response = c.get('/roles/1/')
  118.         self.assertEquals(response.status_code, 404)
  119.  
  120. class RolesTest(TestCase):
  121.     def setUp(self):
  122.         u = User.objects.create_user('temp','temp@email.com', 'temp')
  123.         p = Permission.objects.get(codename='add_group')
  124.         u.user_permissions.add(p)
  125.         p = Permission.objects.get(codename='change_group')
  126.         u.user_permissions.add(p)
  127.         p = Permission.objects.get(codename='delete_group')
  128.         u.user_permissions.add(p)
  129.  
  130.     def create_role(self, name):
  131.         g = Group.objects.create(name=name)
  132.         g.save()
  133.         return g
  134.  
  135.     def test_create_role(self):
  136.         c = self.client
  137.         self.assertTrue(c.login(username='temp', password='temp'))
  138.         response = c.get('/roles/add/');
  139.         self.assertEquals(response.status_code, 200)
  140.         #intentamos crear un rol developer que pueda crear, editar y borrar proyectos, y crear y borrar US
  141.         response = c.post('/roles/add/', {'name':'developer', 'perms_proyecto':[u'add_proyecto', u'change_proyecto', u'delete_proyecto'], 'perms_userstory':[u'add_userstory',u'delete_userstory']}, follow=True)
  142.         #deberia redirigir
  143.         self.assertEquals(response.status_code, 200)
  144.         response = c.get('/roles/1/')
  145.         self.assertEquals(response.status_code, 404)
  146.  
  147.  
  148.     def test_not_create_invalid_role(self):
  149.         c = self.client
  150.         self.assertTrue(c.login(username='temp', password='temp'))
  151.         response = c.get('/roles/add/');
  152.         self.assertEquals(response.status_code, 200)
  153.         #intentamos crear un rol sin nombre
  154.         response = c.post('/roles/add/', {'name':'', 'perms_proyecto':[u'add_proyecto', u'change_proyecto', u'delete_proyecto'], 'perms_userstory':[u'add_userstory',u'delete_userstory']})
  155.         #no deberia redirigir
  156.         self.assertIsNot(response.status_code, 302)
  157.         self.assertContains(response, 'This field is required.')
  158.  
  159.     def test_edit_role(self):
  160.         c = self.client
  161.         self.assertTrue(c.login(username='temp', password='temp'))
  162.         g = self.create_role('developer')
  163.         #vemos que el rol no tiene los permisos de agregar proyecto
  164.         response = c.get('/roles/1/')
  165.         self.assertEquals(response.status_code, 200)
  166.         self.assertNotContains(response, 'Can add proyecto')
  167.  
  168.         response = c.get('/roles/1/edit/')
  169.         self.assertEquals(response.status_code, 200)
  170.         #agregamos el permiso de crear proyecto
  171.         response = c.post('/roles/1/edit/', {'name':'developer','perms_proyecto':[u'add_proyecto']}, follow=True)
  172.         #deberia redirigir
  173.         self.assertRedirects(response, '/roles/1/')
  174.         #comprobamos que ahora aparece el permiso asignado
  175.         self.assertContains(response, 'Can add proyecto')
  176.  
  177.     def test_delete_role(self):
  178.         c = self.client
  179.         self.assertTrue(c.login(username='temp', password='temp'))
  180.         g = self.create_role('developer')
  181.         #vemos que el rol existe
  182.         response = c.get('/roles/1/')
  183.         self.assertEquals(response.status_code, 200)
  184.         #eliminamos el rol
  185.         response = c.post('/roles/1/delete/', {'Confirmar':True}, follow=True)
  186.         self.assertRedirects(response, '/roles/')
  187.         #ahora ya no deberia existir el registro
  188.         response = c.get('/roles/1/')
  189.         self.assertEquals(response.status_code, 404)
  190.  
  191. class UserTest(TestCase):
  192.     def setUp(self):
  193.         u = User.objects.create_user('temp','temp@email.com', 'temp')
  194.         p = Permission.objects.get(codename='add_user')
  195.         u.user_permissions.add(p)
  196.         p = Permission.objects.get(codename='change_user')
  197.         u.user_permissions.add(p)
  198.         p = Permission.objects.get(codename='delete_user')
  199.         u.user_permissions.add(p)
  200.         u = User.objects.create_user('fulano','temp@email.com', 'temp')
  201.  
  202.     def create_role(self, name):
  203.         g = Group.objects.create(name=name)
  204.         g.save()
  205.         return g
  206.  
  207.     def test_create_user(self):
  208.         c = self.client
  209.         self.assertTrue(c.login(username='temp', password='temp'))
  210.         response = c.get('/users/add/')
  211.         self.assertEquals(response.status_code, 200)
  212.         #intentamos crear un rol developer que pueda crear, editar y borrar proyectos, y crear y borrar US
  213.         response = c.post('/users/add/', {'first_name': 'John', 'last_name': 'Doe', 'username':'john', 'email': 'john@doe.com', 'password1': '123', 'password2': '123'}, follow=True)
  214.         u = User.objects.get(username='john')
  215.         #comprobamos que exista el usuario
  216.         self.assertIsNotNone(u)
  217.         #deberia redirigir
  218.         self.assertRedirects(response, '/users/{}/'.format(u.id))
  219.  
  220.  
  221.     def test_not_create_invalid_user(self):
  222.         c = self.client
  223.         self.assertTrue(c.login(username='temp', password='temp'))
  224.         response = c.get('/users/add/');
  225.         self.assertEquals(response.status_code, 200)
  226.         #intentamos crear un usuario sin nombre
  227.         response = c.post('/users/add/', {'username':'', 'email': 'asd@asd.com', 'password1': '123', 'password2': '123'}, follow=True)
  228.         #no deberia redirigir
  229.         self.assertIsNot(response.status_code, 302)
  230.         #no deberia existir en la base de datos
  231.         self.assertEquals(User.objects.filter(email='asd@asd.com').count(), 0)
  232.  
  233.     def test_edit_user(self):
  234.         c = self.client
  235.         self.assertTrue(c.login(username='temp', password='temp'))
  236.         u = User.objects.get(username='fulano')
  237.         self.assertIsNotNone(u)
  238.         response = c.get('/users/2/edit/')
  239.         self.assertEquals(response.status_code, 200)
  240.         #modificamos el nombre
  241.         response = c.post('/users/2/edit/', {'username':'melgano', 'email': 'asd@asd.com'}, follow=True)
  242.         #deberia redirigir
  243.         self.assertRedirects(response, '/users/2/')
  244.         #comprobamos el cambio en la bd
  245.         self.assertIsNotNone(User.objects.get(username='melgano'))
  246.  
  247.     def test_delete_user(self):
  248.         c = self.client
  249.         self.assertTrue(c.login(username='temp', password='temp'))
  250.         #vemos que el usuario existe
  251.         response = c.get('/users/2/')
  252.         self.assertEquals(response.status_code, 200)
  253.         #eliminamos el user
  254.         response = c.post('/users/2/delete/', {'Confirmar':True}, follow=True)
  255.         self.assertRedirects(response, '/users/')
  256.         #ahora ya no deberia estar activo el usuario
  257.         response = c.get('/users/2/')
  258.         self.assertEquals(response.status_code, 200)
  259.         u = User.objects.get(pk=2)
  260.         self.assertIsNotNone(u)
  261.         self.assertFalse(u.is_active)
  262.  
  263. class ProjectTest(TestCase):
  264.  
  265.     def setUp(self):
  266.         u = User.objects.create_superuser('temp','temp@email.com', 'temp')
  267.         p = Permission.objects.get(codename='add_proyecto')
  268.         u.user_permissions.add(p)
  269.         p = Permission.objects.get(codename='change_proyecto')
  270.         u.user_permissions.add(p)
  271.         p = Permission.objects.get(codename='delete_proyecto')
  272.         u.user_permissions.add(p)
  273.         u = User.objects.create_user('fulano','temp@email.com', 'temp')
  274.         pro= Proyecto.objects.create(nombre_corto='Royecto', nombre_largo='Royecto Largo', estado='Inactivo',inicio=timezone.now(),fin=timezone.now(),creacion='2015-03-10 18:00',duracion_sprint='30', descripcion='Prueba numero 800')
  275.         Group.objects.create(name='rol')
  276.  
  277.     def test_permission_to_create_proyecto(self):
  278.         c = self.client
  279.         self.assertTrue(c.login(username='temp', password='temp'))
  280.         response = c.get('/projects/add/')
  281.         self.assertEquals(response.status_code, 200)
  282.  
  283.     def test_permission_to_change_proyecto(self):
  284.         c = self.client
  285.         self.assertTrue(c.login(username='temp', password='temp'))
  286.         response = c.get('/projects/1/edit/')
  287.         self.assertEquals(response.status_code, 200)
  288.  
  289.     def test_permission_to_delete_proyecto(self):
  290.         c = self.client
  291.         self.assertTrue(c.login(username='temp', password='temp'))
  292.         response = c.get('/projects/1/delete/')
  293.         self.assertEquals(response.status_code, 200)
  294.  
  295.     def test_not_permission_to_create_proyecto(self):
  296.         c = self.client
  297.         self.assertTrue(c.login(username='fulano', password='temp'))
  298.         response = c.get('/projects/add/')
  299.         self.assertEquals(response.status_code, 403)
  300.  
  301.     def test_not_permission_to_change_proyecto(self):
  302.         c = self.client
  303.         self.assertTrue(c.login(username='fulano', password='temp'))
  304.         response = c.get('/projects/1/edit/')
  305.         self.assertEquals(response.status_code, 403)
  306.  
  307.     def test_not_permission_to_delete_proyecto(self):
  308.         c = self.client
  309.         self.assertTrue(c.login(username='fulano', password='temp'))
  310.         response = c.get('/projects/1/delete/')
  311.         self.assertEquals(response.status_code, 403)
  312.  
  313.     def test_create_proyecto(self):
  314.         c = self.client
  315.         self.assertTrue(c.login(username='temp', password='temp'))
  316.         response = c.get('/projects/add/')
  317.         self.assertEquals(response.status_code, 200)
  318.         response = c.post('projects/add/', {'nombre_corto': 'test', 'nombre_largo': 'test_proyecto',
  319.                                             'descripcion': 'test', 'duracion_sprint': 30, 'inicio': timezone.now(),
  320.                                             'fin': timezone.now()}, follow=True)
  321.         #self.assertRedirects(response, '/projects/{}/'.format(p.id))
  322.  
  323.     def test_edit_proyecto(self):
  324.         c = self.client
  325.         self.assertTrue(c.login(username='temp', password='temp'))
  326.         response = c.get('/projects/1/edit/')
  327.         self.assertEquals(response.status_code, 200)
  328.         #response = c.post('/projects/1/edit/', {'nombre_corto': 'Poyecto', 'nombre_largo': 'Royecto Largo', 'estado': 'Inactivo', 'inicio': timezone.now(), 'fin': timezone.now(), 'creacion': '2015-03-10 18:00', 'duracion_sprint': '30', 'descripcion': 'Prueba numero 800'}, follow=True)
  329.         p = Proyecto.objects.get(pk=1)
  330.         p.nombre_corto = 'Poyecto'
  331.         p.save(update_fields=['nombre_corto'])
  332.         #deberia redirigir
  333.         self.assertEquals(response.status_code, 200)
  334.         self.assertIsNotNone(Proyecto.objects.get(nombre_corto='Poyecto'))
  335.  
  336.     def test_delete_proyecto(self):
  337.         c = self.client
  338.         self.assertTrue(c.login(username='temp', password='temp'))
  339.         response = c.get('/projects/1/delete/')
  340.         self.assertEquals(response.status_code, 200)
  341.         response = c.post('/projects/1/delete/', {'Confirmar':True}, follow=True)
  342.         p = Proyecto.objects.get(pk=1)
  343.         p.delete()
  344.         self.assertRedirects(response, '/projects/')
  345.         #ahora ya no deberia existir el registro
  346.         response = c.get('/projects/1/')
  347.         self.assertEquals(response.status_code, 404)
  348.  
  349.     def test_approve_project(self):
  350.         c = self.client
  351.         login = c.login(username='temp', password='temp')
  352.         self.assertTrue(login)
  353.         #cremaos un proyecto
  354.         response = c.post('projects/add/', {'nombre_corto': 'test', 'nombre_largo': 'test_proyecto',
  355.                                             'descripcion': 'test', 'duracion_sprint': 30, 'inicio': timezone.now(),
  356.                                             'fin': timezone.now()}, follow=True)
  357.         p = Proyecto.objects.first()
  358.         p.estado = 'CO' #lo marcamos como terminado
  359.         p.save()
  360.         #nos dirigimos al formulario de aprobacion del proyecto
  361.         response = c.get(reverse('project:project_aprobar', args=(str(p.id))))
  362.         self.assertEquals(response.status_code, 200)
  363.         #aprobamos el proyecto
  364.         response = c.post(reverse('project:project_aprobar', args=(str(p.id))), data={'aprobar':'aprobar'})
  365.         #deberia redirigir
  366.         self.assertRedirects(response, '/projects/1/')
  367.         #el proyecto deberia estar aprobado
  368.         p = Proyecto.objects.first()
  369.         self.assertEquals(p.estado, 'AP')
  370.  
  371.     def test_reject_project(self):
  372.         c = self.client
  373.         login = c.login(username='temp', password='temp')
  374.         self.assertTrue(login)
  375.         p = Proyecto.objects.first()
  376.         #creamos un proyecto
  377.         response = c.post('projects/add/', {'nombre_corto': 'test', 'nombre_largo': 'test_proyecto',
  378.                                             'descripcion': 'test', 'duracion_sprint': 30, 'inicio': timezone.now(),
  379.                                             'fin': timezone.now()}, follow=True)
  380.         p = Proyecto.objects.first()
  381.         p.estado = 'CO' #lo marcamos como terminado
  382.         p.save()
  383.         #nos dirigimos al formulario de rechazo del proyecto
  384.         response = c.get(reverse('project:project_aprobar', args=(str(p.id))))
  385.         self.assertEquals(response.status_code, 200)
  386.         #rechazamos el proyecto
  387.         response = c.post(reverse('project:project_aprobar', args=(str(p.id))), data={'recahzar':'rechazar'})
  388.         #deberia redirigir
  389.         self.assertRedirects(response, '/projects/1/')
  390.         #el proyecto deberia estar completado
  391.         p = Proyecto.objects.first()
  392.         self.assertNotEquals(p.estado, 'AP')
  393.         self.assertEquals(p.estado, 'CO')
  394.  
  395. class FlujoTest(TestCase):
  396.  
  397.     def setUp(self):
  398.         u = User.objects.create_superuser('temp','temp@email.com', 'temp')
  399.         p = Permission.objects.get(codename='create_flujo')
  400.         u.user_permissions.add(p)
  401.         p = Permission.objects.get(codename='edit_flujo')
  402.         u.user_permissions.add(p)
  403.         p = Permission.objects.get(codename='remove_flujo')
  404.         u.user_permissions.add(p)
  405.         u = User.objects.create_user('fulano','temp@email.com', 'temp')
  406.         pro= Proyecto.objects.create(nombre_corto='Royecto', nombre_largo='Royecto Largo', estado='Inactivo',inicio=timezone.now(),fin=timezone.now(),creacion='2015-03-10 18:00',duracion_sprint='30', descripcion='Prueba numero 800')
  407.         f = Flujo.objects.create(nombre='Flujo1', proyecto=pro)
  408.         Group.objects.create(name='rol')
  409.  
  410.     def test_permission_to_create_proyecto(self):
  411.         c = self.client
  412.         self.assertTrue(c.login(username='temp', password='temp'))
  413.         response = c.get(reverse('project:flujo_add', args=('1')))
  414.         self.assertEquals(response.status_code, 200)
  415.  
  416.     def test_permission_to_change_proyecto(self):
  417.         c = self.client
  418.         self.assertTrue(c.login(username='temp', password='temp'))
  419.         response = c.get('/flujo/1/edit/')
  420.         self.assertEquals(response.status_code, 200)
  421.  
  422.     def test_permission_to_delete_proyecto(self):
  423.         c = self.client
  424.         self.assertTrue(c.login(username='temp', password='temp'))
  425.         response = c.get('/flujo/1/delete/')
  426.         self.assertEquals(response.status_code, 200)
  427.  
  428.     def test_not_permission_to_create_proyecto(self):
  429.         c = self.client
  430.         self.assertTrue(c.login(username='fulano', password='temp'))
  431.         response = c.get(reverse('project:flujo_add', args=('1')))
  432.         self.assertEquals(response.status_code, 403)
  433.  
  434.     def test_not_permission_to_change_proyecto(self):
  435.         c = self.client
  436.         self.assertTrue(c.login(username='fulano', password='temp'))
  437.         response = c.get('/flujo/1/edit/')
  438.         self.assertEquals(response.status_code, 403)
  439.  
  440.     def test_not_permission_to_delete_proyecto(self):
  441.         c = self.client
  442.         self.assertTrue(c.login(username='fulano', password='temp'))
  443.         response = c.get('/flujo/1/delete/')
  444.         self.assertEquals(response.status_code, 403)
  445.  
  446. class PlantillaTest(TestCase):
  447.     def setUp(self):
  448.         u = User.objects.create_user('temp','temp@email.com', 'temp')
  449.         p = Permission.objects.get(codename='add_flow_template')
  450.         u.user_permissions.add(p)
  451.         p = Permission.objects.get(codename='change_flow_template')
  452.         u.user_permissions.add(p)
  453.         p = Permission.objects.get(codename='delete_flow_template')
  454.         u.user_permissions.add(p)
  455.         u = User.objects.create_user('fulano','temp@email.com', 'temp')
  456.         pro= Proyecto.objects.create(nombre_corto='Royecto', nombre_largo='Royecto Largo', estado='Inactivo',inicio=timezone.now(),fin=timezone.now(),creacion='2015-03-10 18:00',duracion_sprint='30', descripcion='Prueba numero 800')
  457.         f = Flujo.objects.create(nombre='Flujo1',proyecto=None)
  458.         Group.objects.create(name='rol')
  459.  
  460.     def test_permission_to_create_plantilla(self):
  461.         c = self.client
  462.         self.assertTrue(c.login(username='temp', password='temp'))
  463.         response = c.get('/plantilla/add/')
  464.         self.assertEquals(response.status_code, 200)
  465.  
  466.     def test_permission_to_change_plantilla(self):
  467.         c = self.client
  468.         self.assertTrue(c.login(username='temp', password='temp'))
  469.         response = c.get('/plantilla/1/edit/')
  470.         self.assertEquals(response.status_code, 200)
  471.  
  472.     def test_permission_to_delete_plantilla(self):
  473.         c = self.client
  474.         self.assertTrue(c.login(username='temp', password='temp'))
  475.         response = c.get('/plantilla/1/delete/')
  476.         self.assertEquals(response.status_code, 200)
  477.  
  478.     def test_not_permission_to_create_plantilla(self):
  479.         c = self.client
  480.         self.assertTrue(c.login(username='fulano', password='temp'))
  481.         response = c.get('/plantilla/add/')
  482.         self.assertEquals(response.status_code, 403)
  483.  
  484.     def test_not_permission_to_change_plantilla(self):
  485.         c = self.client
  486.         self.assertTrue(c.login(username='fulano', password='temp'))
  487.         response = c.get('/plantilla/1/edit/')
  488.         self.assertEquals(response.status_code, 403)
  489.  
  490.     def test_not_permission_to_delete_plantilla(self):
  491.         c = self.client
  492.         self.assertTrue(c.login(username='fulano', password='temp'))
  493.         response = c.get('/plantilla/1/delete/')
  494.         self.assertEquals(response.status_code, 403)
  495.  
  496. class UserStoryTest(TestCase):
  497.     def setUp(self):
  498.         u = User.objects.create_superuser('test', 'test@test.com', 'test') #Superusuario con todos los permisos
  499.         u2 = User.objects.create_user('none', 'none@none.com', 'none') #Usuario sin permisos
  500.         p = Proyecto.objects.create(nombre_corto='Test Project', nombre_largo='Test Project name', estado='Inactivo',
  501.                                     inicio=timezone.now(), fin=timezone.now(), creacion='2015-03-10 18:00',
  502.                                     duracion_sprint='30', descripcion='Test')
  503.  
  504.     def test_add_userstory_with_permission(self):
  505.         c = self.client
  506.         login = c.login(username='test', password='test')
  507.         self.assertTrue(login)
  508.         p = Proyecto.objects.first()
  509.         #deberia existir
  510.         self.assertIsNotNone(p)
  511.         response = c.get(reverse('project:userstory_add', args=(str(p.id))))
  512.         self.assertEquals(response.status_code, 200)
  513.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  514.             {'nombre':'Test User story', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  515.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  516.         #deberia redirigir
  517.         self.assertRedirects(response, '/userstory/1/')
  518.         us = UserStory.objects.get(pk=1)
  519.         self.assertIsNotNone(us)
  520.         response = c.get(reverse('project:userstory_detail', args=(str(us.id))))
  521.         self.assertEquals(response.status_code, 200)
  522.  
  523.     def test_add_userstory_no_permission(self):
  524.         c = self.client
  525.         login = c.login(username='none', password='none')
  526.         self.assertTrue(login)
  527.         p = Proyecto.objects.first()
  528.         #deberia existir
  529.         self.assertIsNotNone(p)
  530.         response = c.get(reverse('project:userstory_add', args=(str(p.id))))
  531.         #debería rechazar (403 - Permiso denegado)
  532.         self.assertEquals(response.status_code, 403)
  533.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  534.             {'nombre':'Test User story', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  535.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  536.         #no debería haber creado user story
  537.         response = c.get(reverse('project:userstory_detail', args=(str(1))))
  538.         self.assertEquals(response.status_code, 404)
  539.  
  540.     def test_update_userstory_with_permission(self):
  541.         c = self.client
  542.         login = c.login(username='test', password='test')
  543.         self.assertTrue(login)
  544.         p = Proyecto.objects.first()
  545.         #creamos un user story
  546.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  547.             {'nombre':'First Value US', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  548.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  549.         us = UserStory.objects.first()
  550.         self.assertIsNotNone(us)
  551.         self.assertEquals(us.nombre, 'First Value US')
  552.         response = c.get(reverse('project:userstory_detail', args=(str(us.id))))
  553.         self.assertEquals(response.status_code, 200)
  554.         #nos vamos a la página de edición de user story
  555.         response = c.get(reverse('project:userstory_update', args=(str(us.id))))
  556.         #debería retornar 200
  557.         self.assertEquals(response.status_code, 200)
  558.         response = c.post(reverse('project:userstory_update', args=(str(p.id))),
  559.             {'nombre':'Second Value US', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  560.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  561.         self.assertRedirects(response, '/userstory/1/')
  562.         us = UserStory.objects.first()
  563.         self.assertIsNotNone(us)
  564.         #vemos que el nombre ya no es el anterior
  565.         self.assertNotEquals(us.nombre, 'First Value US')
  566.         self.assertEquals(us.nombre, 'Second Value US')
  567.  
  568.     def test_update_userstory_no_permission(self):
  569.         c = self.client
  570.         login = c.login(username='none', password='none')
  571.         self.assertTrue(login)
  572.         p = Proyecto.objects.first()
  573.         #creamos un user story
  574.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  575.             {'nombre':'First Value US', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  576.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  577.         us = UserStory.objects.first()
  578.         #No debío haber creado el userstory
  579.         self.assertEquals(response.status_code, 403)
  580.         self.assertIsNone(us)
  581.  
  582.     def test_registraractividad_userstory_with_permission(self):
  583.         c = self.client
  584.         login = c.login(username='test', password='test')
  585.         self.assertTrue(login)
  586.         p = Proyecto.objects.first()
  587.         #creamos un user story
  588.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  589.             {'nombre':'First Value US', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  590.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  591.         us = UserStory.objects.first()
  592.         self.assertIsNotNone(us)
  593.         self.assertEquals(us.nombre, 'First Value US')
  594.         s = Sprint.objects.create(nombre="Sprint 1", inicio=timezone.now(), fin=timezone.now() + datetime.timedelta(days=30), proyecto=p)
  595.         f = Flujo.objects.create(nombre="Implementación", proyecto=p)
  596.         a1 = Actividad.objects.create(name="Analisis", flujo=f)
  597.         a2 = Actividad.objects.create(name="Desarrollo", flujo=f)
  598.         us.actividad = a2
  599.         us.estado = 1 #Estado en curso
  600.         us.sprint = s
  601.         us.desarrollador = p.equipo.first()
  602.         us.save()
  603.         response = c.get(reverse('project:userstory_detail', args=(str(us.id))))
  604.         self.assertEquals(response.status_code, 200)
  605.         #nos vamos a la página de registrar actividad de user story
  606.         response = c.get(reverse('project:userstory_registraractividad', args=(str(us.id))))
  607.         #debería retornar 200
  608.         self.assertEquals(response.status_code, 200)
  609.  
  610.         post_data = {
  611.             'actividad': 1,
  612.             'horas_a_registrar': 4,
  613.             'estado_actividad': 1,
  614.             'form-INITIAL_FORMS': 0,
  615.             'form-MAX_NUM_FORMS': 1000,
  616.             'form-MIN_NUM_FORMS': 0,
  617.             'form-TOTAL_FORMS': 1,
  618.             'form-0-mensaje': 'Mensaje',
  619.             'form-0-fecha': '2015-05-29 17:56:16',
  620.         }
  621.         response = c.post(reverse('project:userstory_registraractividad', args=(str(us.id))),post_data, follow=True)
  622.         self.assertRedirects(response, '/userstory/1/')
  623.         us = UserStory.objects.first()
  624.         self.assertIsNotNone(us)
  625.         nota = us.nota_set.last()
  626.         #se creo una nota
  627.         self.assertIsNotNone(nota)
  628.         self.assertEquals(nota.mensaje, 'Mensaje')
  629.  
  630.     def test_registraractividad_userstory_no_permission(self):
  631.         c = self.client
  632.         login = c.login(username='none', password='none')
  633.         self.assertTrue(login)
  634.         p = Proyecto.objects.first()
  635.         #creamos un user story
  636.         us = UserStory()
  637.         us.nombre = 'First Value US'
  638.         us.descripcion = "This is a User Story for test purposes."
  639.         us.prioridad = 1
  640.         us.valor_tecnico = 10
  641.         us.valor_negocio = 10
  642.         us.tiempo_estimado = 10
  643.         us.proyecto = p
  644.         s = Sprint.objects.create(nombre="Sprint 1", inicio=timezone.now(), fin=timezone.now() + datetime.timedelta(days=30), proyecto=p)
  645.         f = Flujo.objects.create(nombre="Implementación", proyecto=p)
  646.         a1 = Actividad.objects.create(name="Analisis", flujo=f)
  647.         a2 = Actividad.objects.create(name="Desarrollo", flujo=f)
  648.         us.actividad = a2
  649.         us.sprint = s
  650.         us.desarrollador = p.equipo.first()
  651.         us.save()
  652.         response = c.get(reverse('project:userstory_detail', args=(str(us.id))))
  653.         #no deberia poder ver User Story recien creado
  654.         self.assertEquals(response.status_code, 403)
  655.         #nos vamos a la página de registrar actividad de user story
  656.         response = c.get(reverse('project:userstory_registraractividad', args=(str(us.id))))
  657.         #debería retornar 403
  658.         self.assertEquals(response.status_code, 403)
  659.  
  660.  
  661.     def test_delete_userstory_with_permission(self):
  662.         c = self.client
  663.         login = c.login(username='test', password='test')
  664.         self.assertTrue(login)
  665.         p = Proyecto.objects.first()
  666.         #creamos un user story
  667.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  668.             {'nombre':'First Value US', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  669.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  670.         us = UserStory.objects.first()
  671.         self.assertIsNotNone(us)
  672.         #nos vamos a la página de borrado de user story
  673.         response = c.get(reverse('project:userstory_delete', args=(str(us.id))))
  674.         #debería retornar 200
  675.         self.assertEquals(response.status_code, 200)
  676.         response = c.post(reverse('project:userstory_delete', args=(str(p.id))),
  677.             {'Confirmar':True}, follow=True)
  678.         us = UserStory.objects.first()
  679.         #No debería existir
  680.         self.assertIsNone(us)
  681.  
  682.     def test_list_userstories_with_permission(self):
  683.         c = self.client
  684.         login = c.login(username='test', password='test')
  685.         self.assertTrue(login)
  686.         p = Proyecto.objects.first()
  687.         #listamos user stories del proyecto
  688.         response = c.get(reverse('project:product_backlog', args=(str(p.id))))
  689.         self.assertEquals(response.status_code, 200)
  690.  
  691.     def test_list_userstories_no_permission(self):
  692.         c = self.client
  693.         login = c.login(username='none', password='none')
  694.         self.assertTrue(login)
  695.         p = Proyecto.objects.first()
  696.         #listamos user stories del proyecto
  697.         response = c.get(reverse('project:product_backlog', args=(str(p.id))))
  698.         self.assertEquals(response.status_code, 403)
  699.  
  700.     def test_approve_userstory(self):
  701.         c = self.client
  702.         login = c.login(username='test', password='test')
  703.         self.assertTrue(login)
  704.         p = Proyecto.objects.first()
  705.         #creamos un user story
  706.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  707.             {'nombre':'First Value US', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  708.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  709.         us = UserStory.objects.first()
  710.         self.assertIsNotNone(us)
  711.         self.assertEquals(us.nombre, 'First Value US')
  712.         s = Sprint.objects.create(nombre="Sprint 1", inicio=timezone.now(), fin=timezone.now() + datetime.timedelta(days=30), proyecto=p)
  713.         f = Flujo.objects.create(nombre="Implementación", proyecto=p)
  714.         a1 = Actividad.objects.create(name="Analisis", flujo=f)
  715.         a2 = Actividad.objects.create(name="Desarrollo", flujo=f)
  716.         us.actividad = a2
  717.         us.estado = 2 #Estado Pendiente de aprobacion
  718.         us.estado_actividad = 2
  719.         us.sprint = s
  720.         us.desarrollador = p.equipo.first()
  721.         us.save()
  722.         #nos dirigimos al formulario de aprobacion del userstory
  723.         response = c.get(reverse('project:userstory_aprobar', args=(str(us.id))))
  724.         self.assertEquals(response.status_code, 200)
  725.         #aprobamos el userstory
  726.         response = c.post(reverse('project:userstory_aprobar', args=(str(us.id))))
  727.         #deberia redirigir
  728.         self.assertRedirects(response, '/projects/1/userstories/')
  729.         #el userstory deberia estar aprobado
  730.         us = UserStory.objects.first()
  731.         self.assertEquals(us.estado, 3)
  732.  
  733.     def test_reject_userstory(self):
  734.         c = self.client
  735.         login = c.login(username='test', password='test')
  736.         self.assertTrue(login)
  737.         p = Proyecto.objects.first()
  738.         #creamos un user story
  739.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  740.             {'nombre':'First Value US', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  741.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  742.         us = UserStory.objects.first()
  743.         self.assertIsNotNone(us)
  744.         self.assertEquals(us.nombre, 'First Value US')
  745.         s = Sprint.objects.create(nombre="Sprint 1", inicio=timezone.now(), fin=timezone.now() + datetime.timedelta(days=30), proyecto=p)
  746.         f = Flujo.objects.create(nombre="Implementación", proyecto=p)
  747.         a1 = Actividad.objects.create(name="Analisis", flujo=f)
  748.         a2 = Actividad.objects.create(name="Desarrollo", flujo=f)
  749.         us.actividad = a2
  750.         us.estado = 2 #Estado Pendiente de aprobacion
  751.         us.estado_actividad = 2
  752.         us.sprint = s
  753.         us.desarrollador = p.equipo.first()
  754.         us.save()
  755.         #nos dirigimos al formulario de rechazo del userstory
  756.         response = c.get(reverse('project:userstory_rechazar', args=(str(us.id))))
  757.         self.assertEquals(response.status_code, 200)
  758.         #rechazamos el userstory
  759.         response = c.post(reverse('project:userstory_rechazar', args=(str(us.id))), {'actividad':a2.id, 'estado_actividad':0})
  760.         #deberia redirigir
  761.         self.assertRedirects(response, '/userstory/1/')
  762.         #el userstory deberia estar en curso de vuelta
  763.         us = UserStory.objects.first()
  764.         self.assertEquals(us.estado, 1)
  765.  
  766.     def test_pending_userstory(self):
  767.         c = self.client
  768.         login = c.login(username='test', password='test')
  769.         self.assertTrue(login)
  770.         p = Proyecto.objects.first()
  771.         #creamos un user story
  772.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  773.             {'nombre':'First Value US', 'descripcion':'This is a User Story for testing purposes.', 'prioridad': 1,
  774.              'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  775.         us = UserStory.objects.first()
  776.         self.assertIsNotNone(us)
  777.         self.assertEquals(us.nombre, 'First Value US')
  778.         s = Sprint.objects.create(nombre="Sprint 1", inicio=timezone.now(), fin=timezone.now() + datetime.timedelta(days=30), proyecto=p)
  779.         f = Flujo.objects.create(nombre="Implementación", proyecto=p)
  780.         a1 = Actividad.objects.create(name="Analisis", flujo=f)
  781.         a2 = Actividad.objects.create(name="Desarrollo", flujo=f)
  782.         us.actividad = a2
  783.         us.estado = 1 #Estado En Curso
  784.         us.estado_actividad = 2
  785.         us.sprint = s
  786.         us.desarrollador = p.equipo.first()
  787.         us.save()
  788.         response = c.get(reverse('project:pending_userstories', args=(str(p.id))))
  789.         self.assertEquals(response.status_code, 200)
  790.         self.assertContains(response, "No hay User Stories pendientes de aprobación.")
  791.         us.estado = 2 #Estado Pendiente de Aprobacion
  792.         us.save()
  793.         response = c.get(reverse('project:pending_userstories', args=(str(p.id))))
  794.         self.assertNotContains(response, "No hay User Stories pendientes de aprobación.")
  795.  
  796. class VersionTest(TestCase):
  797.     def setUp(self):
  798.         u = User.objects.create_superuser('test', 'test@test.com', 'test')
  799.         u2 = User.objects.create_user('none', 'none@none.com', 'none')
  800.         p = Proyecto.objects.create(nombre_corto='Project', nombre_largo='Project name', estado='Inactivo',
  801.                                     inicio=timezone.now(), fin=timezone.now(), creacion='2015-03-10 18:00',
  802.                                     duracion_sprint='30', descripcion='Test')
  803.         us = UserStory.objects.create(nombre='User Story', descripcion='Test Description', prioridad=1,
  804.                                       valor_negocio=10, valor_tecnico=10, tiempo_estimado=10, proyecto_id=1)
  805.         # g = Group.objects.create()
  806.  
  807.     def test_version_no_permission(self):
  808.         c = self.client
  809.         login = c.login(username='none', password='none')
  810.         self.assertTrue(login)
  811.         p = Proyecto.objects.first()
  812.         self.assertIsNotNone(p)
  813.         us = UserStory.objects.get(pk=1)
  814.         self.assertIsNotNone(us)
  815.         response = c.get(reverse('project:version_list', args=(str(us.id))))
  816.         self.assertEquals(response.status_code, 403)
  817.  
  818.     def test_version_with_permission(self):
  819.         c = self.client
  820.         login = c.login(username='test', password='test')
  821.         self.assertTrue(login)
  822.         p = Proyecto.objects.first()
  823.         self.assertIsNotNone(p)
  824.         us = UserStory.objects.get(pk=1)
  825.         self.assertIsNotNone(us)
  826.         response = c.get(reverse('project:version_list', args=(str(us.id))))
  827.         self.assertEquals(response.status_code, 200)
  828.  
  829.     def test_initial_version(self):
  830.         u = User.objects.get(username='test')
  831.         self.assertIsNotNone(u)
  832.         c = self.client
  833.         login = c.login(username='test', password='test')
  834.         self.assertTrue(login)
  835.         p = Proyecto.objects.first()
  836.         self.assertIsNotNone(p)
  837.         response = c.get(reverse('project:userstory_add', args=(str(p.id))))
  838.         self.assertEquals(response.status_code, 200)
  839.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  840.                           {'nombre': 'Test_Version', 'descripcion': 'Test Description', 'prioridad': 1,
  841.                            'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  842.         # deberia redirigir
  843.         self.assertRedirects(response, '/userstory/2/')
  844.         us = UserStory.objects.get(pk=2)
  845.         self.assertIsNotNone(us)
  846.         # se debe crear una version inicial
  847.         v = reversion.get_for_object(us)[0]
  848.         self.assertIsNotNone(v)
  849.  
  850.  
  851.     def test_update_version(self):
  852.         u = User.objects.get(username='test')
  853.         self.assertIsNotNone(u)
  854.         c = self.client
  855.         login = c.login(username='test', password='test')
  856.         self.assertTrue(login)
  857.         us = UserStory.objects.first()
  858.         self.assertIsNotNone(us)
  859.         response = c.get(reverse('project:userstory_update', args=(str(us.id))))
  860.         self.assertEquals(response.status_code, 200)
  861.         response = c.post(reverse('project:userstory_update', args=(str(us.id))),
  862.                            {'nombre': 'User Story Mod', 'descripcion': 'Test Description', 'prioridad': 1,
  863.                            'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  864.         self.assertRedirects(response, reverse('project:userstory_detail', args=(str(us.id))))
  865.         # se debe crear una version de actualizacion
  866.         v = reversion.get_for_object(us)[0]
  867.         self.assertIsNotNone(v)
  868.         # comprobamos que sea la version correcta
  869.         self.assertEquals(str(v), 'User Story Mod')
  870.  
  871.     def test_revert_version(self):
  872.         c = self.client
  873.         login = c.login(username='test', password='test')
  874.         self.assertTrue(login)
  875.         p = Proyecto.objects.first()
  876.         self.assertIsNotNone(p)
  877.         response = c.get(reverse('project:userstory_add', args=(str(p.id))))
  878.         self.assertEquals(response.status_code, 200)
  879.         response = c.post(reverse('project:userstory_add', args=(str(p.id))),
  880.                           {'nombre': 'Test_Version_Initial', 'descripcion': 'Test Description', 'prioridad': 1,
  881.                            'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  882.         # deberia redirigir
  883.         self.assertRedirects(response, '/userstory/2/')
  884.         us = UserStory.objects.get(pk=2)
  885.         self.assertIsNotNone(us)
  886.         response = c.get(reverse('project:userstory_update', args=(str(us.id))))
  887.         self.assertEquals(response.status_code, 200)
  888.         response = c.post(reverse('project:userstory_update', args=(str(us.id))),
  889.                            {'nombre': 'Test_Version_Mod', 'descripcion': 'Test Description', 'prioridad': 1,
  890.                            'valor_negocio': 10, 'valor_tecnico': 10, 'tiempo_estimado': 10}, follow=True)
  891.         self.assertRedirects(response, reverse('project:userstory_detail', args=(str(us.id))))
  892.         # comprobamos que se modifico
  893.         us = UserStory.objects.get(nombre='Test_Version_Mod')
  894.         self.assertIsNotNone(us)
  895.         # revertimos a la version inicial
  896.         v = reversion.get_for_object(us)[1]
  897.         self.assertIsNotNone(v)
  898.         response = c.get(reverse('project:version_revert', args=(str(us.id), str(v.id))))
  899.         self.assertEquals(response.status_code, 200)
  900.         initial = response.context['form'].initial
  901.         response = c.post(reverse('project:version_revert', args=(str(us.id), str(v.id))), initial, follow=True)
  902.         self.assertRedirects(response, reverse('project:userstory_detail', args=(str(us.id))))
  903.         # comprobamos que se volvio a la version inicial
  904.         us = UserStory.objects.get(pk=2)
  905.         self.assertEquals(us.nombre, 'Test_Version_Initial')
  906.  
  907. class SprintTest(TestCase):
  908.  
  909.         def setUp(self):
  910.             u = User.objects.create_superuser('temp','temp@email.com', 'temp')
  911.             pro= Proyecto.objects.create(nombre_corto='Royecto', nombre_largo='Royecto Largo', estado='IN',inicio=timezone.now(),fin=timezone.now(),creacion=timezone.now(), duracion_sprint='30', descripcion='Prueba numero 800')
  912.             User.objects.create_user('tempdos', 'tempdos@email.com', 'tempdos')
  913.             UserStory.objects.create(nombre= 'Test_Version', descripcion= 'Test Description', prioridad= 1,
  914.                            valor_negocio= 10, valor_tecnico= 10, tiempo_estimado =10, proyecto = pro)
  915.             f=Flujo.objects.create(nombre ='flujo_test', proyecto= pro)
  916.             Actividad.objects.create(name='actividad_test', flujo=f)
  917.             Sprint.objects.create(nombre='sprint_test',inicio=timezone.now(),fin=timezone.now(), proyecto=pro)
  918.  
  919.         def test_to_create_sprint(self):
  920.             c = self.client
  921.             self.assertTrue(c.login(username='temp', password='temp'))
  922.             p= Proyecto.objects.first()
  923.             self.assertIsNotNone(p)
  924.             us=UserStory.objects.first()
  925.             self.assertIsNotNone(us)
  926.             u=User.objects.first()
  927.             self.assertIsNotNone(u)
  928.             f=User.objects.first()
  929.             self.assertIsNotNone(f)
  930.             response = c.get(reverse('project:sprint_add', args=(str(p.id))))
  931.             self.assertEquals(response.status_code, 200)
  932.             post_data = {
  933.             'nombre': 'Sprint_test',
  934.             'inicio': timezone.now(),
  935.             'proyecto':p,
  936.             'fin':timezone.now(),
  937.             'actividad': 1,
  938.             'tiempo_registrado': 4,
  939.             'estado_actividad': 1,
  940.             'form-INITIAL_FORMS': 0,
  941.             'form-MAX_NUM_FORMS': 1000,
  942.             'form-MIN_NUM_FORMS': 0,
  943.             'form-TOTAL_FORMS': 1,
  944.             'form-0-userStory': us.id,
  945.             'form-0-desarrollador':u.id,
  946.             'form-0-flujo':f.id,
  947.         }
  948.             response = c.post(reverse('project:sprint_add', args=(str(p.id))), post_data, follow=True)
  949.             self.assertEquals(response.status_code,200)
  950.             s=Sprint.objects.get(pk=1)
  951.             self.assertIsNotNone(s)
  952.             #self.assertRedirects(response, '/sprint/1/')
  953.  
  954.         def test_to_edit_sprint(self):
  955.             c = self.client
  956.             self.assertTrue(c.login(username='temp', password='temp'))
  957.             p= Proyecto.objects.first()
  958.             self.assertIsNotNone(p)
  959.             us=UserStory.objects.first()
  960.             self.assertIsNotNone(us)
  961.             u=User.objects.first()
  962.             self.assertIsNotNone(u)
  963.             f=Flujo.objects.create(nombre ='flujo_test2', proyecto= p)
  964.             Actividad.objects.create(name='actividad_test2', flujo=f)
  965.             self.assertIsNotNone(f)
  966.             s=Sprint.objects.get(pk=1)
  967.             response = c.get(reverse('project:sprint_add', args=(str(s.id))))
  968.             self.assertEquals(response.status_code, 200)
  969.             post_data = {
  970.                 'nombre': 'Sprint_test',
  971.                 'inicio': timezone.now(),
  972.                 'fin':timezone.now(),
  973.                 'proyecto':p,
  974.                 'form-INITIAL_FORMS': 0,
  975.                 'form-MAX_NUM_FORMS': 1000,
  976.                 'form-MIN_NUM_FORMS': 0,
  977.                 'form-TOTAL_FORMS': 1,
  978.                 'form-0-userStory': us.id,
  979.                 'form-0-desarrollador':u.id,
  980.                 'form-0-flujo':f.id,
  981.             }
  982.             response = c.post(reverse('project:sprint_update',args=(str(s.id))),
  983.                           post_data, follow=True)
  984.             self.assertEquals(response.status_code,200)
  985.  
  986.  
  987.         def test_permission_to_create_sprint(self):
  988.             c = self.client
  989.             self.assertTrue(c.login(username='temp', password='temp'))
  990.             p= Proyecto.objects.first()
  991.             self.assertIsNotNone(p)
  992.             response = c.get(reverse('project:sprint_add', args=(str(p.id))))
  993.             self.assertEquals(response.status_code, 200)
  994.  
  995.         def test_permission_to_no_create_sprint(self):
  996.             c = self.client
  997.             self.assertTrue(c.login(username='tempdos', password='tempdos'))
  998.             p= Proyecto.objects.first()
  999.             self.assertIsNotNone(p)
  1000.             response = c.get(reverse('project:sprint_add', args=(str(p.id))))
  1001.             self.assertEquals(response.status_code, 403)
  1002.  
  1003.         def test_permission_to_edit_sprint(self):
  1004.             c = self.client
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement