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_curator_apply(app): user = factories.UserFactory( username='******', email='*****@*****.**', first_name='', last_name='', ) topic = factories.TopicFactory() resp = app.get(reverse('curator-apply', args=[topic.pk, topic.slug]), user=user) form = resp.forms['curator-form'] form['first_name'] = 'Vardenis' form['last_name'] = 'Pavardenis' form['title'] = 'visuomenės veikėjas' form['photo'] = Upload('my.jpg', factories.get_image_bytes()) resp = form.submit() assert resp.status == '302 Found' assert resp.headers['location'] == topic.get_absolute_url() assert models.Curator.objects.get(user=user).title == 'visuomenės veikėjas' assert services.dump_topic_posts(topic) == '' assert services.dump_topic_posts(topic, queue=True) == '\n'.join([ '( ) Vardenis Pavardenis (visuomenės veikėjas) naujas temos kuratorius (0)', ]) # A curator steps in and approves curator application post = models.Post.objects.order_by('pk').last() curator = factories.UserFactory(first_name='kuratorius') factories.TopicCuratorFactory(user=curator, topic=topic) resp = app.post(reverse('js:curator-post-vote', args=[post.pk]), params={'vote': 1}, user=curator) assert resp.json == {'success': True, 'upvotes': 1, 'downvotes': 0} assert services.dump_topic_posts(topic, queue=True) == '' # A new curator user tries to vote for his own curator application resp = app.post(reverse('js:curator-post-vote', args=[post.pk]), params={'vote': 1}, user=user) assert resp.json == {'success': False} assert services.dump_topic_posts(topic, queue=True) == '' # Another curator steps in and dissagrees with approval curator = factories.UserFactory(first_name='kuratorius 2') factories.TopicCuratorFactory(user=curator, topic=topic) resp = app.post(reverse('js:curator-post-vote', args=[post.pk]), params={'vote': -1}, user=curator) assert resp.json == {'success': True, 'upvotes': 1, 'downvotes': 1} assert services.dump_topic_posts(topic, queue=True) == '\n'.join([ '( ) Vardenis Pavardenis (visuomenės veikėjas) naujas temos kuratorius (-1)', ]) # A not curator user tries to vote for his curator application resp = app.post(reverse('js:curator-post-vote', args=[post.pk]), params={'vote': 1}, user=user) assert resp.json == {'success': False} assert services.dump_topic_posts(topic, queue=True) == '\n'.join([ '( ) Vardenis Pavardenis (visuomenės veikėjas) naujas temos kuratorius (-1)', ])
def test_create_quote(app): user = factories.UserFactory() topic = factories.TopicFactory() # First try to create a quote as no non-curator user source, quote, arguments = factories.get_quote_form_data( text='Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.' ) services.create_quote(user, topic, source, quote, arguments) assert services.dump_topic_posts(topic) == '' assert services.dump_topic_posts(topic, queue=True) == '\n'.join([ '( ) (-) Mantas Adomėnas (seimo narys) kauno.diena.lt 2016-03-22 ', ' | Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu. (0)', ' | - (y) šiuolaikiška, modernu < (counterargument) ', ]) # Now create a post as a curator user factories.TopicCuratorFactory(user=user, topic=topic) source, quote, arguments = factories.get_quote_form_data( text='Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.') services.create_quote(user, topic, source, quote, arguments) assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (n) Mantas Adomėnas (seimo narys) kauno.diena.lt 2016-03-22 ', ' | Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam. (0)', ' | - (y) šiuolaikiška, modernu < (counterargument) ', ])
def test_create_event(app): user = factories.UserFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) resp = app.get(reverse('event-create', args=[topic.pk, topic.slug]), user=user) form = resp.forms['event-form'] form['title'] = 'Balsavimo internetu koncepcijos patvirtinimas' form['source_link'] = 'https://e-seimas.lrs.lt/portal/legalAct/lt/TAD/TAIS.287235?positionInSearchResults=0&searchModelUUID=eaee1625-cf9f-46c0-931c-482a218029e8' form['timestamp'] = '2006-11-16' resp = form.submit() assert resp.status == '302 Found' assert resp.headers['location'] == topic.get_absolute_url() assert services.dump_topic_posts(topic) == '\n'.join([ ' o (-) Balsavimo internetu koncepcijos patvirtinimas e-seimas.lrs.lt 2006-11-16 (0)', ]) # Try to add same event second time resp = app.get(reverse('event-create', args=[topic.pk, topic.slug]), user=user) form = resp.forms['event-form'] form['title'] = 'Balsavimo internetu koncepcijos patvirtinimas' form['source_link'] = 'https://e-seimas.lrs.lt/portal/legalAct/lt/TAD/TAIS.287235?positionInSearchResults=0&searchModelUUID=eaee1625-cf9f-46c0-931c-482a218029e8' form['timestamp'] = '2006-11-16' resp = form.submit() assert resp.status == '200 OK' assert resp.context['form'].errors.as_text() == '\n'.join([ '* source_link', ' * Toks įvykis jau yra įtrauktas į „Balsavimas internetu“ temą.', ]) assert services.dump_topic_posts(topic) == '\n'.join([ ' o (-) Balsavimo internetu koncepcijos patvirtinimas e-seimas.lrs.lt 2006-11-16 (0)', ])
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_user_post_vote(app): user = factories.UserFactory() topic = factories.TopicFactory() event = factories.EventFactory() post = factories.PostFactory(topic=topic, content_object=event) # User upvotes a post resp = app.post(reverse('js:user-post-vote', args=[post.pk]), params={'vote': 1}, user=user) assert resp.json == {'success': True, 'upvotes': 1, 'downvotes': 0} assert services.dump_topic_posts(topic) == '\n'.join([ ' o (-) Balsavimo internetu koncepcijos patvirtinimas e-seimas.lrs.lt 2016-03-22 (1)', ]) # User downvotes same post resp = app.post(reverse('js:user-post-vote', args=[post.pk]), params={'vote': -1}, user=user) assert resp.json == {'success': True, 'upvotes': 0, 'downvotes': 1} assert services.dump_topic_posts(topic) == '\n'.join([ ' o (-) Balsavimo internetu koncepcijos patvirtinimas e-seimas.lrs.lt 2016-03-22 (-1)', ]) # User clears his vote resp = app.post(reverse('js:user-post-vote', args=[post.pk]), params={'vote': 0}, user=user) assert resp.json == {'success': True, 'upvotes': 0, 'downvotes': 0} assert services.dump_topic_posts(topic) == '\n'.join([ ' o (-) Balsavimo internetu koncepcijos patvirtinimas e-seimas.lrs.lt 2016-03-22 (0)', ])
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_curator_votes(app): users = (factories.UserFactory(first_name='u%d' % i) for i in itertools.count()) event = factories.EventFactory() post = factories.PostFactory(content_object=event) assert services.get_curator_votes(post) == (0, 0) assert services.update_curator_position(next(users), post, 1) == (1, 0) assert services.update_curator_position(next(users), post, 1) == (2, 0) assert services.update_curator_position(next(users), post, -1) == (2, 1) assert services.get_curator_votes(post) == (2, 1) # Try to vote several times with the same user user = factories.UserFactory() assert services.update_curator_position(user, post, 1) == (3, 1) assert services.update_curator_position(user, post, -1) == (2, 2) assert services.update_curator_position(user, post, -1) == (2, 2) assert services.update_curator_position(user, post, 1) == (3, 1) assert services.get_curator_votes(post) == (3, 1) assert services.get_curator_topic_votes(user, post.topic) == {post.pk: 1} # Try to vote for new curator application curator = factories.CuratorFactory(user=user) post = factories.PostFactory(content_object=curator) user_1, user_2, user_3 = next(users), next(users), next(users) # Initially user should not be a curator assert services.is_topic_curator(user, post.topic) is False # After first positive vote user shuould become a curator assert services.update_curator_position(user_1, post, 1) == (1, 0) assert services.is_topic_curator(user, post.topic) is True # When number of curator upvotes and downvotes becomes equal, user should be removed from curators assert services.update_curator_position(user_1, post, -1) == (0, 1) assert services.is_topic_curator(user, post.topic) is False # Same thing, but with two users voting differently assert services.update_curator_position(user_2, post, 1) == (1, 1) assert services.is_topic_curator(user, post.topic) is False # If third users agrees to accept new curator it will be accepted assert services.update_curator_position(user_3, post, 1) == (2, 1) assert services.is_topic_curator(user, post.topic) is True
def test_get_post_votes(app): user = (factories.UserFactory(first_name='u%d' % i) for i in itertools.count()) event = factories.EventFactory() post = factories.PostFactory(content_object=event) assert services.get_post_votes(post) == (0, 0) assert services.update_user_position(next(user), post, 1) == (1, 0) assert services.update_user_position(next(user), post, 1) == (2, 0) assert services.update_user_position(next(user), post, -1) == (2, 1) assert services.get_post_votes(post) == (2, 1) # Try to vote several times with the same user user = factories.UserFactory() assert services.update_user_position(user, post, 1) == (3, 1) assert services.update_user_position(user, post, -1) == (2, 2) assert services.update_user_position(user, post, -1) == (2, 2) assert services.update_user_position(user, post, 1) == (3, 1) assert services.get_post_votes(post) == (3, 1) assert services.get_user_topic_votes(user, post.topic) == {post.pk: 1}
def test_create_group(app): factories.UserFactory() resp = app.get(reverse('group-create'), user='******') form = resp.forms['group-form'] form['first_name'] = 'Lietuvos Žaliųjų Partija' form['title'] = 'politinė partija' resp = form.submit() assert resp.headers['location'] == '/' assert models.Actor.objects.filter(first_name='Lietuvos Žaliųjų Partija').exists()
def test_create_person(app): factories.UserFactory() resp = app.get(reverse('person-create'), user='******') form = resp.forms['person-form'] form['first_name'] = 'Mantas' form['last_name'] = 'Adomėnas' form['title'] = 'seimo narys' resp = form.submit() assert resp.headers['location'] == '/' assert models.Actor.objects.filter(first_name='Mantas', last_name='Adomėnas').exists()
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_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_create_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() actor = factories.PersonActorFactory() topic = factories.TopicFactory() factories.TopicCuratorFactory(user=user, topic=topic) resp = app.get(reverse('quote-create', args=[topic.pk, topic.slug]), user='******') form = resp.forms['quote-form'] form['actor'].force_value(actor.pk) form['source_link'] = 'http://kauno.diena.lt/naujienos/lietuva/politika/skinasi-kelia-balsavimas-internetu-740017' form['timestamp'] = '2016-03-22 16:34' form['text'] = 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.' form['form-0-title'] = 'šiuolaikiška, modernu' form['form-0-counterargument'] = True resp = form.submit() assert resp.status == '302 Found' assert resp.headers['location'] == topic.get_absolute_url() 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. (0)', ' | - (y) šiuolaikiška, modernu < (counterargument) ', ]) resp = app.get(reverse('quote-create', args=[topic.pk, topic.slug]), user='******') form = resp.forms['quote-form'] form['actor'].force_value(actor.pk) form['source_link'] = 'http://kauno.diena.lt/naujienos/lietuva/politika/skinasi-kelia-balsavimas-internetu-740017' form['timestamp'] = '2016-03-22 16:34' form['text'] = 'Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.' form['form-0-title'] = 'balsų pirkimas' form['form-0-position'] = True resp = form.submit() assert resp.status == '302 Found' assert resp.headers['location'] == topic.get_absolute_url() 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. (0)', ' | - (y) šiuolaikiška, modernu < (counterargument) ', ' | Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam. (0)', ' | - (n) balsų pirkimas ', ]) # Try to add similar quote from same author and from same source resp = app.get(reverse('quote-create', args=[topic.pk, topic.slug]), user='******') form = resp.forms['quote-form'] form['actor'].force_value(actor.pk) form['source_link'] = 'http://kauno.diena.lt/naujienos/lietuva/politika/skinasi-kelia-balsavimas-internetu-740017' form['timestamp'] = '2016-03-22 16:34' form['text'] = 'Atidaroma nauja galimybė prekiauti balsais ir likti nebaudžiamam.' form['form-0-title'] = 'balsų pirkimas' form['form-0-position'] = True resp = form.submit() assert resp.status == '200 OK' assert resp.context['quote_form'].errors.as_text() == '\n'.join([ '* text', ' * Toks komentaras jau yra įtrauktas į „Balsavimas internetu“ temą.', ]) 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. (0)', ' | - (y) šiuolaikiška, modernu < (counterargument) ', ' | Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam. (0)', ' | - (n) balsų pirkimas ', ]) # Try to update an existing quote quote = models.Quote.objects.get(text='Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.') post = models.Post.objects.get(topic=topic, quote=quote) resp = app.get(reverse('quote-update', args=[post.pk]), user='******') form = resp.forms['quote-form'] form['timestamp'] = '2016-04-04 16:34' form['text'] = 'Pasiduokime paviršutiniškiems šūkiams.' form['form-0-counterargument'] = False resp = form.submit() assert resp.status == '302 Found' assert resp.headers['location'] == topic.get_absolute_url() assert services.dump_topic_posts(topic) == '\n'.join([ '( ) (-) Mantas Adomėnas (seimo narys) kauno.diena.lt 2016-04-04 ', ' | Pasiduokime paviršutiniškiems šūkiams. (0)', ' | - (y) šiuolaikiška, modernu ', ' | Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam. (0)', ' | - (n) balsų pirkimas ', ])
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), ]