def test_ok_if_order_in_allowed_status(self, allowed_status): """ Test that the order can be marked as complete if it's in one of the allowed statuses. """ order = OrderPaidFactory(status=allowed_status, assignees=[]) OrderAssigneeCompleteFactory(order=order) adviser = AdviserFactory() with freeze_time('2018-07-12 13:00'): order.complete(by=adviser) order.refresh_from_db() assert order.status == OrderStatus.complete assert order.completed_on == dateutil_parse('2018-07-12T13:00Z') assert order.completed_by == adviser
def test_atomicity(self): """ Test that if there's a problem with saving the order, nothing gets saved. """ order = OrderPaidFactory(assignees=[]) OrderAssigneeCompleteFactory(order=order) with mock.patch.object(order, 'save') as mocked_save: mocked_save.side_effect = Exception() with pytest.raises(Exception): order.complete(by=None) order.refresh_from_db() assert order.status == OrderStatus.paid assert not order.completed_on assert not order.completed_by