Skip to content

Fix pyre type errors #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions example.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
import os
import sys
from time import sleep

from cookies import cookies

import leetcode
import leetcode.auth

# Initialize client
configuration = leetcode.Configuration()

# NOTE: cookies var is just a dict with `csrftoken` and `LEETCODE_SESSION`
# fields which contain corresponding cookies from web browser
configuration.api_key["x-csrftoken"] = cookies["csrftoken"]
configuration.api_key["csrftoken"] = cookies["csrftoken"]
configuration.api_key["LEETCODE_SESSION"] = cookies["LEETCODE_SESSION"]
leetcode_session = os.environ["LEETCODE_SESSION_ID"]

csrf_token = leetcode.auth.get_csrf_cookie(leetcode_session)

configuration.api_key["x-csrftoken"] = csrf_token
configuration.api_key["csrftoken"] = csrf_token
configuration.api_key["LEETCODE_SESSION"] = leetcode_session
configuration.api_key["Referer"] = "https://leetcode.com"
configuration.debug = False

Expand Down
34 changes: 30 additions & 4 deletions test/base.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,35 @@
import os
from typing import Optional

import leetcode
import leetcode.api.default_api
import leetcode.api_client
import leetcode.auth
import leetcode.configuration


class BaseTest:
_api_instance_containter: Optional[leetcode.api.default_api.DefaultApi] = None

@property
def _api_instance(self) -> leetcode.api.default_api.DefaultApi:
api_instance = self._api_instance_containter

if api_instance is None:
raise RuntimeError("Api instance is not initialized")

return api_instance

@_api_instance.setter
def _api_instance(
self, value: Optional[leetcode.api.default_api.DefaultApi]
) -> None:
self._api_instance_containter = value

def setup(self) -> None:
session_id = os.environ["LEETCODE_SESSION_ID"]
csrftoken = leetcode.auth.get_csrf_cookie(session_id)

configuration = leetcode.Configuration()
configuration = leetcode.configuration.Configuration()

configuration.api_key["x-csrftoken"] = csrftoken
configuration.api_key["csrftoken"] = csrftoken
Expand All @@ -18,7 +38,13 @@ def setup(self) -> None:

configuration.debug = False

self._api_instance = leetcode.DefaultApi(leetcode.ApiClient(configuration))
self._api_instance = leetcode.api.default_api.DefaultApi(
leetcode.api_client.ApiClient(configuration)
)

def teardown(self) -> None:
pass
api_instance = self._api_instance

del api_instance

self._api_instance = None
15 changes: 9 additions & 6 deletions test/test_graphql_request_get_question_detail.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import json
import test.base

import leetcode
from leetcode.models.graphql_query import GraphqlQuery
from leetcode.models.graphql_query_variables import GraphqlQueryVariables
from leetcode.models.graphql_question_code_snippet import GraphqlQuestionCodeSnippet
from leetcode.models.graphql_question_topic_tag import GraphqlQuestionTopicTag


class TestGraphqlGetQuestionDetail(test.base.BaseTest):
def test_request(self) -> None:
graphql_request = leetcode.GraphqlQuery(
graphql_request = GraphqlQuery(
query="""
query getQuestionDetail($titleSlug: String!) {
question(titleSlug: $titleSlug) {
Expand Down Expand Up @@ -70,7 +73,7 @@ def test_request(self) -> None:
}
}
""",
variables=leetcode.GraphqlQueryVariables(title_slug="two-sum"),
variables=GraphqlQueryVariables(title_slug="two-sum"),
operation_name="getQuestionDetail",
)

Expand Down Expand Up @@ -107,7 +110,7 @@ def test_request(self) -> None:
assert len(question.contributors) == 0
assert "python" in list(json.loads(question.lang_to_valid_playground).keys())
topic_tag = question.topic_tags[0]
assert isinstance(topic_tag, leetcode.GraphqlQuestionTopicTag)
assert isinstance(topic_tag, GraphqlQuestionTopicTag)
assert len(topic_tag.name) > 0
assert len(topic_tag.slug) > 0
assert question.topic_tags[0].translated_name is None
Expand All @@ -122,7 +125,7 @@ def test_request(self) -> None:

code_snippet = question.code_snippets[0]

assert isinstance(code_snippet, leetcode.GraphqlQuestionCodeSnippet)
assert isinstance(code_snippet, GraphqlQuestionCodeSnippet)
assert len(code_snippet.code) > 0
assert len(code_snippet.lang) > 0
assert len(code_snippet.lang_slug) > 0
Expand All @@ -148,7 +151,7 @@ def test_request(self) -> None:
solution = question.solution

# FIXME: this check doesn't work with swagger generated code
# assert isinstance(solution, leetcode.GraphqlQuestionSolution)
# assert isinstance(solution, GraphqlQuestionSolution)

# FIXME: swagger generates the code which returns dict
assert solution["__typename"] == "ArticleNode"
Expand Down