Skip to content

Commit 5697644

Browse files
author
Ammar Husain Mian Fazulul
committed
refactor test plan api
1 parent 89aa933 commit 5697644

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+627
-676
lines changed

docs/api_reference.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ API Reference
1717
api_reference/notebook
1818
api_reference/feeds
1919
api_reference/test_plan
20-
api_reference/test_plan_templates
2120

2221
Indices and tables
2322
------------------

docs/api_reference/test_plan.rst

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.. _api_tag_page:
22

3-
nisystemlink.clients.test_plan.test_plan
3+
nisystemlink.clients.test_plan
44
======================
55

66
.. autoclass:: nisystemlink.clients.test_plan.test_plan.TestPlanClient
@@ -13,7 +13,10 @@ nisystemlink.clients.test_plan.test_plan
1313
.. automethod:: schedule_test_plans
1414
.. automethod:: update_test_plans
1515
.. automethod:: get_test_plan
16+
.. automethod:: create_test_plan_templates
17+
.. automethod:: query_test_plan_templates
18+
.. automethod:: delete_test_plan_templates
1619

17-
.. automodule:: nisystemlink.clients.test_plan.test_plan.models
20+
.. automodule:: nisystemlink.clients.test_plan.models
1821
:members:
1922
:imported-members:

docs/api_reference/test_plan_templates.rst

Lines changed: 0 additions & 16 deletions
This file was deleted.

docs/getting_started.rst

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -343,32 +343,12 @@ Examples
343343

344344
Create, query, get, update, schedule and delete TestPlans
345345

346-
.. literalinclude:: ../examples/test_plan/test_plan/test_plans.py
346+
.. literalinclude:: ../examples/test_plan/test_plans.py
347347
:language: python
348348
:linenos:
349349

350-
TestPlanTemplate API
351-
-------
352-
353-
Overview
354-
~~~~~~~~
355-
356-
The :class:`.TestPlanTemplateClient` class is the primary entry point of the TestPlanTemplate API.
357-
358-
When constructing a :class:`.TestPlanTemplateClient`, you can pass an
359-
:class:`.HttpConfiguration` (like one retrieved from the
360-
:class:`.HttpConfigurationManager`), or let :class:`.TestPlanTemplateClient` use the
361-
default connection. The default connection depends on your environment.
362-
363-
With a :class:`.TestPlanTemplateClient` object, you can:
364-
365-
* Create, query, and delete TestPlanTemplate
366-
367-
Examples
368-
~~~~~~~~
369-
370350
Create, query and delete test plan templates.
371351

