From 3aeea0230039643efe6d0371a3fdb3fbb327a32c Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Wed, 11 Dec 2019 14:23:13 +0100 Subject: [PATCH] Test button state --- .../BarcodeSelectorActivityTest.java | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java diff --git a/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java b/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java new file mode 100644 index 000000000..dc8d5b053 --- /dev/null +++ b/app/src/test/java/protect/card_locker/BarcodeSelectorActivityTest.java @@ -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()); + } +}