def test_get_right(self): rep = TicketRepository() ticket_id = rep.create(seance_id='5bd897f8af13c78fe908cb98', seat_number=1) ticket1 = rep.get(ticket_id) ticket2 = Ticket(ticket_id=fields.ObjectId(ticket_id), seance_id='5bd897f8af13c78fe908cb98', seat_number=1) self.assertEqual(ticket1, ticket2) rep.delete(ticket_id)
def test_get(self, mock_ticket): tickets = [] ticket = Ticket(ticket_id="123", seance_id="012", seat_number=1) tickets.append(ticket) mock_ticket.return_value.read_paginated.return_value = tickets, False, True tr = TicketListResource() res = tr.get() self.assertEqual(res.status_code, 200)
def get(self, ticket_id): if self.exists(ticket_id): ticket = Tickets.query.get(ticket_id) return Ticket(ticket_id=ticket.mongo_id, seance_id=ticket.seance_id, seat_number=ticket.seat_number) else: return None
def test_get_right(self): tr = TicketResource() tcr = TicketCreateResource() res = tcr.post() ticket = Ticket.from_json(res.data) gtr = GatewayTicketResource() res = gtr.get(str(ticket.id)) self.assertEqual(res.status_code, 200) tr.delete(str(ticket.id))
def test_delete_right(self): payload = {'seance_id': '5bd897f8af13c78fe908cb98', 'seat_number': 7} res = requests.post(current_config.GATEWAY_URL + current_config.GATEWAY_PATH + '/tickets/buy', data=jsonpickle.encode(payload)) ticket = Ticket.from_json(res.content) ret_ticket = GatewayReturnTicket() res = ret_ticket.delete(str(ticket.id)) self.assertEqual(res.status_code, 204)
def read_paginated(self, page_number, page_size): tickets = [] tickets_paged = Tickets.query.paginate(page=page_number, per_page=page_size) for ticket in tickets_paged.items: tickets.append( Ticket(ticket_id=ticket.mongo_id, seance_id=ticket.seance_id, seat_number=ticket.seat_number)) is_prev_num = (tickets_paged.prev_num > 0) is_next_num = (tickets_paged.next_num <= tickets_paged.pages) return tickets, is_prev_num, is_next_num
def delete(self, ticket_id): app.logger.info('Получен запрос на возврат билета') response = requests.get(current_config.TICKET_SERVICE_URL + current_config.TICKET_SERVICE_PATH + "/%s" % ticket_id) if response.status_code == 200: app.logger.info( 'Запрос на получение информации о билете с идентификатором %s успешно обработан' % ticket_id) else: app.logger.warning( 'Информация о билете с идентификатором %s не может быть получена' % ticket_id) result = flask.Response(status=response.status_code, headers=response.headers.items(), response=response.content) return result ticket = Ticket.from_json( response.content) #jsonpickle.decode(response.content) payload1 = {'seat_number': ticket.seat_number, 'status': 'return'} response = requests.patch( current_config.SEANCE_SERVICE_URL + current_config.SEANCE_SERVICE_PATH + "/%s" % ticket.seance_id, jsonpickle.encode(payload1)) if response.status_code == 201: app.logger.info('Освобождение места на сеансе успешно завершен') else: app.logger.warning( 'Освобождение места на сеансе не может быть завершено') result = flask.Response(status=response.status_code, headers=response.headers.items(), response=response.content) return result payload3 = {'ticket_id': ticket_id, 'status': 'return'} response = requests.patch( current_config.USER_SERVICE_URL + current_config.USER_SERVICE_PATH + "/%s" % self.user_id, jsonpickle.encode(payload3)) if response.status_code == 201: app.logger.info( 'Возврат билета для пользователя %s успешно произведен' % self.user_id) else: payload1['status'] = 'buy' requests.patch( current_config.SEANCE_SERVICE_URL + current_config.SEANCE_SERVICE_PATH + "/%s" % ticket.seance_id, jsonpickle.encode(payload1)) app.logger.warning( 'Возврат билета для пользователя %s не может быть произведен' % self.user_id) result = flask.Response(status=response.status_code, headers=response.headers.items(), response=response.content) return result response = requests.delete(current_config.TICKET_SERVICE_URL + current_config.TICKET_SERVICE_PATH + "/%s" % ticket_id) result = flask.Response(status=response.status_code, headers=response.headers.items(), response=response.content) if response.status_code == 204: app.logger.info('Билет с идентификатором %s успешно удален' % ticket_id) else: payload1['status'] = 'buy' requests.patch( current_config.SEANCE_SERVICE_URL + current_config.SEANCE_SERVICE_PATH + "/%s" % ticket.seance_id, jsonpickle.encode(payload1)) payload3['status'] = 'buy' requests.patch( current_config.USER_SERVICE_URL + current_config.USER_SERVICE_PATH + "/%s" % self.user_id, jsonpickle.encode(payload3)) app.logger.warning( 'Билет с идентификатором %s не может быть удален' % ticket_id) return result
def post(self): app.logger.info('Получен запрос на покупку билета') payload = jsonpickle.decode(flask.request.data) payload1 = {'seat_number': payload["seat_number"], 'status': 'buy'} response = requests.patch( current_config.SEANCE_SERVICE_URL + current_config.SEANCE_SERVICE_PATH + "/%s" % payload["seance_id"], jsonpickle.encode(payload1)) result = flask.Response(status=response.status_code, headers=response.headers.items(), response=response.content) if result.status_code != 201: app.logger.error( 'Покупка билета на сеанс с идентификатором %s не может быть выполнена' % payload["seance_id"]) return result else: app.logger.info( 'Место на сеанс с идентификатором %s для пользователя с идентификатором %s успешно занято' % (payload["seance_id"], self.user_id)) response = requests.post( current_config.TICKET_SERVICE_URL + current_config.TICKET_SERVICE_PATH + current_config.CREATE_PATH, jsonpickle.encode(payload)) ticket = Ticket.from_json( response.content) #jsonpickle.decode(response.content) if response.status_code == 201: app.logger.info('Билет с идентификатором %s успешно создан' % str(ticket.id)) else: payload1['status'] = 'return' requests.patch( current_config.SEANCE_SERVICE_URL + current_config.SEANCE_SERVICE_PATH + "/" + payload["seance_id"], jsonpickle.encode(payload1)) app.logger.warning('Билет не может быть создан') result = flask.Response(status=response.status_code, headers=response.headers.items(), response=response.content) return result result = flask.Response(status=response.status_code, headers=response.headers.items(), response=response.content) payload3 = {'ticket_id': str(ticket.id), 'status': 'buy'} response = requests.patch( current_config.USER_SERVICE_URL + current_config.USER_SERVICE_PATH + "/%s" % self.user_id, jsonpickle.encode(payload3)) if response.status_code == 201: app.logger.info( 'Покупка билета для пользователя успешно произведена') else: result = flask.Response(status=response.status_code, headers=response.headers.items(), response=response.content) payload1['status'] = 'return' requests.patch( current_config.SEANCE_SERVICE_URL + current_config.SEANCE_SERVICE_PATH + "/" + payload["seance_id"], jsonpickle.encode(payload1)) requests.delete(current_config.TICKET_SERVICE_URL + current_config.TICKET_SERVICE_PATH + "/" + payload3['ticket_id']) app.logger.warning('Покупка билета не может быть завершена') return result
def test_get_right(self, mock_ticket): ticket = Ticket(ticket_id="123", seance_id="012", seat_number=1) mock_ticket.return_value.get.return_value = ticket tr = TicketResource() res = tr.get("123") self.assertEqual(res.status_code, 200)