Esempio n. 1
0
def test_body_field_required(post_user):
    author = get_user_by_username('post_user')
    failing_post = Post(title='Testing', author=author)
    db.session.add(failing_post)

    with pytest.raises(IntegrityError) as excinfo:
        db.session.commit()
    assert 'NOT NULL constraint failed: post.body' in str(excinfo.value)
Esempio n. 2
0
def test_default_values(post_user):
    author = get_user_by_username('post_user')
    post = Post(title='Testing', body='Test Body', author=author)
    db.session.add(post)
    db.session.commit()

    new_post = Post.query.filter_by(title='Testing').first()
    assert new_post.status == Post.DRAFT
    assert new_post.created_on is not None
    assert new_post.modified_on is not None
def test_user_posts_only_filters_out_posts(users_with_posts):
    author2 = get_user_by_username('post_user2')
    posts = get_posts(user=author2, user_posts_only=True)
    post_ids = [post.id for post in posts]

    user_post_ids = Post.query.with_entities(
        Post.id).filter_by(user_id=author2.id).all()

    assert all([post_id[0] in post_ids for post_id in user_post_ids])
    assert len(post_ids) == len(user_post_ids)
Esempio n. 4
0
def test_cascade_delete(post_user):
    author = get_user_by_username('post_user')
    post = Post(title='Testing', body='Test Body', author=author)
    db.session.add(post)
    db.session.commit()

    db.session.delete(author)
    db.session.commit()

    new_post = Post.query.filter_by(title='Testing').first()
    assert new_post is None
Esempio n. 5
0
def test_status_can_have_choices_only(post_user):
    author = get_user_by_username('post_user')

    with pytest.raises(KeyError) as excinfo:
        post = Post(
            title='Testing',
            body='Test Body', 
            status='ABC',
            author=author
        )
    
    assert 'ABC' in str(excinfo.value) 
Esempio n. 6
0
def test_post_created_with_minimum_fields(post_user):
    title = 'Test'
    body = 'Testing Post'
    author = get_user_by_username('post_user')
    post = Post(title=title, body=body, author=author)
    db.session.add(post)
    db.session.commit()
    
    new_post = Post.query.filter_by(title='Test').first()
    assert new_post.title == title
    assert new_post.body == body
    assert new_post.author == author
def test_result_sorted_by_created_on(users_with_posts):
    author2 = get_user_by_username('post_user2')
    posts = get_posts(user=author2)

    print(posts)
    for idx, post in enumerate(posts):
        try:
            next_post = posts[idx + 1]
            timedelta = post.created_on - next_post.created_on
            assert timedelta.microseconds > 0
        except IndexError:
            pass
def test_all_user_posts_are_included(users_with_posts):
    author1 = get_user_by_username('post_user1')
    posts = get_posts(user=author1)
    post_ids = [post.id for post in posts]

    published_post_ids = Post.query.with_entities(
        Post.id).filter_by(status=Post.PUBLISHED).values()

    user_post_ids = Post.query.with_entities(
        Post.id).filter_by(user_id=author1.id).values()

    assert all([post_id in post_ids for post_id in published_post_ids])
    assert all([post_id in post_ids for post_id in user_post_ids])
Esempio n. 9
0
def test_modified_date_changes(post_user):
    author = get_user_by_username('post_user')
    post = Post(title='Testing', body='Test Body', author=author)
    db.session.add(post)
    db.session.commit()

    assert post.modified_on is not None

    old_value = post.modified_on
    # update the post
    post.title = 'Published'
    db.session.commit()

    timedelta = post.modified_on - old_value
    assert timedelta.microseconds > 0
Esempio n. 10
0
def test_method_called_with_user_posts_only_argument_for_query_params(test_client, users_with_posts):

    m_get_posts = mock.MagicMock(return_value=[])

    with mock.patch('api.post.views.get_posts', m_get_posts):
        headers = {'Authorization': 'Token post_user2_token'}
        response = test_client.get('/posts?filter=mine', headers=headers)

        assert m_get_posts.called
        args, kwargs = m_get_posts.call_args

        assert args == ()
        assert kwargs == {
            'user': get_user_by_username('post_user2'),
            'user_posts_only': True
        }
Esempio n. 11
0
def test_method_called_with_user_for_logged_in_user(test_client, users_with_posts):

    m_get_posts = mock.MagicMock(return_value=[])

    with mock.patch('api.post.views.get_posts', m_get_posts):
        headers = {'Authorization': 'Token post_user1_token'}
        response = test_client.get('/posts', headers=headers)

        assert m_get_posts.called
        args, kwargs = m_get_posts.call_args

        assert args == ()
        assert kwargs == {
            'user': get_user_by_username('post_user1'),
            'user_posts_only': False
        }
def test_post_author_is_logged_in_user(test_client, user_with_hashed_password):
    data = {
        'title': 'Post 1',
        'body': 'First post',
        'status': Post.PUBLISHED
    }
    headers = {
        'Authorization': 'Token secret_token_3'
    }
    response = test_client.post(
        '/posts', data=data, headers=headers
    )

    expected_user = get_user_by_username('new_user_with_hashed_password')
    post = Post.query.get(json.loads(response.data)['id'])
    assert post.user_id == expected_user.id
Esempio n. 13
0
def test_create_post_creates_new_post(post_user):
    title = 'Testing Post'
    body = 'Thisi is a test'
    status = Post.UNPUBLISHED
    author = get_user_by_username('post_user')

    initial_count = Post.query.count()
    post = create_post(
        title=title,
        body=body,
        status=status,
        author=author
    )
    
    assert isinstance(post, Post)
    assert post.title == title
    assert post.body == body
    assert post.status == status
    assert post.author == author
    assert Post.query.count() == initial_count + 1
def test_given_username_get_user_by_username_returns_user(init_database):
    username = '******'
    user = get_user_by_username(username)
    assert isinstance(user, User)
    assert user.username == 'testing_user1'
def test_given_invalid_username_get_user_by_username_returns_none(init_database):
    username = '******'
    user = get_user_by_username(username)
    assert user is None