Skip to content

Commit 54ce58c

Browse files
committed
chore:creating fixtures for tests, cleanup
, test:e2e test of generic add configurations to CCB , remove unnecessary functions from ClientConfigBuilder class
1 parent e833157 commit 54ce58c

3 files changed

Lines changed: 102 additions & 100 deletions

File tree

packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py

Lines changed: 3 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def build(self) -> ClientConfig:
3939
pass
4040

4141

42-
def add(self, new_config: ClientConfig) -> ClientConfig:
42+
def add(self, new_config: ClientConfig):
4343
"""Returns a sanitized config object from the builder's config after receiving a partial `ClientConfig` object."""
4444
if new_config.envs:
4545
self.config.envs.update(new_config.envs)
@@ -51,7 +51,7 @@ def add(self, new_config: ClientConfig) -> ClientConfig:
5151
self.config.wrappers.extend(new_config.wrappers)
5252
if new_config.packages:
5353
self.config.packages.extend(new_config.packages)
54-
return self.config
54+
return self
5555

5656
def get_envs(self) -> Dict[Uri, Dict[str, Any]]:
5757
"""Returns the envs dictionary from the builder's config."""
@@ -176,77 +176,10 @@ def add_resolvers(self, resolvers_list: List[UriResolverLike]):
176176

177177

178178
class ClientConfigBuilder(BaseClientConfigBuilder):
179+
179180
def build(self) -> ClientConfig:
180181
"""
181182
Returns a sanitized config object from the builder's config.
182183
"""
183184
return self.config
184-
def add(self, new_config: ClientConfig) -> ClientConfig:
185-
"""
186-
Returns a sanitized config object from the builder's config after receiving a partial `ClientConfig` object.
187-
"""
188-
super().add(new_config)
189-
return self.config
190-
191-
def get_envs(self) -> Dict[Uri, Dict[str, Any]]:
192-
return super().get_envs()
193-
194-
def set_env(self, env: Env, uri: Uri) -> BaseClientConfigBuilder:
195-
super().set_env(env, uri)
196-
return self
197185

198-
def add_env(self, env: Env, uri: Uri) -> BaseClientConfigBuilder:
199-
super().add_env(env, uri)
200-
return self
201-
202-
def add_envs(self, envs: List[Env], uri: Uri) -> BaseClientConfigBuilder:
203-
super().add_envs(envs, uri)
204-
return self
205-
206-
def add_interface_implementations(
207-
self, interface_uri: Uri, implementations_uris: List[Uri]
208-
) -> BaseClientConfigBuilder:
209-
super().add_interface_implementations(interface_uri, implementations_uris)
210-
return self
211-
212-
def add_wrapper(self, wrapper_uri: Uri) -> BaseClientConfigBuilder:
213-
super().add_wrapper(wrapper_uri)
214-
return self
215-
216-
def add_wrappers(self, wrappers_uris: List[Uri]) -> BaseClientConfigBuilder:
217-
super().add_wrappers(wrappers_uris)
218-
return self
219-
220-
def remove_wrapper(self, wrapper_uri: Uri) -> BaseClientConfigBuilder:
221-
super().remove_wrapper(wrapper_uri)
222-
return self
223-
224-
def set_package(self, uri_package: UriPackage) -> BaseClientConfigBuilder:
225-
super().set_package(uri_package)
226-
return self
227-
228-
def add_package(self, uri_package: UriPackage) -> BaseClientConfigBuilder:
229-
super().add_package(uri_package)
230-
return self
231-
232-
def add_packages(self, uri_packages: List[UriPackage]) -> BaseClientConfigBuilder:
233-
super().add_packages(uri_packages)
234-
return self
235-
236-
def remove_package(self, uri_package: UriPackage) -> BaseClientConfigBuilder:
237-
super().remove_package(uri_package)
238-
return self
239-
240-
def set_resolver(self, uri_resolver: UriResolverLike) -> BaseClientConfigBuilder:
241-
super().set_resolver(uri_resolver)
242-
return self
243-
244-
def add_resolver(self, resolver: UriResolverLike) -> BaseClientConfigBuilder:
245-
super().add_resolver(resolver)
246-
return self
247-
248-
def add_resolvers(
249-
self, resolvers_list: List[UriResolverLike]
250-
) -> BaseClientConfigBuilder:
251-
super().add_resolvers(resolvers_list)
252-
return self
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from polywrap_core import Uri
2+
from pytest import fixture
3+
4+
# Variables
5+
6+
@fixture
7+
def env_varA():
8+
return { 'color': "yellow", 'size': "large" }
9+
10+
@fixture
11+
def env_varB():
12+
return { 'color': "red", 'size': "small" }
13+
14+
@fixture
15+
def env_varN():
16+
return { 'dog': "poodle", 'season': "summer" }
17+
18+
@fixture
19+
def env_varM():
20+
return { 'dog': "corgi", 'season': "autumn" }
21+
22+
@fixture
23+
def env_varS():
24+
return { 'vehicle': "scooter"}
25+
26+
# Uris
27+
28+
@fixture
29+
def env_uriX():
30+
return Uri("wrap://ens/eth.plugin.one")
31+
32+
@fixture
33+
def env_uriY():
34+
return Uri("wrap://ipfs/filecoin.wrapper.two")

