|
|
@ -10,6 +10,7 @@ import mozilla.components.service.glean.testing.GleanTestRule
|
|
|
|
import mozilla.components.support.test.robolectric.testContext
|
|
|
|
import mozilla.components.support.test.robolectric.testContext
|
|
|
|
import org.junit.Assert.assertEquals
|
|
|
|
import org.junit.Assert.assertEquals
|
|
|
|
import org.junit.Assert.assertFalse
|
|
|
|
import org.junit.Assert.assertFalse
|
|
|
|
|
|
|
|
import org.junit.Assert.assertNotNull
|
|
|
|
import org.junit.Assert.assertNull
|
|
|
|
import org.junit.Assert.assertNull
|
|
|
|
import org.junit.Assert.assertTrue
|
|
|
|
import org.junit.Assert.assertTrue
|
|
|
|
import org.junit.Rule
|
|
|
|
import org.junit.Rule
|
|
|
@ -28,24 +29,24 @@ internal class InstallReferrerMetricsServiceTest {
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun testUtmParamsFromUrl() {
|
|
|
|
fun testUtmParamsFromUrl() {
|
|
|
|
assertEquals("SOURCE", UTMParams.fromUrl("https://example.com?utm_source=SOURCE").source)
|
|
|
|
assertEquals("SOURCE", UTMParams.fromQueryString("utm_source=SOURCE").source)
|
|
|
|
assertEquals("MEDIUM", UTMParams.fromUrl("https://example.com?utm_medium=MEDIUM").medium)
|
|
|
|
assertEquals("MEDIUM", UTMParams.fromQueryString("utm_medium=MEDIUM").medium)
|
|
|
|
assertEquals("CAMPAIGN", UTMParams.fromUrl("https://example.com?utm_campaign=CAMPAIGN").campaign)
|
|
|
|
assertEquals("CAMPAIGN", UTMParams.fromQueryString("utm_campaign=CAMPAIGN").campaign)
|
|
|
|
assertEquals("TERM", UTMParams.fromUrl("https://example.com?utm_term=TERM").term)
|
|
|
|
assertEquals("TERM", UTMParams.fromQueryString("utm_term=TERM").term)
|
|
|
|
assertEquals("CONTENT", UTMParams.fromUrl("https://example.com?utm_content=CONTENT").content)
|
|
|
|
assertEquals("CONTENT", UTMParams.fromQueryString("utm_content=CONTENT").content)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun testUtmParamsFromUrlWithSpaces() {
|
|
|
|
fun testUtmParamsFromUrlWithSpaces() {
|
|
|
|
assertEquals("WITH SPACE", UTMParams.fromUrl("https://example.com?utm_source=WITH+SPACE").source)
|
|
|
|
assertEquals("WITH SPACE", UTMParams.fromQueryString("utm_source=WITH+SPACE").source)
|
|
|
|
assertEquals("WITH SPACE", UTMParams.fromUrl("https://example.com?utm_medium=WITH%20SPACE").medium)
|
|
|
|
assertEquals("WITH SPACE", UTMParams.fromQueryString("utm_medium=WITH%20SPACE").medium)
|
|
|
|
assertEquals("WITH SPACE", UTMParams.fromUrl("https://example.com?utm_campaign=WITH SPACE").campaign)
|
|
|
|
assertEquals("WITH SPACE", UTMParams.fromQueryString("utm_campaign=WITH SPACE").campaign)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun testUtmParamsFromUrlWithMissingParams() {
|
|
|
|
fun testUtmParamsFromUrlWithMissingParams() {
|
|
|
|
assertNull(UTMParams.fromUrl("https://example.com?missing=").source)
|
|
|
|
assertNull(UTMParams.fromQueryString("missing=").source)
|
|
|
|
assertEquals("", UTMParams.fromUrl("https://example.com?utm_source=").source)
|
|
|
|
assertEquals("", UTMParams.fromQueryString("utm_source=").source)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
@ -117,7 +118,7 @@ internal class InstallReferrerMetricsServiceTest {
|
|
|
|
|
|
|
|
|
|
|
|
val expected = UTMParams(source = "SOURCE", medium = "MEDIUM", campaign = "CAMPAIGN", content = "CONTENT", term = "TERM")
|
|
|
|
val expected = UTMParams(source = "SOURCE", medium = "MEDIUM", campaign = "CAMPAIGN", content = "CONTENT", term = "TERM")
|
|
|
|
val observed = UTMParams.fromSettings(settings)
|
|
|
|
val observed = UTMParams.fromSettings(settings)
|
|
|
|
assertEquals(observed, expected)
|
|
|
|
assertEquals(expected, observed)
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals("SOURCE", PlayStoreAttribution.source.testGetValue())
|
|
|
|
assertEquals("SOURCE", PlayStoreAttribution.source.testGetValue())
|
|
|
|
assertEquals("MEDIUM", PlayStoreAttribution.medium.testGetValue())
|
|
|
|
assertEquals("MEDIUM", PlayStoreAttribution.medium.testGetValue())
|
|
|
@ -139,4 +140,43 @@ internal class InstallReferrerMetricsServiceTest {
|
|
|
|
val service = InstallReferrerMetricsService(context)
|
|
|
|
val service = InstallReferrerMetricsService(context)
|
|
|
|
assertEquals(MetricServiceType.Marketing, service.type)
|
|
|
|
assertEquals(MetricServiceType.Marketing, service.type)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
|
|
|
fun testDecodeReferrerUrl() {
|
|
|
|
|
|
|
|
// Example from https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder
|
|
|
|
|
|
|
|
val params = UTMParams.fromURLString(
|
|
|
|
|
|
|
|
"https://play.google.com/store/apps/details?id=com.example.application" +
|
|
|
|
|
|
|
|
"&referrer=utm_source%3Dgoogle" +
|
|
|
|
|
|
|
|
"%26utm_medium%3Dcpc" +
|
|
|
|
|
|
|
|
"%26utm_term%3Drunning%252Bshoes" +
|
|
|
|
|
|
|
|
"%26utm_content%3Dlogolink" +
|
|
|
|
|
|
|
|
"%26utm_campaign%3Dspring_sale",
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
assertNotNull(params)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val expected = UTMParams(
|
|
|
|
|
|
|
|
source = "google",
|
|
|
|
|
|
|
|
medium = "cpc",
|
|
|
|
|
|
|
|
campaign = "spring_sale",
|
|
|
|
|
|
|
|
content = "logolink",
|
|
|
|
|
|
|
|
term = "running+shoes",
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals(expected, params)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
|
|
|
fun testDecodeReferrerAdMobUrl() {
|
|
|
|
|
|
|
|
val expected = UTMParams(source = "SOURCE", medium = "MEDIUM", campaign = "CAMPAIGN", content = "CONTENT", term = "TERM")
|
|
|
|
|
|
|
|
// Generated with https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder
|
|
|
|
|
|
|
|
val fromUrl = UTMParams.fromURLString(
|
|
|
|
|
|
|
|
"https://play.google.com/store/apps/details?id=org.mozilla.fenix&referrer=utm_source%3DSOURCE%26utm_medium%3DMEDIUM%26utm_term%3DTERM%26utm_content%3DCONTENT%26utm_campaign%3DCAMPAIGN%26anid%3Dadmob",
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
assertNotNull(fromUrl)
|
|
|
|
|
|
|
|
assertEquals(expected, fromUrl)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val fromReferrerAttribute = UTMParams.fromURLString("utm_source%3DSOURCE%26utm_medium%3DMEDIUM%26utm_term%3DTERM%26utm_content%3DCONTENT%26utm_campaign%3DCAMPAIGN%26anid%3Dadmob")
|
|
|
|
|
|
|
|
assertNotNull(fromReferrerAttribute)
|
|
|
|
|
|
|
|
assertEquals(expected, fromReferrerAttribute)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|