118 lines
3.4 KiB
Python
118 lines
3.4 KiB
Python
from werkzeug.datastructures import FileStorage
|
|
import pytest, datetime
|
|
|
|
from atst.models.attachment import Attachment
|
|
from atst.models.task_order import TaskOrder, Status
|
|
|
|
from tests.factories import random_future_date, random_past_date
|
|
from tests.mocks import PDF_FILENAME
|
|
|
|
|
|
class TestTaskOrderStatus:
|
|
def test_pending_status(self):
|
|
to = TaskOrder()
|
|
assert to.status == Status.PENDING
|
|
|
|
to = TaskOrder(number="42", start_date=random_future_date())
|
|
assert to.status == Status.PENDING
|
|
|
|
def test_active_status(self):
|
|
to = TaskOrder(
|
|
number="42", start_date=random_past_date(), end_date=random_future_date()
|
|
)
|
|
assert to.status == Status.ACTIVE
|
|
|
|
def test_expired_status(self):
|
|
to = TaskOrder(
|
|
number="42", start_date=random_past_date(), end_date=random_past_date()
|
|
)
|
|
assert to.status == Status.EXPIRED
|
|
|
|
|
|
def test_is_submitted():
|
|
to = TaskOrder()
|
|
assert not to.is_submitted
|
|
|
|
to = TaskOrder(
|
|
number="42",
|
|
start_date=datetime.date.today(),
|
|
end_date=datetime.date.today() + datetime.timedelta(days=1),
|
|
)
|
|
assert to.is_submitted
|
|
|
|
|
|
class TestCSPEstimate:
|
|
def test_setting_estimate_with_attachment(self):
|
|
to = TaskOrder()
|
|
attachment = Attachment(filename="sample.pdf", object_name="sample")
|
|
to.csp_estimate = attachment
|
|
|
|
assert to.csp_attachment_id == attachment.id
|
|
|
|
def test_setting_estimate_with_file_storage(self):
|
|
to = TaskOrder()
|
|
with open(PDF_FILENAME, "rb") as fp:
|
|
fs = FileStorage(fp, content_type="application/pdf")
|
|
to.csp_estimate = fs
|
|
|
|
assert to.csp_estimate is not None
|
|
assert to.csp_estimate.filename == PDF_FILENAME
|
|
|
|
def test_setting_estimate_with_invalid_object(self):
|
|
to = TaskOrder()
|
|
with pytest.raises(TypeError):
|
|
to.csp_estimate = "invalid"
|
|
|
|
def test_setting_estimate_with_empty_value(self):
|
|
to = TaskOrder()
|
|
assert to.csp_estimate is None
|
|
|
|
to.csp_estimate = ""
|
|
assert to.csp_estimate is None
|
|
|
|
def test_removing_estimate(self):
|
|
attachment = Attachment(filename="sample.pdf", object_name="sample")
|
|
to = TaskOrder(csp_estimate=attachment)
|
|
assert to.csp_estimate is not None
|
|
|
|
to.csp_estimate = ""
|
|
assert to.csp_estimate is None
|
|
|
|
|
|
class TestPDF:
|
|
def test_setting_pdf_with_attachment(self):
|
|
to = TaskOrder()
|
|
attachment = Attachment(filename="sample.pdf", object_name="sample")
|
|
to.pdf = attachment
|
|
|
|
assert to.pdf_attachment_id == attachment.id
|
|
|
|
def test_setting_pdf_with_file_storage(self):
|
|
to = TaskOrder()
|
|
with open(PDF_FILENAME, "rb") as fp:
|
|
fs = FileStorage(fp, content_type="application/pdf")
|
|
to.pdf = fs
|
|
|
|
assert to.pdf is not None
|
|
assert to.pdf.filename == PDF_FILENAME
|
|
|
|
def test_setting_pdf_with_invalid_object(self):
|
|
to = TaskOrder()
|
|
with pytest.raises(TypeError):
|
|
to.pdf = "invalid"
|
|
|
|
def test_setting_pdf_with_empty_value(self):
|
|
to = TaskOrder()
|
|
assert to.pdf is None
|
|
|
|
to.pdf = ""
|
|
assert to.pdf is None
|
|
|
|
def test_removing_pdf(self):
|
|
attachment = Attachment(filename="sample.pdf", object_name="sample")
|
|
to = TaskOrder(pdf=attachment)
|
|
assert to.pdf is not None
|
|
|
|
to.pdf = ""
|
|
assert to.pdf is None
|