예제 #1
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)',
    ])
예제 #2
0
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                                                                         ',
    ])
예제 #3
0
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]))
예제 #4
0
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]))
예제 #5
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)
예제 #6
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)
예제 #7
0
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                                                                         ',
    ])
예제 #8
0
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)
예제 #9
0
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)
예제 #10
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)',
    ])
예제 #11
0
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                                                                         ',
    ])
예제 #12
0
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],
                ],
            },
        ],
    }
예제 #13
0
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],
                ],
            },
        ],
    }
예제 #14
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),
    ]
예제 #15
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),
    ]