372-
.. literalinclude:: ../examples/test_plan/test_plan_templates/test_plan_templates.py
352+
.. literalinclude:: ../examples/test_plan/test_plan_templates.py
373353
:language: python
374-
:linenos:
354+
:linenos:
Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from nisystemlink.clients.core._http_configuration import HttpConfiguration
2-
from nisystemlink.clients.test_plan.test_plan import TestPlanClient
3-
from nisystemlink.clients.test_plan.test_plan.models import (
2+
from nisystemlink.clients.test_plan import TestPlanClient
3+
from nisystemlink.clients.test_plan.models import (
44
CreateTestPlanRequest,
55
CreateTestPlansRequest,
6+
DeleteTestPlansRequest,
67
QueryTestPlansRequest,
78
ScheduleTestPlanRequest,
89
ScheduleTestPlansRequest,
@@ -18,17 +19,20 @@
1819
client = TestPlanClient(configuration=server_configuration)
1920

2021
create_test_plans_request = CreateTestPlansRequest(
21-
testPlans=[
22+
test_plans=[
2223
CreateTestPlanRequest(
2324
name="Python integration test plan", state="NEW", partNumber="px40482"
2425
)
2526
]
2627
)
2728

2829
# create a test plan
29-
created_test_plans = client.create_test_plans(create_request=create_test_plans_request)
30+
created_test_plans_response = client.create_test_plans(
31+
create_request=create_test_plans_request
32+
)
3033

31-
created_test_plan_id = created_test_plans.created_test_plans[0].id
34+
if created_test_plans_response.created_test_plans:
35+
created_test_plan_id = created_test_plans_response.created_test_plans[0].id
3236

3337
# Query test plan using id.
3438
query_test_plans_request = QueryTestPlansRequest(
@@ -44,7 +48,7 @@
4448

4549
# Update test plan
4650
update_test_plans_request = UpdateTestPlansRequest(
47-
testPlans=[
51+
test_plans=[
4852
UpdateTestPlanRequest(
4953
id=created_test_plan_id,
5054
name="Updated Test Plan",
@@ -69,4 +73,4 @@
6973
)
7074

7175
# Delete test plan
72-
client.delete_test_plans(ids=[created_test_plan_id])
76+
client.delete_test_plans(ids=DeleteTestPlansRequest(ids=[created_test_plan_id]))

examples/test_plan/test_plan_templates/test_plan_templates.py renamed to examples/test_plan/test_plan_templates.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,24 @@
11
from nisystemlink.clients.core._http_configuration import HttpConfiguration
2-
from nisystemlink.clients.test_plan.models._execution_definition import ManualExecution
3-
from nisystemlink.clients.test_plan.test_plan_templates._test_plan_templates_client import (
4-
TestPlanTemplateClient,
5-
)
6-
from nisystemlink.clients.test_plan.test_plan_templates.models._query_test_plan_templates_request import (
2+
from nisystemlink.clients.test_plan import TestPlanClient
3+
from nisystemlink.clients.test_plan.models import (
74
QueryTestPlanTemplatesRequest,
8-
)
9-
from nisystemlink.clients.test_plan.test_plan_templates.models._test_plan_templates import (
105
TestPlanTemplateBase,
116
)
127

8+
139
# Setup the server configuration to point to your instance of SystemLink Enterprise
1410
server_configuration = HttpConfiguration(
1511
server_uri="https://yourserver.yourcompany.com",
1612
api_key="YourAPIKeyGeneratedFromSystemLink",
1713
)
18-
client = TestPlanTemplateClient(configuration=server_configuration)
14+
client = TestPlanClient(configuration=server_configuration)
1915

2016
# Test plan template request metadata
2117
create_test_plan_template_request = [
2218
TestPlanTemplateBase(
2319
name="Python integration test plan template",
2420
templateGroup="sample template group",
2521
workspace="33eba2fe-fe42-48a1-a47f-a6669479a8aa",
26-
executionActions=[ManualExecution(action="TEST", type="MANUAl")],
2722
)
2823
]
2924

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
from nisystemlink.clients.test_plan._test_plan_client import TestPlanClient
2+
13
# flake8: noqa

nisystemlink/clients/test_plan/test_plan_templates/_test_plan_templates_client.py renamed to nisystemlink/clients/test_plan/_test_plan_client.py

Lines changed: 119 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
1-
"""Implementation of Test plan template Client"""
2-
31
from typing import List, Optional
42

53
from nisystemlink.clients import core
4+
from nisystemlink.clients.core._http_configuration import HttpConfiguration
65
from nisystemlink.clients.core._uplink._base_client import BaseClient
7-
from nisystemlink.clients.core._uplink._methods import post
6+
from nisystemlink.clients.core._uplink._methods import get, post
7+
from nisystemlink.clients.test_plan import models
88
from uplink import Field, retry
99

10-
from . import models
11-
1210

1311
@retry(
1412
when=retry.when.status(408, 429, 502, 503, 504),
1513
stop=retry.stop.after_attempt(5),
1614
on_exception=retry.CONNECTION_ERROR,
1715
)
18-
class TestPlanTemplateClient(BaseClient):
19-
def __init__(self, configuration: Optional[core.HttpConfiguration] = None):
16+
class TestPlanClient(BaseClient):
17+
def __init__(self, configuration: Optional[HttpConfiguration] = None):
2018
"""Initialize an instance.
2119
2220
Args:
@@ -26,12 +24,125 @@ def __init__(self, configuration: Optional[core.HttpConfiguration] = None):
2624
is used to obtain the configuration.
2725
2826
Raises:
29-
ApiException: if unable to communicate with the `/niworkorder` Service.
27+
ApiException: if unable to communicate with the WorkOrder Service.
3028
"""
3129
if configuration is None:
3230
configuration = core.HttpConfigurationManager.get_configuration()
31+
3332
super().__init__(configuration, base_path="/niworkorder/v1/")
3433

34+
@get("testplans/{test_plan_id}")
35+
def get_test_plan(self, test_plan_id: str) -> models.TestPlan:
36+
"""Retrieve a test plan by its ID.
37+
38+
Args:
39+
test_plan_id: The ID of the test plan to retrieve.
40+
41+
Returns:
42+
The TestPlan object corresponding to the given ID.
43+
"""
44+
...
45+
46+
@post("testplans")
47+
def create_test_plans(
48+
self, create_request: models.CreateTestPlansRequest
49+
) -> models.CreateTestPlansResponse:
50+
"""Create a new test plan.
51+
52+
Args:
53+
test_plan: The test plans to create.
54+
55+
Returns:
56+
The created test plan object.
57+
"""
58+
...
59+
60+
@post("delete-testplans")
61+
def delete_test_plans(self, ids: models.DeleteTestPlansRequest) -> None:
62+
"""Delete test plans by IDs.
63+
64+
Args:
65+
test_plan_ids: A list of test plan IDs to delete.
66+
67+
Returns:
68+
None
69+
"""
70+
...
71+
72+
@post("query-testplans")
73+
def __query_test_plans(
74+
self, query_request: models._QueryTestPlansRequest
75+
) -> models.PagedTestPlans:
76+
"""Query test plans.
77+
78+
Args:
79+
query: The query to execute.
80+
81+
Returns:
82+
A PagedTestPlans object containing test plans that match the query.
83+
"""
84+
...
85+
86+
def query_test_plans(
87+
self, query_request: models.QueryTestPlansRequest
88+
) -> models.PagedTestPlans:
89+
"""Query test plans.
90+
91+
Args:
92+
query: The query to execute.
93+
94+
Returns:
95+
A PagedTestPlans object containing test plans that match the query.
96+
"""
97+
projection_str = (
98+
[projection.name for projection in query_request.projection]
99+
if query_request.projection
100+
else None
101+
)
102+
query_params = {
103+
"filter": query_request.filter,
104+
"take": query_request.take,
105+
"continuation_token": query_request.continuation_token,
106+
"order_by": query_request.order_by,
107+
"descending": query_request.descending,
108+
"return_count": query_request.return_count,
109+
"projection": projection_str,
110+
}
111+
112+
query_params = {k: v for k, v in query_params.items() if v is not None}
113+
114+
query_test_plans_request = models._QueryTestPlansRequest(**query_params)
115+
116+
return self.__query_test_plans(query_request=query_test_plans_request)
117+
118+
@post("schedule-testplans")
119+
def schedule_test_plans(
120+
self, schedule_request: models.ScheduleTestPlansRequest
121+
) -> models.ScheduleTestPlansResponse:
122+
"""Schedule a test plan.
123+
124+
Args:
125+
schedule: The schedule to apply to the test plan.
126+
127+
Returns:
128+
A ScheduleTestPlansResponse object containing the scheduled test plan.
129+
"""
130+
...
131+
132+
@post("update-testplans")
133+
def update_test_plans(
134+
self, update_request: models.UpdateTestPlansRequest
135+
) -> models.UpdateTestPlansResponse:
136+
"""Update a test plan.
137+
138+
Args:
139+
test_plan: The test plan to update.
140+
141+
Returns:
142+
The updated test plan object.
143+
"""
144+
...
145+
35146
@post("testplan-templates", args=[Field("testPlanTemplates")])
36147
def create_test_plan_templates(
37148
self, test_plan_templates: List[models.TestPlanTemplateBase]
Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,64 @@
1-
from ._execution_definition import ExecutionDefinition
1+
from nisystemlink.clients.test_plan.models._create_test_plan_request import (
2+
CreateTestPlanRequest,
3+
)
4+
from nisystemlink.clients.test_plan.models._create_test_plans_request import (
5+
CreateTestPlansRequest,
6+
)
7+
from nisystemlink.clients.test_plan.models._create_test_plans_response import (
8+
CreateTestPlansResponse,
9+
)
10+
from nisystemlink.clients.test_plan.models._delete_test_plans_request import (
11+
DeleteTestPlansRequest,
12+
)
13+
from nisystemlink.clients.test_plan.models._update_test_plan_request import (
14+
UpdateTestPlanRequest,
15+
)
16+
from nisystemlink.clients.test_plan.models._update_test_plans_request import (
17+
UpdateTestPlansRequest,
18+
)
19+
from nisystemlink.clients.test_plan.models._update_test_plans_response import (
20+
UpdateTestPlansResponse,
21+
)
22+
from nisystemlink.clients.test_plan.models._query_test_plans_request import (
23+
QueryTestPlansRequest,
24+
_QueryTestPlansRequest,
25+
)
26+
from nisystemlink.clients.test_plan.models._paged_test_plans import PagedTestPlans
27+
from nisystemlink.clients.test_plan.models._execution_event import ExecutionEvent
28+
from nisystemlink.clients.test_plan.models._order_by import OrderBy
29+
from nisystemlink.clients.test_plan.models._test_plan import TestPlan
30+
from nisystemlink.clients.test_plan.models._state import State
31+
from nisystemlink.clients.test_plan.models._execution_definition import (
32+
ExecutionDefinition,
33+
)
34+
from nisystemlink.clients.test_plan.models._schedule_test_plans_request import (
35+
ScheduleTestPlansRequest,
36+
)
37+
from nisystemlink.clients.test_plan.models._schedule_test_plan_request import (
38+
ScheduleTestPlanRequest,
39+
)
40+
from nisystemlink.clients.test_plan.models._schedule_test_plans_response import (
41+
ScheduleTestPlansResponse,
42+
)
43+
from nisystemlink.clients.test_plan.models._workflow_definition import (
44+
WorkflowDefinition,
45+
)
46+
from nisystemlink.clients.test_plan.models._test_plan_templates import (
47+
TestPlanTemplateBase,
48+
TestPlanTemplate,
49+
)
50+
from nisystemlink.clients.test_plan.models._create_test_plan_templates_partial_success_response import (
51+
CreateTestPlanTemplatePartialSuccessResponse,
52+
)
53+
from nisystemlink.clients.test_plan.models._delete_test_plan_templates_partial_success_response import (
54+
DeleteTestPlanTemplatesPartialSuccessResponse,
55+
)
56+
from nisystemlink.clients.test_plan.models._query_test_plan_templates_request import (
57+
QueryTestPlanTemplatesRequest,
58+
_QueryTestPlanTemplatesRequest,
59+
)
60+
from nisystemlink.clients.test_plan.models._paged_test_plan_templates import (
61+
PagedTestPlanTemplates,
62+
)
263

364
# flake8: noqa

0 commit comments

Comments
 (0)