CRUD, FBA (FBV)
Для ускорения разработки CRUD операций, удобно использовать готовые функции (По аналогии с CBV в Django). Они находятся в модуле use и называются FBA (Functions Base Actions).
Список элементов на основе шаблона
list_action_example = use.list_action(
Faq,
template_name='demo/bot/list.html',
)
Пример теста
def test_list_action_example(self):
"""
Test /list_action: success
"""
chat = self.assertCommandWasHandled('/list_action', self.chat)
self.assertIn('list_action', chats.get_last_message(chat).text)
Список элементов на основе шаблона с пагинацией
list_action_pagination_example = use.list_action(
Faq,
template_name='demo/bot/list.html',
pagination=use.list.Pagination(1, call_data_pattern='list_action_pagination {page}')
)
Пример теста
def test_list_action_pagination_example(self):
"""
Test /list_action_pagination and call list_action_pagination <int:page>: success
"""
chat = self.assertCommandWasHandled('/list_action_pagination', self.chat)
last_message = chats.get_last_message(chat)
self.assertIn('Как быстрее писать код для списка', last_message.text)
self.assertKeyboardInMessage(last_message)
chat = self.assertCallWasHandled('list_action_pagination 2', self.chat)
last_message = chats.get_last_message(chat)
self.assertIn('Что это дает', last_message.text)
self.assertKeyboardInMessage(last_message)
Один элемент с pk на основе шаблона
detail_action_example = use.detail_action(
Faq,
'demo/bot/detail.html',
)
Пример теста
def test_detail_action_example(self):
"""
Test /detail_action/<int:pk>: success
"""
# make FAQ
chat = self.assertCommandWasHandled('/detail_action 1', self.chat)
last_message = chats.get_last_message(chat)
self.assertIn('detail_action', last_message.text)
self.assertIn('Использовать detail_action', last_message.text)
Сообщение на основе шаблона и контекста
template_action_example = use.template_action(
'demo/bot/reply.html',
context={
'this': 'Это',
'message': 'сообщение',
'make': 'было создано по шаблону'
}
)
Пример теста
def test_template_action_example(self):
"""
Test /template_action: success
"""
chat = self.assertCommandWasHandled('/template_action', self.chat)
self.assertChatLastMessageTextEqual(
chat,
'<b>Это</b> <i>сообщение</i> было создано по шаблону',
)