Beispiel #1
0
def test_pull_tickets_from_all(_, c):
    ticket_to_be_pulled = do_until_truthy(
        fill_tickets, lambda: Serial.query.order_by(Serial.number).filter(
            Serial.number != 100, Serial.p != True).first())

    response = c.get(f'/pull', follow_redirects=True)

    assert response.status == '200 OK'
    assert ticket_to_be_pulled is not None
    assert ticket_to_be_pulled.p is False
    assert Serial.get(
        ticket_to_be_pulled.id).number == ticket_to_be_pulled.number
    assert Serial.get(ticket_to_be_pulled.id).p is True
Beispiel #2
0
def test_update_ticket(c):
    ticket = Serial.get()

    if not ticket.p:
        ticket.pull(ticket.office.id)

    assert ticket.status != TICKET_UNATTENDED

    c.post(f'/serial_u/{ticket.id}/testing',
           data={
               'value': ticket.name,
               'printed': not ticket.n,
               'status': TICKET_UNATTENDED
           })

    assert Serial.get(ticket.id).status == TICKET_UNATTENDED
Beispiel #3
0
def test_delete_ticket(c):
    ticket = Serial.all_clean().first()
    auth_token = AuthTokens.get()
    response = c.delete(f'{BASE}/{ticket.id}',
                        follow_redirects=True,
                        headers={'Authorization': auth_token.token})

    assert response.status == '204 NO CONTENT'
    assert response.data == b''
    assert Serial.get(ticket.id) is None
Beispiel #4
0
def test_get_ticket(c):
    ticket = Serial.all_clean().first()
    auth_token = AuthTokens.get()
    response = c.get(f'{BASE}/{ticket.id}',
                     follow_redirects=True,
                     headers={'Authorization': auth_token.token})

    assert response.status == '200 OK'
    assert Serial.get(response.json.get('id')).id == ticket.id
    assert all(p in response.json for p in get_module_columns(Serial)) is True
Beispiel #5
0
def test_pull_ticket(c):
    auth_token = AuthTokens.get()
    response = c.get(f'{BASE}/pull',
                     follow_redirects=True,
                     headers={'Authorization': auth_token.token})
    ticket = Serial.get(response.json.get('id'))

    assert response.status == '200 OK'
    assert ticket is not None
    assert ticket.p is True
    assert all(p in response.json for p in get_module_columns(Serial)) is True
Beispiel #6
0
        def put(self, ticket_id):
            ''' Update a specific ticket. '''
            ticket = Serial.get(ticket_id)

            if not ticket:
                abort(message='Ticket not found', code=HTTPStatus.NOT_FOUND)

            api.payload.pop('id', '')
            ticket.query.update(api.payload)
            db.session.commit()
            return ticket, HTTPStatus.OK
Beispiel #7
0
def test_update_ticket(c):
    ticket = Serial.all_clean().first()
    new_name = 'new testing name'
    auth_token = AuthTokens.get()
    response = c.put(f'{BASE}/{ticket.id}',
                     follow_redirects=True,
                     headers={'Authorization': auth_token.token},
                     json={'name': new_name})

    assert response.status == '200 OK'
    assert Serial.get(response.json.get('id')).name == new_name
    assert all(p in response.json for p in get_module_columns(Serial)) is True
Beispiel #8
0
def test_list_tickets(c):
    auth_token = AuthTokens.get()
    response = c.get(BASE,
                     follow_redirects=True,
                     headers={'Authorization': auth_token.token})

    assert response.status == '200 OK'
    assert len(response.json) > 0
    assert LIMIT_PER_CHUNK > len(response.json)

    for t in response.json:
        assert Serial.get(t.get('id')) is not None
        assert all(p in t for p in get_module_columns(Serial)) is True
Beispiel #9
0
        def get(self):
            ''' Pull a ticket from the waiting list. '''
            ticket_id = request.args.get('ticket_id', None, type=int)
            office_id = request.args.get('office_id', None, type=int)
            ticket = Serial.get(ticket_id)

            if ticket_id and not ticket:
                abort(message='Ticket not found', code=HTTPStatus.NOT_FOUND)

            next_ticket = ticket or Serial.get_next_ticket()

            if not next_ticket:
                abort(message='No tickets left to pull',
                      code=HTTPStatus.NOT_FOUND)

            next_ticket.pull(office_id, self.auth_token and self.auth_token.id)
            return next_ticket, HTTPStatus.OK
Beispiel #10
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
Beispiel #11
0
def test_generate_ticket(c):
    name = 'new testing name'
    task = Task.get()
    office = task.offices[0]
    auth_token = AuthTokens.get()
    response = c.post(f'{BASE}',
                      follow_redirects=True,
                      headers={'Authorization': auth_token.token},
                      json={
                          'name': name,
                          'task_id': task.id,
                          'office_id': office.id
                      })
    ticket = Serial.get(response.json.get('id'))

    assert response.status == '200 OK'
    assert ticket is not None
    assert ticket.name == name
    assert ticket.task_id == task.id
    assert ticket.office_id == office.id
    assert all(p in response.json for p in get_module_columns(Serial)) is True