def test_answers_json_get(self): self.assertEqual(ManoSeimasUser.objects.count(), 0) test = factories.CompatTestFactory() resp = self.app.get( reverse('answers_json', kwargs={'test_id': test.id})) self.assertEqual(resp.json, {'answers': {}, 'test_id': test.id}) # lazy user is created self.assertEqual(ManoSeimasUser.objects.count(), 1) self.assertEqual(UserResult.objects.count(), 0)
def test_answers_json_post(self): answers = { '1': 'yes', '2': 'no', } test = factories.CompatTestFactory() resp = self.app.post_json( reverse('answers_json', kwargs={'test_id': test.id}), answers) user = ManoSeimasUser.objects.first() self.assertEqual(resp.json, {'answers': answers, 'test_id': test.id}) # lazy user is created self.assertEqual(ManoSeimasUser.objects.count(), 1) # answers are saved self.assertEqual(UserResult.objects.count(), 1) ur = UserResult.objects.first() self.assertEqual(ur.user, user) self.assertEqual(ur.result, answers)
def test_topics_all(self): test = factories.CompatTestFactory() topic = factories.TopicFactory() factories.TestGroupFactory(test=test, topics=[topic]) factories.TopicFactory(name='Darbo kodeksas') self.assertEqual(topics_all(test.id), [ { 'id': topic.pk, 'group': 'Socialiniai reikalai', 'name': 'Aukštojo mokslo reforma', 'slug': 'aukstojo-mokslo-reforma', 'description': 'Aukštojo mokslo reforma', 'arguments': [], 'votings': [], 'image': None, }, ])
def test_results_view_answers(self): answers = { '1': 'yes', '2': 'no', } topics = factories.TopicFactory.create_batch( 2, name=factory.Iterator(['Socialinis modelis', 'Kariuomenė']), ) test = factories.CompatTestFactory() factories.TestGroupFactory(topics=topics, test=test) resp = self.app.post( reverse('test_results', kwargs={'test_id': test.id})) self.assertEqual(resp.json['user_answers'], None) ur = factories.UserResultFactory(result=answers) self.app.set_user(ur.user) resp = self.app.post( reverse('test_results', kwargs={'test_id': test.id})) self.assertEqual(resp.json['user_answers'], answers)
def test_results_view(self): tp1, tp2 = topics = [ factories.TopicFactory(name='Socialinis modelis'), factories.TopicFactory(name='Kariuomenė'), ] data = [ ('1', 'DP', 'Jonas', 'Jonaitis', [1, -0.3]), ('2', 'DP', 'Petras', 'Petraitis', [1, 0.5]), ('3', 'LLS', 'Jonas', 'Petraitis', [-0.8, 1]), ] genpos = lambda positions: { topic.pk: position for topic, position in zip(topics, positions) } GroupFactory(abbr='DP', name='Darbo partijos frakcija', positions=genpos([1, 0.3])) GroupFactory(abbr='LLS', name='Liberalų sąjūdžio frakcija', positions=genpos([0.5, -0.3])) mps = [] for p_asm_id, fraction, first_name, last_name, positions in data: group = Group.objects.get(abbr=fraction) mp = ParliamentMemberFactory( source_id=p_asm_id, first_name=first_name, last_name=last_name, term_of_office='2012-2016', positions=genpos(positions), ) GroupMembershipFactory(member=mp, group=group) mps.append(mp) mp1, mp2, mp3 = mps gr1, gr2 = Group.objects.filter(abbr__in=['DP', 'LLS']).order_by('pk') test = factories.CompatTestFactory() factories.TestGroupFactory(topics=topics, test=test) resp = self.app.post( reverse('test_results', kwargs={'test_id': test.id})) fractions = [{ 'title': x['title'], 'short_title': x['short_title'], 'answers': {int(k): v for k, v in x['answers'].items()}, 'members_amount': x['members_amount'], } for x in resp.json['fractions']] self.assertEqual(fractions, [ { 'title': 'Darbo partijos frakcija', 'short_title': 'DP', 'answers': { int(tp1.pk): 1, int(tp2.pk): 0.3 }, 'members_amount': 2, }, { 'title': 'Liberalų sąjūdžio frakcija', 'short_title': 'LLS', 'answers': { int(tp1.pk): 0.5, int(tp2.pk): -0.3 }, 'members_amount': 1, }, ]) mps = [{ 'name': x['name'], 'fraction': x['fraction'], 'answers': {int(k): v for k, v in x['answers'].items()}, } for x in resp.json['mps']] self.assertEqual(mps, [ { 'name': 'Jonas Jonaitis', 'fraction': 'DP', 'answers': { int(tp1.pk): 1, int(tp2.pk): -0.3 } }, { 'name': 'Petras Petraitis', 'fraction': 'DP', 'answers': { int(tp1.pk): 1, int(tp2.pk): 0.5 } }, { 'name': 'Jonas Petraitis', 'fraction': 'LLS', 'answers': { int(tp1.pk): -0.8, int(tp2.pk): 1 } }, ])