Test button state

This commit is contained in:
Sylvia van Os
2019-12-11 14:23:13 +01:00
parent 72227f19e8
commit 3aeea02300

View File

@@ -0,0 +1,100 @@
package protect.card_locker;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config;
import static org.junit.Assert.assertEquals;
import static org.robolectric.Shadows.shadowOf;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 23)
public class BarcodeSelectorActivityTest {
@Test
public void emptyStateTest()
{
ActivityController activityController = Robolectric.buildActivity(BarcodeSelectorActivity.class).create();
activityController.start();
activityController.resume();
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
// No card ID by default
assertEquals(cardId.getText().toString(), "");
// Button should be visible but disabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(false, noBarcodeButton.isEnabled());
}
@Test
public void nonEmptyStateTest() throws InterruptedException
{
ActivityController activityController = Robolectric.buildActivity(BarcodeSelectorActivity.class).create();
activityController.start();
activityController.resume();
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
cardId.setText("abcdefg");
activityController.pause();
activityController.resume();
// Button should be visible and enabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(true, noBarcodeButton.isEnabled());
// Clicking button should create "empty" barcode
activity.findViewById(R.id.noBarcode).performClick();
Intent resultIntent = shadowOf(activity).getResultIntent();
assertEquals("", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT));
assertEquals("abcdefg", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_CONTENTS));
}
@Test
public void nonEmptyToEmptyStateTest() throws InterruptedException
{
ActivityController activityController = Robolectric.buildActivity(BarcodeSelectorActivity.class).create();
activityController.start();
activityController.resume();
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
cardId.setText("abcdefg");
activityController.pause();
activityController.resume();
// Button should be visible and enabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(true, noBarcodeButton.isEnabled());
cardId.setText("");
activityController.pause();
activityController.resume();
// Button should be visible but disabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(false, noBarcodeButton.isEnabled());
}
}