def test_add_post_ok(form_intercept, set_mock, user, blog_id, blog, result_url, draft, tags, forbid_comment): set_mock({ '/topic/add/': (None, { 'headers': {'location': result_url}, 'status': 302, 'status_msg': 'Found' } )}) @form_intercept('/topic/add/') def topic_add(data, headers): assert data.get('blog_id') == [text(blog_id if blog_id is not None else 0).encode('utf-8')] assert data.get('security_ls_key') == [b'0123456789abcdef0123456789abcdef'] assert data.get('topic_title') == ['Т0'.encode('utf-8')] assert data.get('topic_text') == ['Б1'.encode('utf-8')] assert data.get('topic_tags') == ['Т2, Т3'.encode('utf-8')] if draft: assert data.get('submit_topic_save') == ['Сохранить в черновиках'.encode('utf-8')] else: assert data.get('submit_topic_publish') == ['Опубликовать'.encode('utf-8')] if forbid_comment: assert data.get('topic_forbid_comment') == [b'1'] else: assert 'topic_forbid_comment' not in data result = user.add_post(blog_id, 'Т0', 'Б1', tags, forbid_comment, draft=draft) assert result == (blog, 1)
def test_add_post_error(set_mock, user): set_mock({'/topic/add/': 'topic_add_error.html'}) with pytest.raises(api.TabunResultError) as excinfo: user.add_post(None, '', '', []) assert excinfo.value.message == 'Поле Заголовок слишком короткое (минимально допустимо 2 символов)'