feat: add initial views for upgrades
CRUD only so far, still need execute features
This commit is contained in:
parent
1804e74d13
commit
6650ee698e
14 changed files with 656 additions and 117 deletions
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8; -*-
|
||||
|
||||
import datetime
|
||||
import decimal
|
||||
import functools
|
||||
from unittest import TestCase
|
||||
|
@ -579,7 +580,6 @@ class TestMasterView(WebTestCase):
|
|||
self.assertEqual(value, "No")
|
||||
|
||||
def test_grid_render_currency(self):
|
||||
model = self.app.model
|
||||
view = self.make_view()
|
||||
obj = {'amount': None}
|
||||
|
||||
|
@ -597,6 +597,33 @@ class TestMasterView(WebTestCase):
|
|||
value = view.grid_render_currency(obj, 'amount', '-100.42')
|
||||
self.assertEqual(value, "($100.42)")
|
||||
|
||||
def test_grid_render_datetime(self):
|
||||
view = self.make_view()
|
||||
obj = {'dt': None}
|
||||
|
||||
# null
|
||||
value = view.grid_render_datetime(obj, 'dt', None)
|
||||
self.assertIsNone(value)
|
||||
|
||||
# normal
|
||||
obj['dt'] = datetime.datetime(2024, 8, 24, 11)
|
||||
value = view.grid_render_datetime(obj, 'dt', '2024-08-24T11:00:00')
|
||||
self.assertEqual(value, '2024-08-24 11:00:00 AM')
|
||||
|
||||
def test_grid_render_enum(self):
|
||||
enum = self.app.enum
|
||||
view = self.make_view()
|
||||
obj = {'status': None}
|
||||
|
||||
# null
|
||||
value = view.grid_render_enum(obj, 'status', None, enum=enum.UpgradeStatus)
|
||||
self.assertIsNone(value)
|
||||
|
||||
# normal
|
||||
obj['status'] = enum.UpgradeStatus.SUCCESS
|
||||
value = view.grid_render_enum(obj, 'status', 'SUCCESS', enum=enum.UpgradeStatus)
|
||||
self.assertEqual(value, 'SUCCESS')
|
||||
|
||||
def test_grid_render_notes(self):
|
||||
model = self.app.model
|
||||
view = self.make_view()
|
||||
|
|
103
tests/views/test_upgrades.py
Normal file
103
tests/views/test_upgrades.py
Normal file
|
@ -0,0 +1,103 @@
|
|||
# -*- coding: utf-8; -*-
|
||||
|
||||
import datetime
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
from wuttaweb.views import upgrades as mod
|
||||
from tests.util import WebTestCase
|
||||
|
||||
|
||||
class TestUpgradeView(WebTestCase):
|
||||
|
||||
def make_view(self):
|
||||
return mod.UpgradeView(self.request)
|
||||
|
||||
def test_includeme(self):
|
||||
self.pyramid_config.include('wuttaweb.views.upgrades')
|
||||
|
||||
def test_configure_grid(self):
|
||||
model = self.app.model
|
||||
view = self.make_view()
|
||||
|
||||
# sanity / coverage check
|
||||
grid = view.make_grid(model_class=model.Upgrade)
|
||||
view.configure_grid(grid)
|
||||
|
||||
def test_grid_row_class(self):
|
||||
model = self.app.model
|
||||
enum = self.app.enum
|
||||
upgrade = model.Upgrade(description="test", status=enum.UpgradeStatus.PENDING)
|
||||
data = dict(upgrade)
|
||||
view = self.make_view()
|
||||
|
||||
self.assertIsNone(view.grid_row_class(upgrade, data, 1))
|
||||
|
||||
upgrade.status = enum.UpgradeStatus.EXECUTING
|
||||
self.assertEqual(view.grid_row_class(upgrade, data, 1), 'has-background-warning')
|
||||
|
||||
upgrade.status = enum.UpgradeStatus.SUCCESS
|
||||
self.assertIsNone(view.grid_row_class(upgrade, data, 1))
|
||||
|
||||
upgrade.status = enum.UpgradeStatus.FAILURE
|
||||
self.assertEqual(view.grid_row_class(upgrade, data, 1), 'has-background-warning')
|
||||
|
||||
def test_configure_form(self):
|
||||
model = self.app.model
|
||||
enum = self.app.enum
|
||||
user = model.User(username='barney')
|
||||
self.session.add(user)
|
||||
upgrade = model.Upgrade(description='test', created_by=user,
|
||||
status=enum.UpgradeStatus.PENDING)
|
||||
self.session.add(upgrade)
|
||||
self.session.commit()
|
||||
view = self.make_view()
|
||||
|
||||
# some fields exist when viewing
|
||||
with patch.object(view, 'viewing', new=True):
|
||||
form = view.make_form(model_class=model.Upgrade, model_instance=upgrade)
|
||||
self.assertIn('created', form)
|
||||
view.configure_form(form)
|
||||
self.assertIn('created', form)
|
||||
|
||||
# but then are removed when creating
|
||||
with patch.object(view, 'creating', new=True):
|
||||
form = view.make_form(model_class=model.Upgrade)
|
||||
self.assertIn('created', form)
|
||||
view.configure_form(form)
|
||||
self.assertNotIn('created', form)
|
||||
|
||||
# test executed field when viewing
|
||||
with patch.object(view, 'viewing', new=True):
|
||||
|
||||
# executed is *not* shown by default
|
||||
form = view.make_form(model_class=model.Upgrade, model_instance=upgrade)
|
||||
self.assertIn('executed', form)
|
||||
view.configure_form(form)
|
||||
self.assertNotIn('executed', form)
|
||||
|
||||
# but it *is* shown if upgrade is executed
|
||||
upgrade.executed = datetime.datetime.now()
|
||||
form = view.make_form(model_class=model.Upgrade, model_instance=upgrade)
|
||||
self.assertIn('executed', form)
|
||||
view.configure_form(form)
|
||||
self.assertIn('executed', form)
|
||||
|
||||
def test_objectify(self):
|
||||
model = self.app.model
|
||||
enum = self.app.enum
|
||||
user = model.User(username='barney')
|
||||
self.session.add(user)
|
||||
self.session.commit()
|
||||
view = self.make_view()
|
||||
|
||||
# user and status are auto-set when creating
|
||||
self.request.user = user
|
||||
self.request.method = 'POST'
|
||||
self.request.POST = {'description': "new one"}
|
||||
with patch.object(view, 'creating', new=True):
|
||||
form = view.make_model_form()
|
||||
self.assertTrue(form.validate())
|
||||
upgrade = view.objectify(form)
|
||||
self.assertEqual(upgrade.description, "new one")
|
||||
self.assertIs(upgrade.created_by, user)
|
||||
self.assertEqual(upgrade.status, enum.UpgradeStatus.PENDING)
|
Loading…
Add table
Add a link
Reference in a new issue