Skip to content

Commit 423882b

Browse files
First couple of tests
1 parent f076097 commit 423882b

File tree

8 files changed

+227
-17
lines changed

8 files changed

+227
-17
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package com.sofakingforever.library
2+
3+
import android.app.Application
4+
import com.sofakingforever.analytics.Analytics
5+
import com.sofakingforever.analytics.AnalyticsSettings
6+
import com.sofakingforever.analytics.exceptions.UnsupportedEventException
7+
import com.sofakingforever.library.dispatcher.TestKit
8+
import com.sofakingforever.library.dispatcher.TestableDispatcher
9+
import com.sofakingforever.library.events.TestEvent
10+
import com.sofakingforever.library.events.UnsupportedEvent
11+
import org.junit.Test
12+
13+
class AnalyticsUnitTest {
14+
15+
16+
private val dispatcher = TestableDispatcher()
17+
private val analytics = Analytics(Application(), dispatcher).apply {
18+
19+
// todo - java.lang.RuntimeException: Method e in android.util.Log not mocked. See http://g.co/androidstudio/not-mocked for details.
20+
this.log = false
21+
22+
this.settings.exceptionHandler = object : AnalyticsSettings.ExceptionHandler {
23+
override fun onException(e: Exception) {
24+
raisedException = e
25+
}
26+
27+
}
28+
}
29+
private var raisedException: Exception? = null
30+
31+
@Test
32+
fun testAnalytics() {
33+
34+
// track some events
35+
trackTestEvents()
36+
37+
// assert events
38+
assertEvents()
39+
40+
// assert no exceptions were raised
41+
assert(raisedException == null)
42+
43+
// track an unsupported event
44+
analytics.track(UnsupportedEvent())
45+
46+
47+
assert(raisedException != null && raisedException is UnsupportedEventException)
48+
49+
}
50+
51+
52+
private fun trackTestEvents() {
53+
54+
analytics.track(TestEvent(1))
55+
56+
analytics.setDispatcherEnabled(TestableDispatcher.DispatcherName, false)
57+
58+
analytics.track(TestEvent(2))
59+
60+
analytics.setDispatcherEnabled(TestableDispatcher.DispatcherName, true)
61+
62+
analytics.track(TestEvent(3))
63+
64+
analytics.setKitEnabled(TestKit.instance, false)
65+
66+
analytics.track(TestEvent(4))
67+
68+
analytics.setKitEnabled(TestKit.instance, true)
69+
70+
analytics.track(TestEvent(5))
71+
72+
}
73+
74+
75+
private fun assertEvents() {
76+
77+
78+
val eventList = dispatcher.eventList
79+
80+
// expect to find 3 events + init event
81+
assert(eventList.size == 4)
82+
assert(eventList[0] is TestableDispatcher.InitEvent)
83+
assert((eventList[1] as TestEvent).number == 1)
84+
assert((eventList[2] as TestEvent).number == 3)
85+
assert((eventList[3] as TestEvent).number == 5)
86+
}
87+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.sofakingforever.library
2+
3+
import android.app.Application
4+
import com.sofakingforever.analytics.Analytics
5+
import com.sofakingforever.analytics.AnalyticsSettings
6+
import com.sofakingforever.library.dispatcher.TestKit
7+
import com.sofakingforever.library.dispatcher.TestableDispatcher
8+
import com.sofakingforever.library.events.TestEvent
9+
import org.junit.Test
10+
11+
12+
class DispatcherTest {
13+
14+
private lateinit var raisedException: Exception
15+
16+
@Test
17+
fun testDispatcher() {
18+
19+
val dispatcher = TestableDispatcher()
20+
21+
dispatcher.initDispatcher(Application())
22+
23+
dispatcher.track(TestEvent(1))
24+
25+
dispatcher.track(TestEvent(2))
26+
27+
dispatcher.track(TestEvent(3))
28+
29+
dispatcher.track(TestEvent(4))
30+
31+
dispatcher.track(TestEvent(5))
32+
33+
val eventList = dispatcher.eventList
34+
35+
// expect to find 5 events + init event
36+
assert(eventList.size == 6)
37+
assert(eventList[0] is TestableDispatcher.InitEvent)
38+
assert((eventList[1] as TestEvent).number == 1)
39+
40+
// that's enough
41+
42+
}
43+
}

analytics/src/test/java/com/sofakingforever/library/ExampleUnitTest.java

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.sofakingforever.library.dispatcher
2+
3+
import com.sofakingforever.analytics.AnalyticsKit
4+
5+
class TestKit private constructor() : AnalyticsKit {
6+
override val name: String = "Test Kit"
7+
8+
9+
private object Holder {
10+
val INSTANCE = TestKit()
11+
}
12+
13+
companion object {
14+
val instance: TestKit by lazy { Holder.INSTANCE }
15+
}
16+
17+
18+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.sofakingforever.library.dispatcher
2+
3+
import android.content.Context
4+
import com.sofakingforever.analytics.AnalyticsDispatcher
5+
import com.sofakingforever.analytics.AnalyticsKit
6+
import com.sofakingforever.analytics.events.ContentViewEvent
7+
import com.sofakingforever.analytics.events.CustomEvent
8+
import com.sofakingforever.analytics.events.InviteEvent
9+
import com.sofakingforever.analytics.events.SetUserProperty
10+
import com.sofakingforever.analytics.events.base.Event
11+
import com.sofakingforever.library.events.InitTestEvent
12+
13+
class TestableDispatcher : AnalyticsDispatcher {
14+
15+
override val init: Boolean = true
16+
17+
override val kit: AnalyticsKit = TestKit.instance
18+
19+
override val dispatcherName: String = DispatcherName
20+
21+
22+
val eventList: MutableList<Event> = mutableListOf()
23+
24+
override fun initDispatcher(context: Context) {
25+
track(InitTestEvent())
26+
}
27+
28+
override fun trackContentView(contentView: ContentViewEvent) {
29+
eventList.add(contentView)
30+
}
31+
32+
override fun trackCustomEvent(event: CustomEvent) {
33+
eventList.add(event)
34+
}
35+
36+
override fun trackInviteEvent(inviteEvent: InviteEvent) {
37+
eventList.add(inviteEvent)
38+
}
39+
40+
override fun setUserProperty(property: SetUserProperty) {
41+
eventList.add(property)
42+
}
43+
44+
override fun track(event: Event) {
45+
if (event is InitTestEvent) {
46+
eventList.add(event)
47+
} else {
48+
super.track(event)
49+
}
50+
}
51+
52+
companion object {
53+
const val DispatcherName = "TestDispatcher"
54+
}
55+
56+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.sofakingforever.library.events
2+
3+
import com.sofakingforever.analytics.events.base.Event
4+
5+
class InitTestEvent : Event
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.sofakingforever.library.events
2+
3+
import com.sofakingforever.analytics.AnalyticsKit
4+
import com.sofakingforever.analytics.events.CustomEvent
5+
6+
class TestEvent(val number: Int) : CustomEvent {
7+
override fun getEventName(kit: AnalyticsKit): String = "Test Event $number"
8+
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.sofakingforever.library.events
2+
3+
import com.sofakingforever.analytics.events.base.Event
4+
5+
/**
6+
* This unsupported event is not handled in the Dispatcher.
7+
* You must override the dispatcher's track function to handle it
8+
*/
9+
class UnsupportedEvent : Event

0 commit comments

Comments
 (0)