Skip to content

Commit 4d3825d

Browse files
committed
Small improvements in Framework abstraction
Prep work for #87
1 parent 1bcf435 commit 4d3825d

File tree

9 files changed

+36
-16
lines changed

9 files changed

+36
-16
lines changed

transport-eta-android/data-sharedpreferences/build.gradle

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apply plugin: 'com.android.library'
2-
apply plugin: 'kotlin-kapt'
32
apply plugin: 'kotlin-android'
3+
apply plugin: 'kotlin-kapt'
44
apply plugin: 'kotlinx-serialization'
55
apply plugin: 'kotlin-android-extensions'
66

@@ -9,7 +9,6 @@ android {
99
defaultConfig {
1010
minSdkVersion build_versions.min_sdk
1111
targetSdkVersion build_versions.target_sdk
12-
testInstrumentationRunner "com.joaquimley.transporteta.ui.test.TestRunner"
1312
}
1413

1514
testOptions {

transport-eta-android/data-sharedpreferences/src/main/java/com/joaquimley/transporteta/sharedpreferences/FrameworkLocalStorageImpl.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class FrameworkLocalStorageImpl @Inject constructor(private val sharedPreference
107107
}
108108

109109
private fun getSlot(): Slot? {
110-
// TODO Improve this, also check for updates
110+
// TODO Improve this
111111
return when {
112112
getFromSharedPrefs(Slot.SAVE_SLOT_ONE) == null -> Slot.SAVE_SLOT_ONE
113113
getFromSharedPrefs(Slot.SAVE_SLOT_TWO) == null -> Slot.SAVE_SLOT_TWO

transport-eta-android/data-sharedpreferences/src/test/java/com/joaquimley/transporteta/sharedpreferences/FrameworkLocalStorageTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class FrameworkLocalStorageTest {
4646
robot.stubMapperFromStringToModel(modelStringThree)
4747

4848
// Act
49-
// Nothing <->xo
49+
// Nothing <->
5050
// Assert
5151
verify(mockSharedPreferences, times(1)).getString(FrameworkLocalStorageImpl.Slot.SAVE_SLOT_ONE.name, null)
5252
verify(mockSharedPreferences, times(1)).getString(FrameworkLocalStorageImpl.Slot.SAVE_SLOT_TWO.name, null)

transport-eta-android/presentation/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apply plugin: 'com.android.library'
2-
apply plugin: 'kotlin-kapt'
32
apply plugin: 'kotlin-android'
3+
apply plugin: 'kotlin-kapt'
44
apply plugin: 'kotlin-android-extensions'
55

66
android {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.joaquimley.transporteta.sms
2+
3+
import android.telephony.SmsManager
4+
import javax.inject.Inject
5+
import javax.inject.Singleton
6+
7+
@Singleton
8+
class SmsSender @Inject constructor(private val androidSmsManager: SmsManager) {
9+
10+
// TODO Improve with intents: https://github.com/JoaquimLey/transport-eta/issues/87
11+
fun send(serviceNumber: String, busStopCode: Int) {
12+
androidSmsManager.sendTextMessage(serviceNumber, null, "C $busStopCode", null, null)
13+
14+
}
15+
}gs

transport-eta-android/sms/src/prod/java/com/joaquimley/transporteta/sms/SmsControllerImpl.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.joaquimley.transporteta.sms
22

3-
import android.telephony.SmsManager
43
import android.util.Log
54
import com.joaquimley.transporteta.sms.model.SmsModel
65
import io.reactivex.Single
@@ -12,7 +11,8 @@ import javax.inject.Singleton
1211

1312

1413
@Singleton
15-
class SmsControllerImpl @Inject constructor(private val smsBroadcastReceiver: SmsBroadcastReceiver) : SmsController {
14+
class SmsControllerImpl @Inject constructor(private val smsBroadcastReceiver: SmsBroadcastReceiver,
15+
private val smsSender: SmsSender) : SmsController {
1616

1717

1818
// TODO build a queue for requests
@@ -44,7 +44,7 @@ class SmsControllerImpl @Inject constructor(private val smsBroadcastReceiver: Sm
4444
}
4545

4646
this.busStopCode = busStopCode
47-
SmsManager.getDefault().sendTextMessage(smsBroadcastReceiver.serviceNumber, null, "C $busStopCode", null, null)
47+
smsSender.send(smsBroadcastReceiver.serviceNumber, busStopCode)
4848
return Single.create<SmsModel> { emitter ->
4949
smsRequestDisposable = smsPublishSubject.subscribe({ sms ->
5050
emitter.onSuccess(sms)

transport-eta-android/sms/src/test/java/com/joaquimley/SmsControllerTest.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.joaquimley
33
import com.joaquimley.transporteta.sms.SmsBroadcastReceiver
44
import com.joaquimley.transporteta.sms.SmsController
55
import com.joaquimley.transporteta.sms.SmsControllerImpl
6+
import com.joaquimley.transporteta.sms.SmsSender
67
import com.nhaarman.mockitokotlin2.atLeastOnce
78
import com.nhaarman.mockitokotlin2.mock
89
import com.nhaarman.mockitokotlin2.verify
@@ -16,13 +17,14 @@ class SmsControllerTest {
1617

1718
private val robot = Robot()
1819
private val mockSmsBroadcastReceiver = mock<SmsBroadcastReceiver>()
20+
private val mockSmsManager = mock<SmsSender>()
1921

2022
private lateinit var smsController: SmsController
2123

2224
@Before
2325
fun setup() {
2426
robot.stubSmsBroadcastReceiverSuccess()
25-
smsController = SmsControllerImpl(mockSmsBroadcastReceiver)
27+
smsController = SmsControllerImpl(mockSmsBroadcastReceiver, mockSmsManager)
2628
}
2729

2830
@After

transport-eta-android/ui-mobile/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apply plugin: 'com.android.application'
2-
apply plugin: 'kotlin-kapt'
32
apply plugin: 'kotlin-android'
3+
apply plugin: 'kotlin-kapt'
44
apply plugin: 'kotlin-android-extensions'
55
apply plugin: 'androidx.navigation.safeargs'
66

transport-eta-android/ui-mobile/src/main/java/com/joaquimley/transporteta/ui/di/module/SmsControllerModule.kt

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package com.joaquimley.transporteta.ui.di.module
22

3-
import com.joaquimley.transporteta.sms.SmsBroadcastReceiver
4-
import com.joaquimley.transporteta.sms.SmsBroadcastReceiverImpl
5-
import com.joaquimley.transporteta.sms.SmsController
6-
import com.joaquimley.transporteta.sms.SmsControllerImpl
3+
import android.telephony.SmsManager
4+
import com.joaquimley.transporteta.sms.*
75
import com.joaquimley.transporteta.ui.di.qualifier.SmsServiceInfo
86
import com.joaquimley.transporteta.ui.di.scope.PerApplication
97
import dagger.Module
@@ -40,7 +38,13 @@ class SmsControllerModule {
4038

4139
@Provides
4240
@PerApplication
43-
internal fun provideSmsController(smsBroadcastReceiver: SmsBroadcastReceiver): SmsController {
44-
return SmsControllerImpl(smsBroadcastReceiver)
41+
internal fun provideSmsSender(): com.joaquimley.transporteta.sms.SmsSender {
42+
return SmsSender(SmsManager.getDefault())
43+
}
44+
45+
@Provides
46+
@PerApplication
47+
internal fun provideSmsController(smsBroadcastReceiver: SmsBroadcastReceiver, smsSender: SmsSender): SmsController {
48+
return SmsControllerImpl(smsBroadcastReceiver, smsSender)
4549
}
4650
}

0 commit comments

Comments
 (0)