/*
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.litho;
import android.content.Context;
import android.widget.TextView;
import com.facebook.litho.testing.ComponentTestHelper;
import com.facebook.litho.testing.testrunner.ComponentsTestRunner;
import com.facebook.litho.viewcompatcreator.ViewCompatCreator;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import static org.junit.Assert.assertEquals;
/**
* Tests {@link ViewCompatComponent}
*/
@RunWith(ComponentsTestRunner.class)
public class ViewCompatComponentTest {
private static final ViewCompatCreator<TextView> TEXT_VIEW_CREATOR =
new ViewCompatCreator<TextView>() {
@Override
public TextView createView(Context c) {
return new TextView(c);
}
};
private ComponentContext mContext;
@Before
public void setUp() throws Exception {
mContext = new ComponentContext(RuntimeEnvironment.application);
}
@Test
public void testSimpleRendering() throws Exception {
ViewCompatComponent.ViewBinder<TextView> binder =
new ViewCompatComponent.ViewBinder<TextView>() {
@Override
public void prepare() {
}
@Override
public void bind(TextView view) {
view.setText("Hello World!");
}
@Override
public void unbind(TextView view) {
}
};
LithoView lithoView = ComponentTestHelper.mountComponent(
ViewCompatComponent.get(TEXT_VIEW_CREATOR, "TextView")
.create(mContext)
.viewBinder(binder));
assertEquals(1, lithoView.getMountItemCount());
TextView view = (TextView) lithoView.getMountItemAt(0).getContent();
assertEquals("Hello World!", view.getText());
}
@Test
public void testPrepare() throws Exception {
ViewCompatComponent.ViewBinder<TextView> binder =
new ViewCompatComponent.ViewBinder<TextView>() {
private String mState;
@Override
public void prepare() {
mState = "Hello World!";
}
@Override
public void bind(TextView view) {
view.setText(mState);
}
@Override
public void unbind(TextView view) {
}
};
LithoView lithoView = ComponentTestHelper.mountComponent(
ViewCompatComponent.get(TEXT_VIEW_CREATOR, "TextView")
.create(mContext)
.viewBinder(binder));
assertEquals(1, lithoView.getMountItemCount());
TextView view = (TextView) lithoView.getMountItemAt(0).getContent();
assertEquals("Hello World!", view.getText());
}
@Test
public void testUnbind() throws Exception {
ViewCompatComponent.ViewBinder<TextView> binder =
new ViewCompatComponent.ViewBinder<TextView>() {
private String mState;
@Override
public void prepare() {
mState = "Hello World!";
}
@Override
public void bind(TextView view) {
view.setText(mState);
}
@Override
public void unbind(TextView view) {
view.setText("");
}
};
LithoView lithoView = ComponentTestHelper.mountComponent(
ViewCompatComponent.get(TEXT_VIEW_CREATOR, "TextView")
.create(mContext)
.viewBinder(binder));
ComponentTestHelper.unbindComponent(lithoView);
assertEquals(1, lithoView.getMountItemCount());
TextView view = (TextView) lithoView.getMountItemAt(0).getContent();
assertEquals("", view.getText());
}
}