def works_with_an_undersized_array_slice_right_side(): c = connection_from_array_slice( letters[2:4], dict(first=3, after="YXJyYXljb25uZWN0aW9uOjE="), slice_start=2, array_length=5, ) assert c == Connection( edges=[ Edge(node="C", cursor="YXJyYXljb25uZWN0aW9uOjI="), Edge(node="D", cursor="YXJyYXljb25uZWN0aW9uOjM="), ], pageInfo=PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjI=", endCursor="YXJyYXljb25uZWN0aW9uOjM=", hasPreviousPage=False, hasNextPage=True, ), )
def respects_last_and_after_and_before_too_few(): c = connection_from_array( letters, dict( last=2, after="YXJyYXljb25uZWN0aW9uOjA=", before="YXJyYXljb25uZWN0aW9uOjQ=", ), ) assert c == Connection( edges=[ Edge(node="C", cursor="YXJyYXljb25uZWN0aW9uOjI="), Edge(node="D", cursor="YXJyYXljb25uZWN0aW9uOjM="), ], pageInfo=PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjI=", endCursor="YXJyYXljb25uZWN0aW9uOjM=", hasPreviousPage=True, hasNextPage=False, ), )
def uses_slice_end_as_default_for_array_length(): c = connection_from_array_slice(letters[:1], dict(first=1), slice_start=0) assert c == Connection( edges=[Edge(node="A", cursor="YXJyYXljb25uZWN0aW9uOjA=")], pageInfo=PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjA=", endCursor="YXJyYXljb25uZWN0aW9uOjA=", hasPreviousPage=False, hasNextPage=False, ), )
def respects_first_and_after_and_before_exactly_right(): c = connection_from_array( letters, dict( first=3, after="YXJyYXljb25uZWN0aW9uOjA=", before="YXJyYXljb25uZWN0aW9uOjQ=", ), ) assert c == Connection( edges=[ Edge(node="B", cursor="YXJyYXljb25uZWN0aW9uOjE="), Edge(node="C", cursor="YXJyYXljb25uZWN0aW9uOjI="), Edge(node="D", cursor="YXJyYXljb25uZWN0aW9uOjM="), ], pageInfo=PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjE=", endCursor="YXJyYXljb25uZWN0aW9uOjM=", hasPreviousPage=False, hasNextPage=False, ), )
def ignores_len_of_slice_if_array_slice_length_provided(): c = connection_from_array_slice(letters[:2], dict(first=2), array_length=2, array_slice_length=1) assert c == Connection( edges=[Edge(node="A", cursor="YXJyYXljb25uZWN0aW9uOjA=")], pageInfo=PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjA=", endCursor="YXJyYXljb25uZWN0aW9uOjA=", hasPreviousPage=False, hasNextPage=True, ), )
def returns_all_elements_if_cursors_are_on_the_outside(): c = connection_from_array( letters, dict( before="YXJyYXljb25uZWN0aW9uOjYK", after="YXJyYXljb25uZWN0aW9uOi0xCg==", ), ) assert c == Connection( edges=[ Edge(node="A", cursor="YXJyYXljb25uZWN0aW9uOjA="), Edge(node="B", cursor="YXJyYXljb25uZWN0aW9uOjE="), Edge(node="C", cursor="YXJyYXljb25uZWN0aW9uOjI="), Edge(node="D", cursor="YXJyYXljb25uZWN0aW9uOjM="), Edge(node="E", cursor="YXJyYXljb25uZWN0aW9uOjQ="), ], pageInfo=PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjA=", endCursor="YXJyYXljb25uZWN0aW9uOjQ=", hasPreviousPage=False, hasNextPage=False, ), )
def uses_default_connection_types(): connection = connection_from_array(letters[:1]) assert isinstance(connection, Connection) edge = connection.edges[0] assert isinstance(edge, Edge) assert len(connection.edges) == 1 assert edge == Edge(node="A", cursor="YXJyYXljb25uZWN0aW9uOjA=") page_info = connection.pageInfo assert isinstance(page_info, PageInfo) assert page_info == PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjA=", endCursor="YXJyYXljb25uZWN0aW9uOjA=", hasPreviousPage=False, hasNextPage=False, )
def provides_deprecated_connection_from_list(): with deprecated_call(): # noinspection PyDeprecation c = connection_from_list( letters[:1], args={}, connection_type=Connection, edge_type=Edge, pageinfo_type=PageInfo, ) assert c == Connection( edges=[Edge(node="A", cursor="YXJyYXljb25uZWN0aW9uOjA=")], pageInfo=PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjA=", endCursor="YXJyYXljb25uZWN0aW9uOjA=", hasPreviousPage=False, hasNextPage=False, ), )
def accepts_custom_connection_type(): class CustomConnection: # noinspection PyPep8Naming def __init__(self, edges, pageInfo): self.edges = edges self.page_info = pageInfo connection = connection_from_array( letters[:1], connection_type=CustomConnection) assert isinstance(connection, CustomConnection) edge = connection.edges[0] assert isinstance(edge, Edge) assert len(connection.edges) == 1 assert edge == Edge(node="A", cursor="YXJyYXljb25uZWN0aW9uOjA=") page_info = connection.page_info assert isinstance(page_info, PageInfo) assert page_info == PageInfo( startCursor="YXJyYXljb25uZWN0aW9uOjA=", endCursor="YXJyYXljb25uZWN0aW9uOjA=", hasPreviousPage=False, hasNextPage=False, )
def accepts_custom_page_info_type(): class CustomPageInfo: # noinspection PyPep8Naming def __init__(self, startCursor, endCursor, hasPreviousPage, hasNextPage): self.startCursor = startCursor self.endCursor = endCursor self.hasPreviousPage = hasPreviousPage self.hasNextPage = hasNextPage connection = connection_from_array(letters[:1], page_info_type=CustomPageInfo) assert isinstance(connection, Connection) assert isinstance(connection.edges, list) assert len(connection.edges) == 1 edge = connection.edges[0] assert isinstance(edge, Edge) assert edge == Edge(node="A", cursor="YXJyYXljb25uZWN0aW9uOjA=") page_info = connection.pageInfo assert isinstance(page_info, CustomPageInfo) assert page_info.startCursor == "YXJyYXljb25uZWN0aW9uOjA=" assert page_info.endCursor == "YXJyYXljb25uZWN0aW9uOjA=" assert page_info.hasPreviousPage is False assert page_info.hasNextPage is False
Edge, PageInfo, ) # noinspection PyProtectedMember from graphql_relay import connection_from_list, connection_from_list_slice array_abcde = ["A", "B", "C", "D", "E"] cursor_a = "YXJyYXljb25uZWN0aW9uOjA=" cursor_b = "YXJyYXljb25uZWN0aW9uOjE=" cursor_c = "YXJyYXljb25uZWN0aW9uOjI=" cursor_d = "YXJyYXljb25uZWN0aW9uOjM=" cursor_e = "YXJyYXljb25uZWN0aW9uOjQ=" edge_a = Edge(node="A", cursor=cursor_a) edge_b = Edge(node="B", cursor=cursor_b) edge_c = Edge(node="C", cursor=cursor_c) edge_d = Edge(node="D", cursor=cursor_d) edge_e = Edge(node="E", cursor=cursor_e) def describe_connection_from_array(): def warns_for_deprecated_import(): from importlib import reload with deprecated_call(): from graphql_relay.connection import arrayconnection as deprecated # noinspection PyDeprecation reload(deprecated)