packages/polywrap-client-config-builder/tests/test_client_config_builder.py

Lines changed: 65 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,32 @@
1-
from typing import List, Any, Dict, Union, cast
2-
from polywrap_core import Env
1+
from typing import List, cast
32
from polywrap_core import Uri
4-
from polywrap_core import UriPackage, UriWrapper, AnyWrapManifest
3+
from polywrap_core import UriPackage, AnyWrapManifest
54
from polywrap_uri_resolvers import UriResolverLike
65

76
from polywrap_client_config_builder import ClientConfigBuilder, BaseClientConfigBuilder
87
import pytest
9-
from pytest import fixture
108
from polywrap_client_config_builder import ClientConfig
119
from dataclasses import asdict
12-
from test_ccb_packages_wrappers import MockedPackage, MockedWrapper, MockedModule
13-
14-
# Variables
15-
16-
env_varA = { 'color': "yellow", 'size': "large" }
17-
env_varB = { 'color': "red", 'size': "small" }
18-
env_varN = { 'dog': "poodle", 'season': "summer" }
19-
env_varM = { 'dog': "corgi", 'season': "autumn" }
20-
env_varN = { 'dog': "poodle", 'season': "summer" }
21-
env_varS = { 'vehicle': "scooter"}
22-
env_uriX = Uri("wrap://ens/eth.plugin.one")
23-
env_uriY = Uri("wrap://ipfs/filecoin.wrapper.two")
10+
from test_ccb_packages_wrappers import MockedModule
2411

2512

2613
# ENVS
2714

28-
def test_client_config_builder_set_env():
15+
def test_client_config_builder_set_env(env_varA, env_uriX):
2916
ccb = ClientConfigBuilder()
3017
envs = { env_uriX: env_varA }
3118
ccb = ccb.set_env( env_varA, env_uriX)
3219
client_config = ccb.build()
3320
assert asdict(client_config) == asdict(ClientConfig(envs=envs, interfaces={}, resolver = [], wrappers=[], packages=[]))
3421

35-
def test_client_config_builder_add_env():
22+
def test_client_config_builder_add_env(env_varA, env_uriX):
3623
ccb = ClientConfigBuilder() # instantiate new client config builder
3724
ccb = ccb.add_env(env = env_varA, uri = env_uriX) # add env to client config builder
3825
client_config: ClientConfig = ccb.build() # build a client config object
3926
print(client_config)
4027
assert asdict(client_config) == asdict(ClientConfig(envs={env_uriX: env_varA}, interfaces={}, resolver = [], wrappers=[], packages=[]))
4128

