135 lines
4.0 KiB
Python
135 lines
4.0 KiB
Python
import datetime
|
|
import sys
|
|
import shutil
|
|
|
|
import pytest
|
|
|
|
from quixote import cleanup
|
|
from wcs import formdef
|
|
from wcs.formdef import FormDef
|
|
from wcs.workflows import Workflow
|
|
from wcs.fields import StringField
|
|
|
|
from utilities import create_temporary_pub
|
|
|
|
def setup_module(module):
|
|
cleanup()
|
|
|
|
global pub
|
|
|
|
pub = create_temporary_pub()
|
|
pub.cfg['language'] = {'language': 'en'}
|
|
|
|
def teardown_module(module):
|
|
shutil.rmtree(pub.APP_DIR)
|
|
|
|
|
|
def test_is_disabled():
|
|
formdef = FormDef()
|
|
assert not formdef.is_disabled()
|
|
|
|
formdef.disabled = True
|
|
assert formdef.is_disabled()
|
|
|
|
|
|
def test_is_disabled_publication_date():
|
|
formdef = FormDef()
|
|
|
|
formdef.publication_date = '%s-%02d-%02d' % (datetime.datetime.today() - datetime.timedelta(1)).timetuple()[:3]
|
|
assert not formdef.is_disabled()
|
|
|
|
formdef.publication_date = '%s-%02d-%02d' % (datetime.datetime.today() + datetime.timedelta(1)).timetuple()[:3]
|
|
assert formdef.is_disabled()
|
|
|
|
|
|
def test_is_disabled_expiration_date():
|
|
formdef = FormDef()
|
|
|
|
formdef.expiration_date = '%s-%02d-%02d' % (datetime.datetime.today() - datetime.timedelta(1)).timetuple()[:3]
|
|
assert formdef.is_disabled()
|
|
|
|
formdef.expiration_date = '%s-%02d-%02d' % (datetime.datetime.today() + datetime.timedelta(1)).timetuple()[:3]
|
|
assert not formdef.is_disabled()
|
|
|
|
|
|
def test_is_disabled_publication_datetime():
|
|
formdef = FormDef()
|
|
|
|
formdef.publication_date = '%s-%02d-%02d %02d:%02d' % (
|
|
datetime.datetime.now() - datetime.timedelta(hours=1)).timetuple()[:5]
|
|
assert not formdef.is_disabled()
|
|
|
|
formdef.publication_date = '%s-%02d-%02d %02d:%02d' % (
|
|
datetime.datetime.now() + datetime.timedelta(hours=1)).timetuple()[:5]
|
|
assert formdef.is_disabled()
|
|
|
|
|
|
def test_is_disabled_expiration_datetime():
|
|
formdef = FormDef()
|
|
|
|
formdef.expiration_date = '%s-%02d-%02d %02d:%02d' % (
|
|
datetime.datetime.now() - datetime.timedelta(hours=1)).timetuple()[:5]
|
|
assert formdef.is_disabled()
|
|
|
|
formdef.expiration_date = '%s-%02d-%02d %02d:%02d' % (
|
|
datetime.datetime.now() + datetime.timedelta(hours=1)).timetuple()[:5]
|
|
assert not formdef.is_disabled()
|
|
|
|
def test_title_change():
|
|
formdef = FormDef()
|
|
formdef.name = 'foo'
|
|
formdef.store()
|
|
assert FormDef.get(formdef.id).name == 'foo'
|
|
assert FormDef.get(formdef.id).url_name == 'foo'
|
|
|
|
formdef.name = 'bar'
|
|
formdef.store()
|
|
assert FormDef.get(formdef.id).name == 'bar'
|
|
assert FormDef.get(formdef.id).url_name == 'bar'
|
|
|
|
# makes sure the url_name doesn't change if there are submitted forms
|
|
formdef.data_class()().store()
|
|
formdef.name = 'baz'
|
|
formdef.store()
|
|
assert FormDef.get(formdef.id).name == 'baz'
|
|
assert FormDef.get(formdef.id).url_name == 'bar' # didn't change
|
|
|
|
def test_substitution_variables():
|
|
formdef = FormDef()
|
|
formdef.name = 'foo'
|
|
formdef.store()
|
|
|
|
from wcs.workflows import WorkflowVariablesFieldsFormDef
|
|
wf = Workflow(name='variables')
|
|
wf.variables_formdef = WorkflowVariablesFieldsFormDef(workflow=wf)
|
|
wf.variables_formdef.fields.append(
|
|
StringField(label='Test', type='string', varname='foo'))
|
|
wf.store()
|
|
formdef.workflow_id = wf.id
|
|
|
|
assert 'form_name' in formdef.get_substitution_variables()
|
|
assert formdef.get_substitution_variables()['form_name'] == 'foo'
|
|
formdef.workflow_options = {'foo': 'bar'}
|
|
assert 'form_option_foo' in formdef.get_substitution_variables()
|
|
assert formdef.get_substitution_variables()['form_option_foo'] == 'bar'
|
|
|
|
def test_substitution_variables_object():
|
|
formdef = FormDef()
|
|
formdef.name = 'foo'
|
|
formdef.store()
|
|
formdef.data_class().wipe()
|
|
|
|
assert 'form_objects' in formdef.get_substitution_variables()
|
|
substs = formdef.get_substitution_variables().get('form_objects')
|
|
assert substs.count == 0
|
|
assert substs.count_status_1 == 0
|
|
|
|
d = formdef.data_class()()
|
|
d.status = 'wf-1'
|
|
d.store()
|
|
assert substs.count == 1
|
|
assert substs.count_status_1 == 1
|
|
|
|
with pytest.raises(AttributeError):
|
|
assert substs.foobar
|