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
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
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
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