42-
def test_client_config_builder_add_env_updates_env_value():
29+
def test_client_config_builder_add_env_updates_env_value(env_varA,env_varB, env_uriX):
4330
ccb = ClientConfigBuilder() # instantiate new client config builder
4431
ccb = ccb.add_env(env = env_varA, uri = env_uriX) # add env to client config builder
4532
client_config: ClientConfig = ccb.build() # build a client config object
@@ -48,7 +35,7 @@ def test_client_config_builder_add_env_updates_env_value():
4835
client_config: ClientConfig = ccb.build() # build a new client config object
4936
assert asdict(client_config) == asdict(ClientConfig(envs={env_uriX: env_varB}, interfaces={}, resolver = [], wrappers=[], packages=[]))
5037

51-
def test_client_config_builder_set_env_and_add_env_updates_and_add_values():
38+
def test_client_config_builder_set_env_and_add_env_updates_and_add_values(env_varA, env_varB, env_varN, env_varM, env_varS, env_uriX, env_uriY):
5239
ccb = ClientConfigBuilder()
5340
ccb = ccb.set_env(env_varA, env_uriX) # set the environment variables A
5441
client_config: ClientConfig = ccb.build()
@@ -86,7 +73,6 @@ def test_client_config_builder_adds_interface_implementations():
8673

8774
# PACKAGES
8875

89-
# @pytest.mark.skip("Should implement UriPackage interface with package argument")
9076
def test_client_config_builder_set_package():
9177
ccb = ClientConfigBuilder()
9278
module: MockedModule[None, str] = MockedModule(config=None)
@@ -101,7 +87,6 @@ def test_client_config_builder_set_package():
10187
assert asdict(client_config) == asdict(ClientConfig(envs={},
10288
interfaces={}, resolver = [], wrappers=[], packages=[uri_package]))
10389

104-
# @pytest.mark.skip("Should implement UriPackage interface with package argument")
10590
def test_client_config_builder_add_package():
10691
ccb = ClientConfigBuilder()
10792
uri_package = UriPackage(uri=Uri("wrap://ens/eth.plugin.one"),package="Todo")
@@ -110,7 +95,6 @@ def test_client_config_builder_add_package():
11095
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={},
11196
resolver = [], wrappers=[], packages=[uri_package]))
11297

113-
# @pytest.mark.skip("Should implement UriPackage interface with package argument")
11498
def test_client_config_builder_add_package_updates_packages_list():
11599
ccb = ClientConfigBuilder()
116100
uri_package1 = UriPackage(uri=Uri("wrap://ens/eth.plugin.one"),package="Todo")
@@ -124,7 +108,6 @@ def test_client_config_builder_add_package_updates_packages_list():
124108
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={},
125109
resolver = [], wrappers=[], packages=[uri_package1, uri_package2]))
126110

127-
# @pytest.mark.skip("Should implement UriPackage interface with package argument")
128111
def test_client_config_builder_add_multiple_packages():
129112
ccb = ClientConfigBuilder()
130113
uri_package1 = UriPackage(uri=Uri("wrap://ens/eth.plugin.one"),package="Todo")
@@ -134,7 +117,6 @@ def test_client_config_builder_add_multiple_packages():
134117
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver = [],
135118
wrappers=[], packages=[uri_package1, uri_package2]))
136119

137-
# @pytest.mark.skip("Should implement UriPackage interface with package argument")
138120
def test_client_config_builder_add_packages_removes_packages():
139121
ccb = ClientConfigBuilder()
140122
uri_package1 = UriPackage(uri=Uri("wrap://ens/eth.plugin.one"),package="Todo")
@@ -176,10 +158,9 @@ def test_client_config_builder_removes_wrapper():
176158

177159
# RESOLVER
178160

179-
@pytest.mark.skip("Should implement UriResolverLike interface")
180161
def test_client_config_builder_set_uri_resolver():
181162
ccb = ClientConfigBuilder()
182-
resolver = Uri("wrap://ens/eth.resolver.one")
163+
resolver: UriResolverLike = Uri("wrap://ens/eth.resolver.one")
183164
ccb = ccb.set_resolver(resolver)
184165
client_config = ccb.build()
185166
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[resolver], wrappers=[], packages=[]))
@@ -206,8 +187,62 @@ def test_client_config_builder_add_resolver():
206187
resolvers: List[UriResolverLike] = [resolverA, resolverB, resolverC, resolverD]
207188
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=resolvers, wrappers=[], packages=[]))
208189

