예제 #1
0
def test_update_common_task_offices(c):
    task = Task.get_first_common()
    unchecked_office = task.offices[0]
    checked_office = task.offices[1]
    unchecked_office_tickets_numbers = [
        ticket.number
        for ticket in Serial.query.filter_by(task_id=task.id,
                                             office_id=unchecked_office.id)
    ]
    old_name = task.name
    new_name = f'{uuid4()}'.replace('-', '')

    c.post(f'/task/{task.id}',
           data={
               'name': new_name,
               f'check{checked_office.id}': True
           },
           follow_redirects=True)

    updated_task = Task.query.filter_by(name=new_name).first()

    assert Task.query.filter_by(name=old_name).first() is None
    assert updated_task is not None
    assert len(task.offices) > len(updated_task.offices)
    assert checked_office.id in ids(updated_task.offices)
    assert unchecked_office.id not in ids(updated_task.offices)

    # Test unchecked office tickets were migrated
    for number in unchecked_office_tickets_numbers:
        ticket = Serial.query.filter_by(number=number).first()

        assert ticket is not None
        assert ticket.office_id != unchecked_office.id
예제 #2
0
파일: core.py 프로젝트: picsldev/FQM
def test_pull_tickets_from_common_task(_, c):
    with c.application.app_context():
        # NOTE: Disabling strict pulling
        settings = Settings.get()
        settings.strict_pulling = False
        db.session.commit()

        task = Task.get_first_common()
        office = choice(task.offices)
        ticket_to_be_pulled = Serial.query.order_by(Serial.number)\
                                          .filter(Serial.number != 100, Serial.p != True,
                                                  Serial.task_id == task.id)\
                                          .first()

    response = c.get(f'/pull/{task.id}/{office.id}', follow_redirects=True)
    pulled_ticket = Serial.query.filter_by(number=ticket_to_be_pulled.number,
                                           office_id=office.id,
                                           task_id=task.id,
                                           p=True)\
                                .order_by(Serial.number)\
                                .first()

    assert response.status == '200 OK'
    assert ticket_to_be_pulled is not None
    assert ticket_to_be_pulled.p is False
    assert pulled_ticket is not None
    assert pulled_ticket.task_id == task.id
    assert pulled_ticket.office_id == office.id
예제 #3
0
def test_list_office_with_common_task(c):
    task = Task.get_first_common()
    office = choice(task.offices)
    tickets = Serial.all_office_tickets(office.id)\
                    .filter(Serial.number != 100)\
                    .order_by(Serial.p, Serial.timestamp.desc())\
                    .limit(10)

    response = c.get(f'/offices/{office.id}', follow_redirects=True)
    page_content = response.data.decode('utf-8')

    assert response.status == '200 OK'

    for ticket in tickets:
        assert f'<b> {office.prefix}{ticket.number}.</b>' in page_content
예제 #4
0
def test_pull_tickets_from_common_task(_, c):
    settings = Settings.get()
    settings.strict_pulling = False
    db.session.commit()
    task = Task.get_first_common()
    office = choice(task.offices)
    ticket_to_be_pulled = do_until_truthy(
        fill_tickets, lambda: Serial.query.order_by(Serial.number).filter(
            Serial.number != 100, Serial.p != True, Serial.task_id == task.id).
        first())

    response = c.get(f'/pull/{task.id}/{office.id}', follow_redirects=True)
    pulled_ticket = Serial.get(ticket_to_be_pulled.id)

    assert response.status == '200 OK'
    assert ticket_to_be_pulled is not None
    assert ticket_to_be_pulled.p is False
    assert pulled_ticket is not None
    assert pulled_ticket.task_id == task.id
    assert pulled_ticket.office_id == office.id