Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.39 KB | None | 0 0
  1. from django.test import TestCase
  2. from django.contrib.auth.models import User
  3. from django.db.models import Max, Min
  4. from okrsme.models import Objective, KeyResult
  5. from rest_framework.test import APIClient
  6.  
  7. USERNAME = "tester"
  8. PASSWORD = "password"
  9. YEAR = 2017
  10. QUARTER = 1
  11.  
  12. class ObjectiveTestCase(TestCase):
  13.     def setUp(self):
  14.         user = User.objects.create(username=USERNAME, password=PASSWORD)
  15.         client = APIClient()
  16.         client.force_authenticate(user=user)
  17.         # try to create 6 objectives
  18.         for i in range(1, 7):
  19.             test_objective = {'year': YEAR, 'quarter': QUARTER, "text": "Test objective"}
  20.             request = client.post('/objectives/', test_objective, format="json")
  21.  
  22.         client.logout()
  23.  
  24.     def test_5_objectives_per_quarter(self):
  25.         """One user has exactly 5 objectives"""
  26.         user = User.objects.get(username=USERNAME)
  27.         self.assertIs(Objective.objects.filter(owner = user, year=YEAR, quarter=QUARTER).count() == 5, True)
  28.  
  29.     def test_first_objective_has_number_1(self):
  30.         """The user's first objective has number 1"""
  31.         user = User.objects.get(username=USERNAME)
  32.         user_objectives = Objective.objects.filter(owner = user, year=YEAR, quarter=QUARTER)
  33.         result = user_objectives.aggregate(Min('number'))["number__min"]
  34.         self.assertIs(result == 1, True)
  35.  
  36.     def test_last_objective_has_number_5(self):
  37.         """The user's last objective has number 5"""
  38.         user = User.objects.get(username=USERNAME)
  39.         user_objectives = Objective.objects.filter(owner = user, year=YEAR, quarter=QUARTER)
  40.         result = user_objectives.aggregate(Max('number'))["number__max"]
  41.         self.assertIs(result == 5, True)
  42.  
  43. class KeyResultTestCase(TestCase):
  44.     def setUp(self):
  45.         user = User.objects.create(username=USERNAME, password=PASSWORD)
  46.         client = APIClient()
  47.         client.force_authenticate(user=user)
  48.  
  49.         test_objective_data = {"year": YEAR, "quarter": QUARTER, "text": "Test objective"}
  50.         request = client.post('/objectives/', test_objective_data, format="json")
  51.  
  52.         # this part should possibly made serializer-agnostic
  53.         test_objective = client.get('/objectives/%d/' % request.data['id'], format="json")
  54.         objective_id = test_objective.data['id']
  55.  
  56.         # try to create 6 key results
  57.         for i in range(1, 7):
  58.                 test_key_result = {'objective': objective_id, "text": "Test key result"}
  59.                 client.post('/key-results/', test_key_result, format="json")
  60.  
  61.         client.logout()
  62.  
  63.     def test_5_key_results_per_objective(self):
  64.         """One user has maximum 5 key results"""
  65.         user = User.objects.get(username=USERNAME)
  66.         objective = Objective.objects.get(owner=user, year=YEAR, quarter=QUARTER, number=1)
  67.         self.assertIs(KeyResult.objects.filter(objective=objective).count() == 5, True)
  68.  
  69.     def test_first_key_result_has_number_1(self):
  70.         """The user's first objective has number 1"""
  71.         user = User.objects.get(username=USERNAME)
  72.         objective = Objective.objects.get(owner=user, year=YEAR, quarter=QUARTER, number=1)
  73.         key_results = KeyResult.objects.filter(objective=objective)
  74.         result = key_results.aggregate(Min('number'))["number__min"]
  75.         self.assertIs(result == 1, True)
  76.  
  77.     def test_last_key_result_has_number_5(self):
  78.         """The user's last objective has number 5"""
  79.         user = User.objects.get(username=USERNAME)
  80.         objective = Objective.objects.get(owner=user, year=YEAR, quarter=QUARTER, number=1)
  81.         key_results = KeyResult.objects.filter(objective=objective)
  82.         result = key_results.aggregate(Max('number'))["number__max"]
  83.         self.assertIs(result == 5, True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement