import os from lettuce import world, before, after from splinter import Browser from fabric.api import local from fabric.context_managers import hide from django.conf import settings from django.core import management from utils.test import (remove_option_images_dir, empty_results_dir, create_results_dir) @before.all def set_browser(): world.browser = Browser('phantomjs') world.fixtures_path = os.path.join(settings.PROJECT_ROOT, 'features/fixtures') create_results_dir() @after.all def exit_browser(total): world.browser.quit() def drop_mongo(): db = settings.MONGO_SETTINGS['NAME'] with hide('running'): cmd = "mongo {mongo_db} --eval 'db.dropDatabase()' > /dev/null" local(cmd.format(mongo_db=db)) def drop_sqlite(): management.call_command('flush', interactive=False, verbosity=0) def load_fixture(fixture_name): management.call_command('loaddata', fixture_name, interactive=False, verbosity=0) def load_mongo_fixture(fixture_name, collection): pollster_fixture_dir = os.path.join(settings.PROJECT_ROOT, '../pollster/fixtures') polls_fixture_dir = os.path.join(settings.PROJECT_ROOT, '../polls/fixtures') fixtures = { 'pollsters': pollster_fixture_dir, 'polls': polls_fixture_dir, } fixture_dir = fixtures[collection] fixture_path = os.path.join(fixture_dir, fixture_name + ".json") kwargs = { 'db': settings.MONGO_SETTINGS['NAME'], 'collection': collection, 'fixture': fixture_path, } cmd = "mongoimport -d {db} -c {collection} --file {fixture} --jsonArray" local(cmd.format(**kwargs)) @before.each_feature def before_each_feature(feature): """This is the main lettuce hook "@before.each_feature".""" drop_mongo() drop_sqlite() empty_results_dir() if feature.name in ("Researcher adds images to options", "Researcher can't modify poll's structure", "Upload .poll_result files"): load_fixture("generic_researcher") load_fixture("generic_pollster") load_mongo_fixture("mongo_generic_pollster", "pollsters") load_mongo_fixture("closed_poll", "polls") load_mongo_fixture("poll", "polls") @after.each_feature def after_each_feature(feature): remove_option_images_dir()