# -*- 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'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'])