コード例 #1
0
ファイル: test_task.py プロジェクト: codacy-badger/fastlane
def test_task_get_tasks(client):
    """Test getting tasks"""
    Task.create_task(str(uuid4()))
    Task.create_task(str(uuid4()))

    tasks = Task.get_tasks()
    expect(tasks.total).to_equal(2)
コード例 #2
0
ファイル: test_task.py プロジェクト: codacy-badger/fastlane
def test_task_get_tasks_pagination(client):
    """Test getting tasks pagination"""
    Task.create_task(str(uuid4()))
    Task.create_task(str(uuid4()))
    Task.create_task(str(uuid4()))

    tasks = Task.get_tasks(page=1, per_page=1)
    expect(tasks.total).to_equal(3)
    expect(tasks.pages).to_equal(3)
    expect(tasks.items).to_length(1)

    expect(tasks.has_next).to_be_true()
    expect(tasks.has_prev).to_be_false()
コード例 #3
0
ファイル: task.py プロジェクト: arturfsousa/fastlane
def get_tasks():
    logger = g.logger.bind(operation="get_tasks")

    try:
        page = int(request.args.get('page', 1))
    except ValueError:
        logger.error(f"Tasks pagination page param should be an integer.")
        abort(404)

    per_page = current_app.config["PAGINATION_PER_PAGE"]

    logger.debug(f"Getting tasks page={page} per_page={per_page}...")
    paginator = Task.get_tasks(page=page, per_page=per_page)

    logger.debug("Tasks retrieved successfully...")

    tasks_url = url_for("task.get_tasks", _external=True)
    next_url = None
    if paginator.has_next:
        next_url = f'{tasks_url}?page={paginator.next_num}'

    prev_url = None
    if paginator.has_prev:
        prev_url = f'{tasks_url}?page={paginator.prev_num}'

    data = {
        "items": [],
        "total": paginator.total,
        "page": paginator.page,
        "pages": paginator.pages,
        "perPage": paginator.per_page,
        "hasNext": paginator.has_next,
        "hasPrev": paginator.has_prev,
        "nextUrl": next_url,
        "prevUrl": prev_url,
    }

    for task in paginator.items:
        data['items'].append(task.to_dict())

    return jsonify(data)