diff --git a/integration-tests/src/androidTest/java/com/iterable/integration/tests/EmbeddedMessageIntegrationTest.kt b/integration-tests/src/androidTest/java/com/iterable/integration/tests/EmbeddedMessageIntegrationTest.kt
index c5cb10bb7..bd30e5621 100644
--- a/integration-tests/src/androidTest/java/com/iterable/integration/tests/EmbeddedMessageIntegrationTest.kt
+++ b/integration-tests/src/androidTest/java/com/iterable/integration/tests/EmbeddedMessageIntegrationTest.kt
@@ -21,7 +21,6 @@ import org.json.JSONObject
import org.junit.After
import org.junit.Assert
import org.junit.Before
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import java.util.concurrent.TimeUnit
@@ -110,12 +109,6 @@ class EmbeddedMessageIntegrationTest : BaseIntegrationTest() {
}
@Test
- @Ignore(
- "BCIT backend returns `placements: []` for our dated test user even with the " +
- "iOS-shape isPremium false→true transition that works for iOS. Likely a BCIT " +
- "Iterable-project configuration gap (no Android-targeting embedded campaign). " +
- "Re-enable once the backend side is set up."
- )
fun testEmbeddedMessageMVP() {
// Step 1: Ensure user is signed in
Log.d(TAG, "📧 Step 1: Ensuring user is signed in...")
@@ -141,17 +134,17 @@ class EmbeddedMessageIntegrationTest : BaseIntegrationTest() {
}
Assert.assertTrue("FragmentContainerView should exist in EmbeddedMessageTestActivity", viewReady)
- // Drive a clean isPremium false→true transition. Mirrors the iOS BCIT embedded
- // test — the BCIT campaign sends on the eligibility transition, not on a flat
- // eligibility check.
- setIsPremium(false)
+ // Drive a clean standard→premium membership transition. Mirrors the iOS BCIT
+ // embedded test — the BCIT campaign's audience predicate is on
+ // `membershipLevel == "premium"`.
+ setMembershipLevel("standard")
syncMessagesAndWait()
Assert.assertFalse(
- "User should not be eligible for placement $TEST_PLACEMENT_ID with isPremium=false",
+ "User should not be eligible for placement $TEST_PLACEMENT_ID with membershipLevel=standard",
IterableApi.getInstance().embeddedManager.getPlacementIds().contains(TEST_PLACEMENT_ID)
)
- setIsPremium(true)
+ setMembershipLevel("premium")
val placementIds = syncAndWaitForPlacement(TEST_PLACEMENT_ID, timeoutSeconds = 30)
Assert.assertTrue(
"Placement ID $TEST_PLACEMENT_ID should exist, but found: $placementIds",
@@ -260,8 +253,8 @@ class EmbeddedMessageIntegrationTest : BaseIntegrationTest() {
Log.d(TAG, "✅✅✅ Test completed successfully! All steps passed.")
}
- private fun setIsPremium(value: Boolean) {
- IterableApi.getInstance().updateUser(JSONObject().put("isPremium", value))
+ private fun setMembershipLevel(level: String) {
+ IterableApi.getInstance().updateUser(JSONObject().put("membershipLevel", level))
Thread.sleep(3000)
}
diff --git a/integration-tests/src/main/java/com/iterable/integration/tests/activities/EmbeddedMessageTestActivity.kt b/integration-tests/src/main/java/com/iterable/integration/tests/activities/EmbeddedMessageTestActivity.kt
index 7f9d05935..2125a368e 100644
--- a/integration-tests/src/main/java/com/iterable/integration/tests/activities/EmbeddedMessageTestActivity.kt
+++ b/integration-tests/src/main/java/com/iterable/integration/tests/activities/EmbeddedMessageTestActivity.kt
@@ -38,46 +38,45 @@ class EmbeddedMessageTestActivity : AppCompatActivity() {
private fun setupClickListeners() {
checkIsPremiumButton.setOnClickListener {
- checkIsPremiumStatus()
+ checkMembershipStatus()
}
-
+
isPremiumSwitch.setOnCheckedChangeListener { _, isChecked ->
- updateUserIsPremium(isChecked)
+ updateUserMembershipLevel(if (isChecked) "premium" else "standard")
}
-
+
syncMessagesButton.setOnClickListener {
syncEmbeddedMessages()
}
}
-
- private fun checkIsPremiumStatus() {
+
+ private fun checkMembershipStatus() {
AlertDialog.Builder(this)
- .setTitle("isPremium Status")
+ .setTitle("Membership Level")
.setMessage("User data fields are stored on the server, not in the SDK.\n\n" +
- "To check isPremium status:\n" +
+ "To check membershipLevel:\n" +
"1. Check server logs/dashboard\n" +
"2. Call server API to get user profile\n" +
"3. Check logcat for updateUser calls")
.setPositiveButton("OK", null)
.show()
}
-
- private fun updateUserIsPremium(isPremium: Boolean) {
- val statusText = if (isPremium) "true" else "false"
- updateStatus("Updating user (isPremium = $statusText)...")
-
+
+ private fun updateUserMembershipLevel(level: String) {
+ updateStatus("Updating user (membershipLevel = $level)...")
+
val dataFields = JSONObject().apply {
- put("isPremium", isPremium)
+ put("membershipLevel", level)
}
-
+
isPremiumSwitch.isEnabled = false
IterableApi.getInstance().updateUser(dataFields)
-
- Toast.makeText(this, "updateUser called (isPremium = $statusText)\nWait 5 seconds then sync messages", Toast.LENGTH_LONG).show()
-
+
+ Toast.makeText(this, "updateUser called (membershipLevel = $level)\nWait a few seconds then sync messages", Toast.LENGTH_LONG).show()
+
isPremiumSwitch.postDelayed({
isPremiumSwitch.isEnabled = true
- updateStatus("User updated (isPremium = $statusText) - Sync messages to verify")
+ updateStatus("User updated (membershipLevel = $level) — Sync messages to verify")
}, 1000)
}
diff --git a/integration-tests/src/main/res/layout/activity_embedded_message_test.xml b/integration-tests/src/main/res/layout/activity_embedded_message_test.xml
index 43d6762e8..03dfd889d 100644
--- a/integration-tests/src/main/res/layout/activity_embedded_message_test.xml
+++ b/integration-tests/src/main/res/layout/activity_embedded_message_test.xml
@@ -24,7 +24,7 @@
android:id="@+id/btnCheckIsPremium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="Check isPremium Status"
+ android:text="Check Membership Level"
android:layout_marginBottom="8dp" />