Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/webapp/webapp/features/terrain.py
blob: e3caeb2c65de23a1f77c517ad494f65d36c93054 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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()