def test_get_topic_posts(app): user = factories.UserFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) factories.create_topic_posts(topic, None, [ ('event', 1, 0, 'Balsavimo internetu koncepcijos patvirtinimas', 'lrs.lt', '2006-11-26'), ('quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt', '2016-03-22', [ (1, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [ (1, 'šiuolaikiška, modernu', True), ]), (0, 0, 'Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.', [ (-1, 'balsų pirkimas', None), ]), ]), ]) assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (n) Mantas Adomėnas (seimo narys) kauno.diena.lt 2016-03-22 ', ' | Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu. (1)', ' | - (y) šiuolaikiška, modernu < (counterargument) ', ' | Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam. (0)', ' | - (n) balsų pirkimas ', ' | ', ' o (-) Balsavimo internetu koncepcijos patvirtinimas lrs.lt 2006-11-26 (1)', ])
def test_delete_post(App, app): curator = factories.UserFactory(first_name='curator') topic = factories.TopicFactory() factories.TopicCuratorFactory(user=curator, topic=topic) factories.create_topic_posts(topic, curator, [ ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [ (0, 0, 'Mes palaikysim tokį įstatymą.', [ (1, 'šiuolaikiška, modernu', None), ]), (1, 0, 'Galimybė prekiauti balsais.', [ (-1, 'balsų pirkimas', None), ]), ]), ]) assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (-) Eligijus Masiulis (seimo narys) delfi.lt 2015-10-08 ', ' | Mes palaikysim tokį įstatymą. (0)', ' | - (y) šiuolaikiška, modernu ', ' | Galimybė prekiauti balsais. (1)', ' | - (n) balsų pirkimas ', ]) post = models.Post.objects.get(topic=topic, quote__text='Galimybė prekiauti balsais.') resp = app.get(reverse('topic-details', args=[topic.pk, topic.slug]), user=curator) resp.click('trinti', href=reverse('post-delete', args=[post.pk])) assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (y) Eligijus Masiulis (seimo narys) delfi.lt 2015-10-08 ', ' | Mes palaikysim tokį įstatymą. (0)', ' | - (y) šiuolaikiška, modernu ', ])
def test_update_post_permission(App, app): curator = factories.UserFactory(first_name='curator') topic = factories.TopicFactory() factories.TopicCuratorFactory(user=curator, topic=topic) factories.create_topic_posts(topic, curator, [ ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [ (0, 0, 'Mes palaikysim tokį įstatymą.', [ (1, 'šiuolaikiška, modernu', None), ]), ]), ]) post = models.Post.objects.get(topic=topic) # Curator can edit post. resp = app.get(reverse('topic-details', args=[topic.pk, topic.slug]), user=curator) resp = resp.click('keisti', href=reverse('quote-update', args=[post.pk])) assert 'quote-form' in resp.forms # Non-curator user can't edit post. user = factories.UserFactory(first_name='notcurator') resp = app.get(reverse('topic-details', args=[topic.pk, topic.slug]), user=user) assert resp.context['request'].user.is_authenticated() is True with pytest.raises(IndexError): resp = resp.click('keisti', href=reverse('quote-update', args=[post.pk])) # Annonymous user can't edit post. resp = App().get(reverse('topic-details', args=[topic.pk, topic.slug])) assert resp.context['request'].user.is_authenticated() is False with pytest.raises(IndexError): resp = resp.click('keisti', href=reverse('quote-update', args=[post.pk]))
def test_update_post_permission(App, app): curator = factories.UserFactory(first_name='curator') topic = factories.TopicFactory() factories.TopicCuratorFactory(user=curator, topic=topic) factories.create_topic_posts(topic, curator, [ ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [ (0, 0, 'Mes palaikysim tokį įstatymą.', [ (1, 'šiuolaikiška, modernu', None), ]), ]), ]) post = models.Post.objects.get(topic=topic) # Curator can edit post. resp = app.get(reverse('topic-details', args=[topic.pk, topic.slug]), user=curator) resp = resp.click('keisti', href=reverse('quote-update', args=[post.pk])) assert 'quote-form' in resp.forms # Non-curator user can't edit post. user = factories.UserFactory(first_name='notcurator') resp = app.get(reverse('topic-details', args=[topic.pk, topic.slug]), user=user) assert resp.context['request'].user.is_authenticated is True with pytest.raises(IndexError): resp = resp.click('keisti', href=reverse('quote-update', args=[post.pk])) # Annonymous user can't edit post. resp = App().get(reverse('topic-details', args=[topic.pk, topic.slug])) assert resp.context['request'].user.is_authenticated is False with pytest.raises(IndexError): resp = resp.click('keisti', href=reverse('quote-update', args=[post.pk]))
def test_topic_details(app): user = factories.UserFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) factories.create_topic_posts(topic, user, [ ('event', 0, 1, 'Balsavimo internetu koncepcijos patvirtinimas', 'lrs.lt', '2006-11-26'), ('quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt', '2016-03-22', [ (1, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [ (1, 'šiuolaikiška, modernu', True), ]), (1, 0, 'Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.', [ (-1, 'balsų pirkimas', None), ]), ]), ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [ (0, 0, 'Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius.', [ (1, 'šiuolaikiška, modernu', None), ]), ]), ]) factories.create_topic_posts(topic, None, [('curator', 'Vardenis Pavardenis', 'inžinierius')]) # Test topic details with anonymouse user app.get(reverse('topic-details', args=[topic.pk, topic.slug])) # Test with registered user app.get(reverse('topic-details', args=[topic.pk, topic.slug]), user=user)
def test_update_with_same_quote(app): # This snippet allows to run tests without running slow migrations from django.db import connection cursor = connection.cursor() cursor.execute('CREATE EXTENSION IF NOT EXISTS pg_trgm') user = factories.UserFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) post, = factories.create_topic_posts(topic, user, [ ('quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt', '2016-03-22', [ (1, 0, 'Nepasiduokime paviršutiniškiems šūkiams.', [ # position, argument, counterargument (1, 'šiuolaikiška, modernu', None), ]), ]), ]) resp = app.get(reverse('quote-update', args=[post.pk]), user='******') form = resp.forms['quote-form'] form['timestamp'] = '2016-04-04 16:34' resp = form.submit() assert resp.status == '302 Found' assert resp.headers['location'] == topic.get_absolute_url() assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (y) Mantas Adomėnas (seimo narys) kauno.diena.lt 2016-04-04 ', ' | Nepasiduokime paviršutiniškiems šūkiams. (0)', ' | - (y) šiuolaikiška, modernu ', ])
def test_compare(app): user = factories.UserFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) factories.create_topic_posts(topic, user, [ ('event', 0, 1, 'Balsavimo internetu koncepcijos patvirtinimas', 'lrs.lt', '2006-11-26'), ('quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt', '2016-03-22', [ (1, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [ (1, 'šiuolaikiška, modernu', True), ]), (1, 0, 'Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.', [ (-1, 'balsų pirkimas', None), ]), ]), ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [ (0, 0, 'Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius.', [ (1, 'šiuolaikiška, modernu', None), ]), ]), ]) group = factories.GroupFactory(members=models.Actor.objects.all()) app.get(reverse('compare-positions', args=[group.pk, group.slug]), user=user)
def test_update_with_same_quote(app): # This snippet allows to run tests without running slow migrations from django.db import connection cursor = connection.cursor() cursor.execute('CREATE EXTENSION IF NOT EXISTS pg_trgm') user = factories.UserFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) post, = factories.create_topic_posts( topic, user, [ ( 'quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt', '2016-03-22', [ ( 1, 0, 'Nepasiduokime paviršutiniškiems šūkiams.', [ # position, argument, counterargument (1, 'šiuolaikiška, modernu', None), ]), ]), ]) resp = app.get(reverse('quote-update', args=[post.pk]), user='******') form = resp.forms['quote-form'] form['timestamp'] = '2016-04-04 16:34' resp = form.submit() assert resp.status == '302 Found' assert resp.headers['location'] == topic.get_absolute_url() assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (y) Mantas Adomėnas (seimo narys) kauno.diena.lt 2016-04-04 ', ' | Nepasiduokime paviršutiniškiems šūkiams. (0)', ' | - (y) šiuolaikiška, modernu ', ])
def test_topic_kpi(app, settings, tmpdir): settings.MEDIA_ROOT = tmpdir.strpath user = factories.UserFactory() topic = factories.TopicFactory() indicators = list(topic.indicators.all()) factories.TopicCuratorFactory(user=user, topic=topic) post, = factories.create_topic_posts(topic, user, [ ('event', 0, 1, 'Balsavimo internetu koncepcijos patvirtinimas', 'lrs.lt', '2006-11-26'), ]) tmpdir.mkdir('indicators').join('%s.csv' % indicators[0].slug).write( '\n'.join([ 'datetime,Seimo', '1992-01-01,75.2', '1996-01-01,52.9', '', ])) resp = app.get(reverse('topic-kpi', args=[topic.pk, topic.slug])) assert resp.json == { 'events': [ { 'id': post.pk, 'date': '2006-11-26', 'position': 0.0, 'source': 'http://lrs.lt/2006/11/26', 'title': 'Balsavimo internetu koncepcijos patvirtinimas', }, ], 'indicators': [ { 'id': indicators[0].pk, 'ylabel': 'Aktyvumas procentais', 'data': [ ['1992-01-01', 75.2], ['1996-01-01', 52.9], ], }, ], }
def test_topic_kpi(app, settings, tmpdir): settings.MEDIA_ROOT = tmpdir.strpath user = factories.UserFactory() topic = factories.TopicFactory() indicators = list(topic.indicators.all()) factories.TopicCuratorFactory(user=user, topic=topic) post, = factories.create_topic_posts(topic, user, [ ('event', 0, 1, 'Balsavimo internetu koncepcijos patvirtinimas', 'lrs.lt', '2006-11-26'), ]) tmpdir.mkdir('indicators').join('%s.csv' % indicators[0].slug).write('\n'.join([ 'datetime,Seimo', '1992-01-01,75.2', '1996-01-01,52.9', '', ])) resp = app.get(reverse('topic-kpi', args=[topic.pk, topic.slug])) assert resp.json == { 'events': [ { 'id': post.pk, 'date': '2006-11-26', 'position': 0.0, 'source': 'http://lrs.lt/2006/11/26', 'title': 'Balsavimo internetu koncepcijos patvirtinimas', }, ], 'indicators': [ { 'id': indicators[0].pk, 'ylabel': 'Aktyvumas procentais', 'data': [ ['1992-01-01', 75.2], ['1996-01-01', 52.9], ], }, ], }
def test_compare_positions(app): user = factories.UserFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) # Fill topic with some content factories.create_topic_posts(topic, user, [ ('event', 0, 1, 'Balsavimo internetu koncepcijos patvirtinimas', 'lrs.lt', '2006-11-26'), ('quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt', '2016-03-22', [ (1, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [ (1, 'šiuolaikiška, modernu', True), ]), (1, 0, 'Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.', [ (-1, 'balsų pirkimas', None), ]), ]), ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [ (0, 0, 'Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius.', [ (1, 'šiuolaikiška, modernu', None), ]), ]), ('quote', 'Juozas Bernatonis', 'seimo narys', 'delfi.lt', '2016-03-26', [ (0, 1, 'Žemas užsienio lietuvių aktyvumas susijęs su dalyvavimo rinkimuose sunkumais.', [ (1, 'didės užsienio lietuvių aktyvumas rinkimuose', None), ]), ]), ('quote', 'Mantas Adomėnas', 'seimo narys', '15min.lt', '2006-03-22', [ (0, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [ (1, 'šiuolaikiška, modernu', None), ]), ]), ]) # Check topic was actually filled with correct data assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (y) Juozas Bernatonis (seimo narys) delfi.lt 2016-03-26 ', ' | Žemas užsienio lietuvių aktyvumas susijęs su dalyvavimo rinkimuose sunkumais. (-1)', ' | - (y) didės užsienio lietuvių aktyvumas rinkimuose ', ' | ', '( ) (n) Mantas Adomėnas (seimo narys) kauno.diena.lt 2016-03-22 ', ' | Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu. (1)', ' | - (y) šiuolaikiška, modernu < (counterargument) ', ' | Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam. (1)', ' | - (n) balsų pirkimas ', ' | ', '( ) (y) Eligijus Masiulis (seimo narys) delfi.lt 2015-10-08 ', ' | Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius. (0)', ' | - (y) šiuolaikiška, modernu ', ' | ', ' o (-) Balsavimo internetu koncepcijos patvirtinimas lrs.lt 2006-11-26 (-1)', ' | ', '( ) (y) Mantas Adomėnas (seimo narys) 15min.lt 2006-03-22 ', ' | Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu. (0)', ' | - (y) šiuolaikiška, modernu ', ]) mantas_adomenas = models.Actor.objects.get(first_name='Mantas', last_name='Adomėnas').pk eligijus_masiulis = models.Actor.objects.get(first_name='Eligijus', last_name='Masiulis').pk group = factories.GroupFactory( members=[mantas_adomenas, eligijus_masiulis]) # Check list of actor and user positions for quotes assert list(services.get_user_quote_positions(group, user)) == [ (mantas_adomenas, -1.0, 1), (mantas_adomenas, -1.0, 1), (eligijus_masiulis, 1.0, 0), (mantas_adomenas, 1.0, 0), ] # Check list of actor and user positions for arguments assert list(services.get_user_argument_positions(group, user)) == [ ('balsų pirkimas', mantas_adomenas, -1.0, -1.0), ('šiuolaikiška, modernu', mantas_adomenas, 0, -1.0), ('šiuolaikiška, modernu', eligijus_masiulis, 1.0, -1.0), ] # Check list of actor and user positions for events assert list(services.get_user_event_positions(group, user)) == [] # Finally check if position comparison works assert services.compare_positions(group, user) == [ (mantas_adomenas, 0.125), (eligijus_masiulis, 1.0), ]
def test_compare_positions(app): user = factories.UserFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) # Fill topic with some content factories.create_topic_posts(topic, user, [ ('event', 0, 1, 'Balsavimo internetu koncepcijos patvirtinimas', 'lrs.lt', '2006-11-26'), ('quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt', '2016-03-22', [ (1, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [ (1, 'šiuolaikiška, modernu', True), ]), (1, 0, 'Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.', [ (-1, 'balsų pirkimas', None), ]), ]), ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [ (0, 0, 'Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius.', [ (1, 'šiuolaikiška, modernu', None), ]), ]), ('quote', 'Juozas Bernatonis', 'seimo narys', 'delfi.lt', '2016-03-26', [ (0, 1, 'Žemas užsienio lietuvių aktyvumas susijęs su dalyvavimo rinkimuose sunkumais.', [ (1, 'didės užsienio lietuvių aktyvumas rinkimuose', None), ]), ]), ('quote', 'Mantas Adomėnas', 'seimo narys', '15min.lt', '2006-03-22', [ (0, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [ (1, 'šiuolaikiška, modernu', None), ]), ]), ]) # Check topic was actually filled with correct data assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (y) Juozas Bernatonis (seimo narys) delfi.lt 2016-03-26 ', ' | Žemas užsienio lietuvių aktyvumas susijęs su dalyvavimo rinkimuose sunkumais. (-1)', ' | - (y) didės užsienio lietuvių aktyvumas rinkimuose ', ' | ', '( ) (n) Mantas Adomėnas (seimo narys) kauno.diena.lt 2016-03-22 ', ' | Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu. (1)', ' | - (y) šiuolaikiška, modernu < (counterargument) ', ' | Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam. (1)', ' | - (n) balsų pirkimas ', ' | ', '( ) (y) Eligijus Masiulis (seimo narys) delfi.lt 2015-10-08 ', ' | Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius. (0)', ' | - (y) šiuolaikiška, modernu ', ' | ', ' o (-) Balsavimo internetu koncepcijos patvirtinimas lrs.lt 2006-11-26 (-1)', ' | ', '( ) (y) Mantas Adomėnas (seimo narys) 15min.lt 2006-03-22 ', ' | Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu. (0)', ' | - (y) šiuolaikiška, modernu ', ]) mantas_adomenas = models.Actor.objects.get(first_name='Mantas', last_name='Adomėnas').pk eligijus_masiulis = models.Actor.objects.get(first_name='Eligijus', last_name='Masiulis').pk group = factories.GroupFactory(members=[mantas_adomenas, eligijus_masiulis]) # Check list of actor and user positions for quotes assert list(services.get_user_quote_positions(group, user)) == [ (mantas_adomenas, -1.0, 1), (mantas_adomenas, -1.0, 1), (eligijus_masiulis, 1.0, 0), (mantas_adomenas, 1.0, 0), ] # Check list of actor and user positions for arguments assert list(services.get_user_argument_positions(group, user)) == [ ('balsų pirkimas', mantas_adomenas, -1.0, -1.0), ('šiuolaikiška, modernu', mantas_adomenas, 0, -1.0), ('šiuolaikiška, modernu', eligijus_masiulis, 1.0, -1.0), ] # Check list of actor and user positions for events assert list(services.get_user_event_positions(group, user)) == [ ] # Finally check if position comparison works assert services.compare_positions(group, user) == [ (mantas_adomenas, 0.125), (eligijus_masiulis, 1.0), ]