def test_end_appointment(client): db.inicialize() lastId = db.getLast() physician_id = "ea959b03-5577-45c9-b9f7-a45d3e77ce82" patient_id = "86158d46-ce33-4e3d-9822-462bbff5782e" request_payload = {"id": str(lastId[0]["_id"])} response = client.post("/end", json=request_payload) result = response.get_json() assert response.status_code == 200 assert result is not None assert "payload" in result assert "id" in result['payload'] assert result['payload']['id'] == request_payload['id'] assert "physician_id" in result['payload'] assert result['payload']['physician_id'] == physician_id assert "patient_id" in result['payload'] assert result['payload']['patient_id'] == patient_id assert "end_date" in result['payload'] assert validate_datetime(result['payload']['end_date']) assert "price" in result['payload']
def callback(ch, method, properties, body): print(" [x] Received %s" % body) payload = json.loads(body.decode()) print(" [x] Saving financial entry in the database") db.inicialize() db.save(payload) print(" [x] Done") ch.basic_ack(delivery_tag=method.delivery_tag)
def start_appointment(start_date, physician_id, patient_id): db.inicialize() payload = { "start_date": start_date, "physician_id": physician_id, "patient_id": patient_id } item_id = db.insert(dict(payload)) payload["id"] = item_id return payload
def end_appointment(item_id): db.inicialize() item = db.get(item_id) start_date = datetime.strptime(item["start_date"], '%Y-%m-%d %H:%M:%S') end_date = datetime.now() timedelta = end_date - start_date hours = (timedelta.seconds % 3600) + 1 price = hours * PRICE_BY_HOUR item["end_date"] = end_date.strftime("%Y-%m-%d %H:%M:%S") item["price"] = price if (db.save(item)): payload = { "id": item_id, "start_date": item["start_date"], "physician_id": item["physician_id"], "patient_id": item["patient_id"], "end_date": item["end_date"], "price": item["price"], } financial_payload = json.dumps({ "appointment_id": item_id, # id da consulta "total_price": item["price"], }) # register a RabbitMQ message credentials = pika.PlainCredentials('guest', 'guest') parameters = pika.ConnectionParameters('rabbit', 5672, '/', credentials) connection = pika.BlockingConnection(parameters) channel = connection.channel() channel.queue_declare(queue='financial_queue', durable=True) channel.basic_publish( exchange='', routing_key='financial_queue', body=financial_payload, properties=pika.BasicProperties( delivery_mode=2, # make message persistent )) connection.close() return payload else: return False
def test_end_appointment(): db.inicialize() lastItem = db.getLast() lastId = str(lastItem[0]["_id"]) item_id = lastId physician_id = "ea959b03-5577-45c9-b9f7-a45d3e77ce82" patient_id = "86158d46-ce33-4e3d-9822-462bbff5782e" item = end_appointment(item_id) assert "id" in item assert item['id'] == lastId assert "physician_id" in item assert item['physician_id'] == physician_id assert "patient_id" in item assert item['patient_id'] == patient_id assert "end_date" in item assert validate_datetime(item['end_date']) assert "price" in item