Skip to content

Commit 790ebee

Browse files
committed
fix import errors
1 parent eb0d3a1 commit 790ebee

4 files changed

Lines changed: 63 additions & 43 deletions

File tree

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
from .page_result import PageResult
2+
3+
__all__ = ['PageResult']

src/msgraph_core/tasks/page_iterator.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
from kiota_abstractions.request_information import RequestInformation # type: ignore
2929
from kiota_abstractions.serialization.parsable import Parsable # type: ignore
3030

31-
from models import PageResult # pylint: disable=import-error
32-
# from msgraph_core.models.page_result import PageResult # pylint: disable=import-error
33-
# from ..models import PageResult # pylint: disable=import-error
31+
from ..models import PageResult # pylint: disable=import-error
3432

3533
T = TypeVar('T', bound=Parsable)
3634

tests/tasks/test_page_iterator.py

Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
1+
import os
2+
from unittest.mock import AsyncMock, patch
3+
14
import pytest
5+
from azure.identity import ClientSecretCredential
6+
from kiota_authentication_azure.azure_identity_authentication_provider\
7+
import AzureIdentityAuthenticationProvider
8+
from kiota_http.httpx_request_adapter import HttpxRequestAdapter
9+
from dotenv import load_dotenv
10+
11+
from msgraph_core.tasks.page_iterator import PageIterator # pylint: disable=import-error, no-name-in-module
12+
from msgraph_core.models.page_result import PageResult # pylint: disable=no-name-in-module, import-error
213

3-
from kiota_abstractions.request_adapter import RequestAdapter
4-
from kiota_abstractions.request_information import RequestInformation
5-
from kiota_serialization_json import JsonNodeFactory
6-
from kiota_serialization_json import JsonParseNode
7-
from kiota_http_python.exceptions import KiotaHTTPXError
8-
from ...src.msgraph_core.page_iterator import PageIterator
914

1015
@pytest.fixture
1116
def first_page_data():
1217
return {
13-
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
14-
"@odata.nextLink": "https://graph.microsoft.com/v1.0/users?skip=2&page=10",
18+
"@odata.context":
19+
"https://graph.microsoft.com/v1.0/$metadata#users",
20+
"@odata.next_link":
21+
"https://graph.microsoft.com/v1.0/users?skip=2&page=10",
1522
"value": [
1623
{
1724
"businessPhones": [],
@@ -25,11 +32,8 @@ def first_page_data():
2532
"surname": None,
2633
"userPrincipalName": "Adams@contoso.com",
2734
"id": "6ea91a8d-e32e-41a1-b7bd-d2d185eed0e0"
28-
},
29-
{
30-
"businessPhones": [
31-
"425-555-0100"
32-
],
35+
}, {
36+
"businessPhones": ["425-555-0100"],
3337
"displayName": "MOD Administrator 1",
3438
"givenName": "MOD",
3539
"jobTitle": None,
@@ -44,10 +48,12 @@ def first_page_data():
4448
]
4549
}
4650

51+
4752
@pytest.fixture
4853
def second_page_data():
4954
return {
50-
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
55+
"@odata.context":
56+
"https://graph.microsoft.com/v1.0/$metadata#users",
5157
"value": [
5258
{
5359
"businessPhones": [],
@@ -61,11 +67,8 @@ def second_page_data():
6167
"surname": None,
6268
"userPrincipalName": "Adams@contoso.com",
6369
"id": "6ea91a8d-e32e-41a1-b7bd-d2d185eed0e0"
64-
},
65-
{
66-
"businessPhones": [
67-
"425-555-0100"
68-
],
70+
}, {
71+
"businessPhones": ["425-555-0100"],
6972
"displayName": "MOD Administrator 2",
7073
"givenName": "MOD",
7174
"jobTitle": None,
@@ -80,12 +83,36 @@ def second_page_data():
8083
]
8184
}
8285

83-
def test_handler_can_work(first_page_data, second_page_data):
84-
with requests_mock.Mocker() as m:
85-
m.get('https://graph.microsoft.com/v1.0/users', json=first_page_data)
86-
m.get('https://graph.microsoft.com/v1.0/users?skip=2&page=10', json=second_page_data)
8786

88-
page_iterator = PageIterator(first_page_data, RequestAdapter())
89-
count = 0
90-
page_iterator.iterate(lambda _: count + 1)
91-
assert count == 4
87+
load_dotenv() # take environment variables from .env.
88+
89+
credential = ClientSecretCredential(
90+
os.getenv('tenant_id'), os.getenv('client_id'), os.getenv('client_secret')
91+
)
92+
auth_provider = AzureIdentityAuthenticationProvider(credential)
93+
94+
request_adapter = HttpxRequestAdapter(authentication_provider=auth_provider)
95+
96+
97+
def test_convert_to_page(first_page_data): # pylint: disable=redefined-outer-name
98+
99+
page_iterator = PageIterator(first_page_data, request_adapter)
100+
first_page = page_iterator.convert_to_page(first_page_data)
101+
first_page.set_value(first_page_data['value'])
102+
first_page.odata_next_link = first_page_data['@odata.next_link']
103+
assert isinstance(first_page, PageResult)
104+
assert first_page_data['value'] == first_page.value
105+
assert first_page_data['@odata.next_link'] == first_page.odata_next_link
106+
107+
108+
@pytest.mark.asyncio
109+
async def test_iterate():
110+
# Mock the next method to return None after the first call
111+
with patch.object(PageIterator, 'next', new_callable=AsyncMock) as mock_next:
112+
mock_next.side_effect = [True, None]
113+
114+
with patch.object(PageIterator, 'enumerate', return_value=True) as mock_enumerate:
115+
page_iterator = PageIterator(first_page_data, request_adapter)
116+
await page_iterator.iterate(lambda _: True)
117+
assert mock_next.call_count == 2
118+
assert mock_enumerate.call_count == 2

tests/tasks/test_page_result.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
1-
import pytest
1+
from msgraph_core.models import PageResult # pylint: disable=no-name-in-module, import-error
22

3-
from kiota_serialization_json import JsonSerializationWriter
43

5-
from msgraph_core.models import PageResult
4+
def test_initialization():
5+
page_result = PageResult()
6+
assert page_result.odata_next_link is None
7+
assert page_result.value is None
68

79

810
def test_set_and_get_values():
911
page_result = PageResult()
10-
writer = JsonSerializationWriter()
11-
writer.get_serialized_content(page_result)
1212
page_result.set_value([{"name": "John Doe"}, {"name": "Ian Smith"}])
1313
page_result.odata_next_link = "next_page"
1414
assert 2 == len(page_result.value)
1515
assert "next_page" == page_result.odata_next_link
16-
assert {
17-
"@odata.nextLink": "next_page",
18-
"value": [{
19-
"name": "John Doe"
20-
}, {
21-
"name": "Ian Smith"
22-
}]
23-
} == writer.get_serialized_content(page_result)
16+
assert [{"name": "John Doe"}, {"name": "Ian Smith"}] == page_result.value

0 commit comments

Comments
 (0)