コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
ファイル: ticket_repository.py プロジェクト: AnkoSkl/rsoi
 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
コード例 #4
0
ファイル: gateway_cov_test.py プロジェクト: AnkoSkl/rsoi
 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))
コード例 #5
0
ファイル: gateway_cov_test.py プロジェクト: AnkoSkl/rsoi
 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)
コード例 #6
0
ファイル: ticket_repository.py プロジェクト: AnkoSkl/rsoi
 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
コード例 #7
0
ファイル: gateway_api.py プロジェクト: AnkoSkl/rsoi
    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
コード例 #8
0
ファイル: gateway_api.py プロジェクト: AnkoSkl/rsoi
    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
コード例 #9
0
 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)