blob: a582ac05f45fec88aceb1416b27a929241fcf36d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.taobao.weex.ui.component;
import android.view.View;
import com.taobao.weappplus_sdk.BuildConfig;
import com.taobao.weex.WXSDKInstanceTest;
import com.taobao.weex.common.Constants;
import com.taobao.weex.dom.TestDomObject;
import com.taobao.weex.ui.SimpleComponentHolder;
import com.taobao.weex.ui.view.IWebView;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.lang.reflect.InvocationTargetException;
import static org.junit.Assert.*;
/**
* Created by sospartan on 28/09/2016.
*/
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 19)
@PowerMockIgnore( {"org.mockito.*", "org.robolectric.*", "android.*"})
public class WXWebTest {
public static WXWeb create() throws IllegalAccessException, InstantiationException, InvocationTargetException {
return (WXWeb) new SimpleComponentHolder(WXWeb.class).createInstance(WXSDKInstanceTest.createInstance(), new TestDomObject(), WXDivTest.create());
}
WXWeb component;
ProxyWebView mWebView;
static class ProxyWebView implements IWebView {
IWebView mIWebView;
OnPageListener mOnPageListener;
OnErrorListener mOnErrorListener;
ProxyWebView(IWebView proxy){
mIWebView = proxy;
}
@Override
public View getView() {
return mIWebView.getView();
}
@Override
public void destroy() {
mIWebView.destroy();
}
@Override
public void loadUrl(String url) {
mIWebView.loadUrl(url);
}
@Override
public void reload() {
mIWebView.reload();
}
@Override
public void goBack() {
mIWebView.goBack();
}
@Override
public void goForward() {
mIWebView.goForward();
}
@Override
public void setShowLoading(boolean shown) {
mIWebView.setShowLoading(shown);
}
@Override
public void setOnErrorListener(OnErrorListener listener) {
mIWebView.setOnErrorListener(listener);
mOnErrorListener = listener;
}
@Override
public void setOnPageListener(OnPageListener listener) {
mIWebView.setOnPageListener(listener);
mOnPageListener = listener;
}
}
@Before
public void setUp() throws Exception {
component = create();
mWebView = new ProxyWebView(component.mWebView);
component.mWebView = mWebView;
ComponentTest.create(component);
}
@After
public void tearDown() throws Exception {
component.destroy();
}
@Test
public void testSetProperty() throws Exception {
component.setProperty(Constants.Name.SHOW_LOADING,true);
component.setProperty(Constants.Name.SRC,"http://taobao.com");
}
@Test
public void testSetAction() throws Exception {
component.setAction(WXWeb.GO_BACK);
component.setAction(WXWeb.GO_FORWARD);
component.setAction(WXWeb.RELOAD);
}
@Test
public void testListener() throws Exception {
component.addEvent(Constants.Event.RECEIVEDTITLE);
component.addEvent(Constants.Event.PAGESTART);
component.addEvent(Constants.Event.PAGEFINISH);
component.addEvent(Constants.Event.ERROR);
mWebView.mOnPageListener.onPageFinish("http://taobao.com",true,true);
mWebView.mOnPageListener.onReceivedTitle("test");
mWebView.mOnPageListener.onPageStart("http://taobao.com");
mWebView.mOnErrorListener.onError("test","error occurred");
}
}