/* * Copyright (c) 2012 Socialize Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.socialize.test.unit.view; import android.app.Activity; import android.content.Context; import android.view.View; import android.widget.LinearLayout; import com.socialize.SocializeService; import com.socialize.error.SocializeErrorHandler; import com.socialize.test.SocializeActivityTest; import com.socialize.test.util.TestUtils; import com.socialize.view.BaseView; import org.mockito.Mockito; /** * @author Jason Polites * */ public class BaseViewTest extends SocializeActivityTest { public void test_showError() { SocializeErrorHandler handler = Mockito.mock(SocializeErrorHandler.class); Exception error = Mockito.mock(Exception.class); BaseView view = new BaseView(TestUtils.getActivity(this)) {}; view.setErrorHandler(handler); view.showError(TestUtils.getActivity(this), error); Mockito.verify(handler).handleError(TestUtils.getActivity(this), error);; } public void test_getActivity() { Activity activity = TestUtils.getActivity(this); PublicBaseView view = new PublicBaseView(activity); assertSame(activity, view.getActivity()); } public void test_onWindowVisibilityChangedVisibleFirstLoad() { final String success = "onViewLoad"; PublicBaseView view = new PublicBaseView(TestUtils.getActivity(this)) { @Override public boolean isInEditMode() { return false; } @Override public boolean checkLoaded() { return false; } @Override public void onViewLoad() { addResult(success); } }; view.onWindowVisibilityChanged(View.VISIBLE); String val = getNextResult(); assertNotNull(val); assertEquals(success, val); } public void test_onWindowVisibilityChangedVisibleSecondLoad() { final String success = "onViewUpdate"; PublicBaseView view = new PublicBaseView(TestUtils.getActivity(this)) { @Override public boolean isInEditMode() { return false; } @Override public boolean checkLoaded() { return true; } @Override public void onViewUpdate() { addResult(success); } }; view.onWindowVisibilityChanged(View.VISIBLE); String val = getNextResult(); assertNotNull(val); assertEquals(success, val); } // // public void test_onWindowVisibilityChangedInvisible() { // // final String success = "decrementLoaded"; // // PublicBaseView view = new PublicBaseView(TestUtils.getActivity(this)) { // @Override // public boolean isInEditMode() { // return false; // } // // @Override // public boolean checkLoaded() { // return true; // } // // @Override // public void decrementLoaded() { // addResult(success); // } // }; // // view.onWindowVisibilityChanged(View.INVISIBLE); // // String val = getNextResult(); // // assertNotNull(val); // assertEquals(success, val); // } // // public void test_onWindowVisibilityChangedGone() { // // final String success = "decrementLoaded"; // // PublicBaseView view = new PublicBaseView(TestUtils.getActivity(this)) { // @Override // public boolean isInEditMode() { // return false; // } // // @Override // public boolean checkLoaded() { // return true; // } // // @Override // public void decrementLoaded() { // addResult(success); // } // }; // // view.onWindowVisibilityChanged(View.GONE); // // String val = getNextResult(); // // assertNotNull(val); // assertEquals(success, val); // } public void test_checkLoaded() { PublicBaseView view = new PublicBaseView(TestUtils.getActivity(this)); assertFalse(view.checkLoaded()); assertTrue(view.checkLoaded()); } public void test_assignId() { LinearLayout parent = Mockito.mock(LinearLayout.class); PublicBaseView view = new PublicBaseView(TestUtils.getActivity(this)) { @Override public int getNextViewId(View parent) { addResult(parent); return 0; } }; view.assignId(parent); View val = getNextResult(); assertNotNull(val); assertSame(parent, val); } public void test_getNextViewId() { LinearLayout group = Mockito.mock(LinearLayout.class); View child0 = Mockito.mock(View.class); View child1 = Mockito.mock(View.class); Mockito.when(group.getChildCount()).thenReturn(2); Mockito.when(group.getChildAt(0)).thenReturn(child0); Mockito.when(group.getChildAt(1)).thenReturn(child1); Mockito.when(child0.getId()).thenReturn(10); Mockito.when(child1.getId()).thenReturn(5); PublicBaseView view = new PublicBaseView(TestUtils.getActivity(this)); int id = view.getNextViewId(group); assertEquals(11, id); } private class PublicBaseView extends BaseView { public PublicBaseView(Context context) { super(context); } @Override public SocializeService getSocialize() { return super.getSocialize(); } @Override public Activity getActivity() { return super.getActivity(); } @Override public void onWindowVisibilityChanged(int visibility) { super.onWindowVisibilityChanged(visibility); } @Override public View getEditModeView() { return super.getEditModeView(); } @Override public void onViewUpdate() { super.onViewUpdate(); } @Override public void onViewLoad() { super.onViewLoad(); } @Override public int getNextViewId(View parent) { return super.getNextViewId(parent); } @Override public boolean checkLoaded() { return super.checkLoaded(); } @Override public void incrementLoaded() { super.incrementLoaded(); } // @Override // public void decrementLoaded() { // super.decrementLoaded(); // } } }