209-
# TODO: add tests for the following methods
190+
# GENERIC ADD FUNCTION
210191

211-
def test_client_config_builder_generic_add():
192+
def test_client_config_builder_generic_add(env_varA,env_uriX, env_uriY):
212193
# Test adding package, wrapper, resolver, interface, and env with the ccb.add method
213-
pass
194+
ccb = ClientConfigBuilder()
195+
196+
# starts empty
197+
client_config = ccb.build()
198+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={},
199+
resolver = [], wrappers=[], packages=[]))
200+
201+
# add an env
202+
new_config = ClientConfig(envs={env_uriX: env_varA}, interfaces={}, resolver = [], wrappers=[], packages=[])
203+
ccb = ccb.add(new_config)
204+
client_config1 = ccb.build()
205+
assert asdict(client_config1) == asdict(new_config)
206+
207+
# add a resolver
208+
new_resolvers = ClientConfig(resolver=[Uri("wrap://ens/eth.resolver.one")], envs={}, interfaces={}, wrappers=[], packages=[])
209+
ccb = ccb.add(new_resolvers)
210+
client_config2 = ccb.build()
211+
assert asdict(client_config2) == asdict(ClientConfig(envs={env_uriX: env_varA}, interfaces={},
212+
resolver = [Uri("wrap://ens/eth.resolver.one")], wrappers=[], packages=[]))
213+
214+
# add a second resolver
215+
new_resolver = ClientConfig(resolver=[Uri("wrap://ens/eth.resolver.two")], envs={}, interfaces={}, wrappers=[], packages=[])
216+
ccb = ccb.add(new_resolver)
217+
client_config5 = ccb.build()
218+
assert asdict(client_config5) == asdict(ClientConfig(envs={env_uriX: env_varA}, interfaces={},
219+
resolver = [Uri("wrap://ens/eth.resolver.one"), Uri("wrap://ens/eth.resolver.two")], wrappers=[], packages=[]))
220+
221+
222+
# add a wrapper
223+
new_wrapper = ClientConfig(wrappers=[Uri("wrap://ens/uni.wrapper.eth")], envs={}, interfaces={}, resolver = [], packages=[])
224+
ccb = ccb.add(new_wrapper)
225+
client_config3 = ccb.build()
226+
assert asdict(client_config3) == asdict(ClientConfig(envs={env_uriX: env_varA}, interfaces={},
227+
resolver = [Uri("wrap://ens/eth.resolver.one"), Uri("wrap://ens/eth.resolver.two")],
228+
wrappers=[Uri("wrap://ens/uni.wrapper.eth")], packages=[]))
229+
230+
# add an interface
231+
interfaces: Dict[Uri, List[Uri]] = {Uri("wrap://ens/eth.interface.eth"): [env_uriX,env_uriY]}
232+
new_interface = ClientConfig(interfaces=interfaces, envs={}, resolver = [], wrappers=[], packages=[])
233+
ccb = ccb.add(new_interface)
234+
client_config4 = ccb.build()
235+
assert asdict(client_config4) == asdict(ClientConfig(envs={env_uriX: env_varA}, interfaces=interfaces,
236+
resolver = [Uri("wrap://ens/eth.resolver.one"), Uri("wrap://ens/eth.resolver.two")],
237+
wrappers=[Uri("wrap://ens/uni.wrapper.eth")], packages=[]))
238+
239+
# add a package
240+
uri_package = UriPackage(uri=Uri("wrap://ens/eth.plugin.one"),package="Todo")
241+
new_package = ClientConfig(packages=[uri_package], envs={}, interfaces={}, resolver = [], wrappers=[])
242+
ccb = ccb.add(new_package)
243+
client_config6 = ccb.build()
244+
assert asdict(client_config6) == asdict(ClientConfig(envs={env_uriX: env_varA}, interfaces=interfaces,
245+
resolver = [Uri("wrap://ens/eth.resolver.one"), Uri("wrap://ens/eth.resolver.two")],
246+
wrappers=[Uri("wrap://ens/uni.wrapper.eth")], packages=[uri_package]))
247+
248+

0 commit comments

Comments
 (0)