package triaina.test.webview; import triaina.commons.exception.CommonRuntimeException; import triaina.webview.InjectorHelper; import triaina.webview.R; import triaina.webview.annotation.Bridge; import triaina.webview.annotation.Domain; import triaina.webview.annotation.Layout; import triaina.webview.annotation.WebViewBridgeResouce; import triaina.webview.config.BridgeMethodConfig; import triaina.webview.config.BridgeObjectConfig; import triaina.webview.config.ConfigCache; import triaina.webview.config.WebViewBridgeAnnotationConfigurator; import triaina.test.mock.MockParams; import android.app.Activity; import android.content.Context; import android.test.AndroidTestCase; import android.view.View; public class WebViewBridgeAnnotationConfiguratorTest extends AndroidTestCase { private WebViewBridgeAnnotationConfigurator mConfigurator; @Override protected void setUp() throws Exception { super.setUp(); mConfigurator = new WebViewBridgeAnnotationConfigurator(); mConfigurator.setConfigCache(new ConfigCache()); mConfigurator.setContext(getContext()); mConfigurator.setInjectorHelper(new MockInjectorHenler()); } public void testLoadWebViewBridge() { Activity activity = new MockActivity(getContext()); triaina.webview.WebViewBridge bridge = mConfigurator.loadWebViewBridge(activity); assertNotNull(bridge); assertEquals(1, bridge.getDomainConfig().getDomains().length); assertEquals("example.com", bridge.getDomainConfig().getDomains()[0]); } public void testRegisterBridge() { MockActivity mock = new MockActivity(getContext()); triaina.webview.WebViewBridge webViewBridge = new triaina.webview.WebViewBridge(getContext()); mConfigurator.registerBridge(webViewBridge, mock); BridgeObjectConfig objectConfig = webViewBridge.getBridgeConfigSet(); BridgeMethodConfig methodConfig = objectConfig.get("aaa"); assertEquals("aaa", methodConfig.getMethod().getName()); methodConfig = objectConfig.get("bbb"); assertEquals("bbb", methodConfig.getMethod().getName()); } static class MockInjectorHenler extends InjectorHelper { @Override public <T> T inject(Context context, T obj) { return obj; } } @WebViewBridgeResouce(R.id.webview) @Layout(R.layout.main) @Domain("example.com") static class MockActivity extends Activity { Context context; int layoutId; public MockActivity(Context context) { this.context = context; } public void setContentView(int layoutResID) { this.layoutId = layoutResID; } public View findViewById(int id) { if (id != R.id.webview) { throw new CommonRuntimeException(); } return new triaina.webview.WebViewBridge(context); } @Bridge("aaa") public void aaa(MockParams notify) { } @Bridge("bbb") public void bbb(MockParams notify) { } } }