1- from typing import List , Any , Dict , Union , cast
2- from polywrap_core import Env
1+ from typing import List , cast
32from polywrap_core import Uri
4- from polywrap_core import UriPackage , UriWrapper , AnyWrapManifest
3+ from polywrap_core import UriPackage , AnyWrapManifest
54from polywrap_uri_resolvers import UriResolverLike
65
76from polywrap_client_config_builder import ClientConfigBuilder , BaseClientConfigBuilder
87import pytest
9- from pytest import fixture
108from polywrap_client_config_builder import ClientConfig
119from 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")
9076def 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")
10590def 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")
11498def 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")
128111def 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")
138120def 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" )
180161def 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