Esempio n. 1
0
def test_page_defaults_with_page_schema():
    graph = create_object_graph(name="example", testing=True)

    with graph.flask.test_request_context():
        page = Page.from_query_string(PageSchema().load({}).data)

    assert_that(page.to_dict(), is_(equal_to({"offset": 0, "limit": 20})))
Esempio n. 2
0
def test_page_from_query_string():
    graph = create_object_graph(name="example", testing=True)

    with graph.flask.test_request_context():
        qs = load_query_string_data(PageSchema())
        page = Page.from_query_string(qs)
        assert_that(page.offset, is_(equal_to(0)))
        assert_that(page.limit, is_(equal_to(20)))
Esempio n. 3
0
def configure_search_feed_by_user_routes(graph):
    """
    Endpoint for list of tweets posted by users the given user is following.

    """
    controller = graph.user_controller

    mappings = {
        Operation.SearchFor: EndpointDefinition(
            func=controller.search_feed_by_user,
            request_schema=PageSchema(),
            response_schema=TweetSchema(),
        ),
    }

    configure_relation(graph, controller.feed_ns, mappings)
Esempio n. 4
0
def configure_search_followers_by_user_routes(graph):
    """
    Endpoint for list of users following the given user aka followers.

    """
    controller = graph.user_controller

    mappings = {
        Operation.SearchFor: EndpointDefinition(
            func=controller.search_followers_by_user,
            request_schema=PageSchema(),
            response_schema=UserSchema(),
        ),
    }

    configure_relation(graph, controller.followers_ns, mappings)
Esempio n. 5
0
    def configure_discover(self, ns, definition):
        """
        Register a discovery endpoint for a set of operations.

        """
        page_schema = PageSchema()

        @self.graph.route("/", Operation.Discover, ns)
        def discover():
            # accept pagination limit from request
            page = Page.from_query_string(load_query_string_data(page_schema))
            page.offset = 0

            response_data = dict(_links=Links({
                "self":
                Link.for_(Operation.Discover, ns, qs=page.to_tuples()),
                "search": [
                    link for link in iter_links(
                        self.find_matching_endpoints(ns), page)
                ],
            }).to_dict())
            return make_response(response_data)
Esempio n. 6
0
    PersonLookupSchema,
    PersonSchema,
    ADDRESS_ID_1,
    PERSON_ID_1,
    PERSON_ID_2,
    PERSON_ID_3,
)


PERSON_MAPPINGS = {
    Operation.Create: (person_create, NewPersonSchema(), PersonSchema()),
    Operation.Delete: (person_delete,),
    Operation.UpdateBatch: (person_update_batch, NewPersonBatchSchema(), PersonBatchSchema()),
    Operation.Replace: (person_replace, NewPersonSchema(), PersonSchema()),
    Operation.Retrieve: (person_retrieve, PersonLookupSchema(), PersonSchema()),
    Operation.Search: (person_search, PageSchema(), PersonSchema()),
    Operation.Update: (person_update, NewPersonSchema(), PersonSchema()),
}


ADDRESS_MAPPINGS = {
    Operation.Retrieve: (address_retrieve, AddressSchema()),
    Operation.Search: (address_search, PageSchema(), AddressSchema()),
}


class TestCrud(object):

    def setup(self):
        self.graph = create_object_graph(name="example", testing=True)
        person_ns = Namespace(subject=Person)