def route(self, r: Request):
        with r / None:
            return {"test": 1}

        with r / 'items':
            with r / Integer() as [item_index]:
                with r.get:
                    return self._inventory[item_index]

                with r.put:
                    item = r.entity(InventoryItem)
                    self._inventory[item_index] = item
                    return item

                with r.delete:
                    item = self._inventory[item_index]
                    del self._inventory[item_index]
                    return item

            with r.end:
                with r.get:
                    return self._inventory

                with r.post:
                    item = r.entity(InventoryItem)
                    self._inventory.append(item)
                    return item
Exemple #2
0
def test_with_request_matcher():
    r = Request(Request.GET, Url(path='/items/5'))

    with is_set() as flag:
        with r / 'items':
            flag.set()

    with is_set(False) as flag:
        with r / 'books':
            flag.set()

    with is_set() as flag:
        with r / 'items' / Integer() as item_id:
            assert 5 == item_id
            flag.set()

    with is_set() as flag:
        with r / 'items' / Integer as item_id:
            assert 5 == item_id
            flag.set()

    with is_set(False) as flag:
        with r / 'items' / None as item_id:
            assert 5 == item_id
            flag.set()

    with is_set() as flag:
        with r / 'items' / Integer / None as item_id:
            assert 5 == item_id
            flag.set()
Exemple #3
0
def test_for_request_matcher():
    r = Request(Request.GET, Url(path='/items/5'))

    with is_set() as flag:
        for _ in r / 'items':
            flag.set()

    with is_set(False) as flag:
        for _ in r / 'books':
            flag.set()

    with is_set() as flag:
        for item_id in r / 'items' / Integer():
            assert 5 == item_id
            flag.set()

    with is_set() as flag:
        for item_id in r / 'items' / Integer():
            assert 5 == item_id
            flag.set()

    with is_set(False) as flag:
        for item_id in r / 'items' / None:
            assert 5 == item_id
            flag.set()

    with is_set() as flag:
        for book_id in r / 'items' / Integer / None:
            assert 5 == book_id
            flag.set()
Exemple #4
0
def test_with_multiple_request_matcher():
    r = Request(Request.GET, Url(path='/books/1/pages/2'))

    with is_set() as flag:
        with r / 'books':
            flag.set()

    with is_set() as flag:
        with r / 'books' / Integer as book_id:
            assert 1 == book_id
            flag.set()

    with is_set() as flag:
        with r / 'books' / Integer / 'pages' as book_id:
            assert 1 == book_id
            flag.set()

    with is_set() as flag:
        with r / 'books' / Integer / 'pages' / Integer as [book_id, page]:
            assert 1 == book_id
            assert 2 == page
            flag.set()

    with is_set() as flag:
        with r / 'books' / Integer / 'pages' / Integer / None as [
                book_id, page
        ]:
            assert 1 == book_id
            assert 2 == page
            flag.set()
Exemple #5
0
def test_for_multiple_request_matcher():
    r = Request(Request.GET, Url(path='/books/1/pages/2'))

    with is_set() as flag:
        for _ in r / 'books':
            flag.set()

    with is_set() as flag:
        for book_id in r / 'books' / Integer:
            assert 1 == book_id
            flag.set()

    with is_set() as flag:
        for book_id in r / 'books' / Integer / 'pages':
            assert 1 == book_id
            flag.set()

    with is_set() as flag:
        for book_id, page in r / 'books' / Integer / 'pages' / Integer:
            assert 1 == book_id
            assert 2 == page
            flag.set()

    with is_set() as flag:
        for book_id, page in r / 'books' / Integer / 'pages' / Integer / None:
            assert 1 == book_id
            assert 2 == page
            flag.set()
Exemple #6
0
def test_raw_request_matcher():
    request = Request(Request.GET, Url(path='/items/5'))
    assert (request / 'items').is_match is True
    assert (request / 'books').is_match is False
    assert (request / 'items' / Integer()).is_match is True
    assert (request / 'items' / Integer).is_match is True
    assert (request / 'items' / None).is_match is False
    assert (request / 'items' / Integer / None).is_match is True
    def handle_items(self, r: Request):
        with r / Integer as item_index:
            with r.get:
                return self._inventory[item_index]

            with r.put:
                item = r.entity(InventoryItem)
                self._inventory[item_index] = item
                return item

            with r.delete:
                item = self._inventory[item_index]
                del self._inventory[item_index]
                return item

        with r.end:
            with r.get:
                return self._inventory

            with r.post:
                item = r.entity(InventoryItem)
                self._inventory.append(item)
                return item
Exemple #8
0
def test_raw_multiple_request_matcher():
    request = Request(Request.GET, Url(path='/books/1/pages/2'))
    assert (request / 'books').is_match is True
    assert (request / 'books' / Integer).is_match is True
    assert (request / 'books' / Integer / 'pages').is_match is True
    assert (request / 'books' / Integer / 'pages' / Integer).is_match is True
Exemple #9
0
def test_entity_without_path(test_input, obj_type, expected):
    r = Request(Request.POST,
                Url(path='/path'),
                content=test_input,
                unmarshaller=JSONUnmarshaller().unmarshall)
    assert expected == r.entity(obj_type)
 def route(self, r: Request):
     with r.post:
         item = r.entity(InventoryItem)
         self._inventory.append(item)
         return item