diff options
Diffstat (limited to 'webapp/webapp/features/poll_result_details.py')
-rw-r--r-- | webapp/webapp/features/poll_result_details.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/webapp/webapp/features/poll_result_details.py b/webapp/webapp/features/poll_result_details.py new file mode 100644 index 0000000..a63c246 --- /dev/null +++ b/webapp/webapp/features/poll_result_details.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +import json +import os +import tempfile +import shutil + +from lettuce import step, world, after +from lettuce.django import django_url +from nose.tools import assert_equals +from django.conf import settings + +from pollster.models import Pollster +from polls.models import Poll + + +def create_poll_result_file(poll_result_data, poll_result_name): + tmp_file = tempfile.NamedTemporaryFile(suffix='.poll_result', delete=False) + try: + tmp_file.write( + json.dumps(poll_result_data, sort_keys=True, indent=4, + separators=(',', ': ')) + ) + tmp_dir = os.path.dirname(tmp_file.name) + poll_result_path = os.path.join(tmp_dir, poll_result_name) + os.rename(tmp_file.name, poll_result_path) + finally: + tmp_file.close() + return poll_result_path + + +def get_pollster_by_username(encuestador_name): + return filter(lambda e: e.username == encuestador_name, Pollster.all())[0] + + +@step(u'When I visit the "([^"]*)" page for "([^"]*)" poll') +def visit_page_for_poll(step, page_name, poll_name): + page_list = {'Resultados': 'results'} + page = page_list[page_name] + poll_id = world.poll_id.__str__() + b = world.browser + url = '/manager/polls/{poll_id}/{page}/'.format(poll_id=poll_id, page=page) + b.visit(django_url(url)) + + +@step(u'Then I should see the poll_result details:') +def then_i_should_see_the_poll_result_details(step): + b = world.browser + for poll_result_details in step.hashes: + for detail_desc in poll_result_details.keys(): + assert b.is_text_present(detail_desc), \ + detail_desc.encode('utf-8') + " is not present" + value = poll_result_details[detail_desc] + assert b.is_text_present(value), \ + value.encode('utf-8') + " is not present" + + +@after.each_feature +def remove_poll_results_files(feature): + if feature.name == 'Poll result details': + MEDIA_RESULTS = settings.RESULT_BCK_ROOT + result_dir = os.path.join(MEDIA_RESULTS, world.poll_id.__str__()) + shutil.rmtree(result_dir) + + +@step(u'Then I should see link to "([^"]*)"') +def then_i_should_see_link_to_poll_result_name(step, poll_result_name): + browser = world.browser + poll_id = str(world.poll_id) + poll = Poll.get(poll_id) + poll_result_file = poll.get_result_files()[0] + + poll_result_url = poll_result_file.get_absolute_url() + element = browser.find_by_name("poll_result_file").first + assert_equals(django_url(poll_result_url), element['href']) |