package br.com.concretesolutions.canarinho.test.watcher;
import android.app.Activity;
import android.support.design.widget.TextInputLayout;
import android.widget.EditText;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.util.ActivityController;
import br.com.concretesolutions.canarinho.sample.BuildConfig;
import br.com.concretesolutions.canarinho.watcher.ValorMonetarioWatcher;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.robolectric.Robolectric.buildActivity;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 22)
public class ValorMonetarioWatcherTest {
private EditText editText;
@Before
public void setUp() {
final ActivityController<Activity> activityController = buildActivity(Activity.class);
final Activity activity = activityController.create().get();
activityController.start().resume().visible();
TextInputLayout textInputLayout;
activity.setContentView(textInputLayout = new TextInputLayout(activity));
textInputLayout.addView(editText = new EditText(activity));
editText.setText("0,00");
}
@Test
public void watcher_formataOk() {
editText.addTextChangedListener(new ValorMonetarioWatcher());
editText.append("1234567890");
assertThat(editText.getText().toString(), is("12.345.678,90"));
}
@Test
public void watcher_formataOkComSimbolo() {
editText.addTextChangedListener(new ValorMonetarioWatcher.Builder()
.comSimboloReal()
.comMantemZerosAoLimpar()
.build());
editText.append("1234567890");
assertThat(editText.getText().toString(), is("R$ 12.345.678,90"));
}
@Test
public void watcher_canEmptyTextAndKeepZeroes() {
editText.addTextChangedListener(new ValorMonetarioWatcher.Builder()
.comSimboloReal()
.comMantemZerosAoLimpar()
.build());
editText.append("1234567890");
assertThat(editText.getText().toString(), is("R$ 12.345.678,90"));
editText.getText().clear();
assertThat(editText.getText().toString(), is("R$ 0,00"));
editText.getText().append('1');
assertThat(editText.getText().toString(), is("R$ 0,01"));
}
@Test
public void watcher_canEmptyTextWithoutZeroes() {
editText.addTextChangedListener(new ValorMonetarioWatcher.Builder()
.comSimboloReal()
.build());
editText.append("1234567890");
assertThat(editText.getText().toString(), is("R$ 12.345.678,90"));
editText.getText().clear();
assertThat(editText.getText().toString(), is(""));
editText.getText().append('1');
assertThat(editText.getText().toString(), is("R$ 0,01"));
}
}