@@ -6,6 +6,7 @@ import alembic.command
|
||||
from logging.config import dictConfig
|
||||
from werkzeug.datastructures import FileStorage
|
||||
from tempfile import TemporaryDirectory
|
||||
from collections import OrderedDict
|
||||
|
||||
from atst.app import make_app, make_config
|
||||
from atst.database import db as _db
|
||||
@@ -84,14 +85,17 @@ def session(db, request):
|
||||
|
||||
|
||||
class DummyForm(dict):
|
||||
pass
|
||||
def __init__(self, data=OrderedDict(), errors=(), raw_data=None):
|
||||
self._fields = data
|
||||
self.errors = list(errors)
|
||||
|
||||
|
||||
class DummyField(object):
|
||||
def __init__(self, data=None, errors=(), raw_data=None):
|
||||
def __init__(self, data=None, errors=(), raw_data=None, name=None):
|
||||
self.data = data
|
||||
self.errors = list(errors)
|
||||
self.raw_data = raw_data
|
||||
self.name = name
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -99,6 +103,15 @@ def dummy_form():
|
||||
return DummyForm()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def dummy_form_with_field():
|
||||
def set_field(name, value):
|
||||
data = DummyField(data=value, name=name)
|
||||
return DummyForm(data=OrderedDict({name: data}))
|
||||
|
||||
return set_field
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def dummy_field():
|
||||
return DummyField()
|
||||
|
@@ -1,7 +1,13 @@
|
||||
from wtforms.validators import ValidationError
|
||||
from wtforms.validators import ValidationError, StopValidation
|
||||
import pytest
|
||||
|
||||
from atst.forms.validators import Name, IsNumber, PhoneNumber, ListItemsUnique
|
||||
from atst.forms.validators import (
|
||||
Name,
|
||||
IsNumber,
|
||||
PhoneNumber,
|
||||
ListItemsUnique,
|
||||
RequiredIfNot,
|
||||
)
|
||||
|
||||
|
||||
class TestIsNumber:
|
||||
@@ -73,3 +79,32 @@ class TestListItemsUnique:
|
||||
dummy_field.data = invalid
|
||||
with pytest.raises(ValidationError):
|
||||
validator(dummy_form, dummy_field)
|
||||
|
||||
|
||||
class TestRequiredIfNot:
|
||||
def test_RequiredIfNot_requires_field_if_arg_is_falsy(
|
||||
self, dummy_form_with_field, dummy_field
|
||||
):
|
||||
form = dummy_form_with_field("arg", False)
|
||||
validator = RequiredIfNot("arg")
|
||||
dummy_field.data = None
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
validator(form, dummy_field)
|
||||
|
||||
def test_RequiredIfNot_does_not_require_field_if_arg_is_truthy(
|
||||
self, dummy_form_with_field, dummy_field
|
||||
):
|
||||
form = dummy_form_with_field("arg", True)
|
||||
validator = RequiredIfNot("arg")
|
||||
dummy_field.data = None
|
||||
|
||||
with pytest.raises(StopValidation):
|
||||
validator(form, dummy_field)
|
||||
|
||||
def test_RequiredIfNot_arg_is_None_raises_error(self, dummy_form, dummy_field):
|
||||
validator = RequiredIfNot("arg")
|
||||
dummy_field.data = "some data"
|
||||
|
||||
with pytest.raises(Exception):
|
||||
validator(dummy_form, dummy_field)
|
||||
|
@@ -203,6 +203,13 @@ def test_other_text_not_saved_if_other_not_checked(task_order):
|
||||
assert not workflow.task_order.complexity_other
|
||||
|
||||
|
||||
def test_cor_data_set_to_user_data_if_am_cor_is_checked(task_order):
|
||||
to_data = {**task_order.to_dictionary(), "am_cor": True}
|
||||
workflow = UpdateTaskOrderWorkflow(task_order.creator, to_data, 3, task_order.id)
|
||||
workflow.update()
|
||||
assert task_order.cor_dod_id == task_order.creator.dod_id
|
||||
|
||||
|
||||
def test_invite_officers_to_task_order(task_order, queue):
|
||||
to_data = {
|
||||
**TaskOrderFactory.dictionary(),
|
||||
|
Reference in New Issue
Block a user