extracting stage ordering to its own class with test
This commit is contained in:
parent
1a76b4d680
commit
2d7b71f70d
|
@ -252,16 +252,7 @@ class FtueAuthVariant(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FlowResult.orderedStages() = when {
|
private fun FlowResult.orderedStages() = when {
|
||||||
vectorFeatures.isOnboardingCombinedRegisterEnabled() -> missingStages.sortedBy {
|
vectorFeatures.isOnboardingCombinedRegisterEnabled() -> missingStages.sortedWith(FtueMissingRegistrationStagesComparator())
|
||||||
when (it) {
|
|
||||||
is Stage.Email -> 0
|
|
||||||
is Stage.Msisdn -> 1
|
|
||||||
is Stage.Terms -> 2
|
|
||||||
is Stage.ReCaptcha -> 3
|
|
||||||
is Stage.Other -> 4
|
|
||||||
is Stage.Dummy -> 5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else -> missingStages
|
else -> missingStages
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package im.vector.app.features.onboarding.ftueauth
|
||||||
|
|
||||||
|
import org.matrix.android.sdk.api.auth.registration.Stage
|
||||||
|
|
||||||
|
class FtueMissingRegistrationStagesComparator : Comparator<Stage> {
|
||||||
|
|
||||||
|
override fun compare(a: Stage?, b: Stage?): Int {
|
||||||
|
return (a?.toPriority() ?: 0) - (b?.toPriority() ?: 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Stage.toPriority() = when (this) {
|
||||||
|
is Stage.Email -> 0
|
||||||
|
is Stage.Msisdn -> 1
|
||||||
|
is Stage.Terms -> 2
|
||||||
|
is Stage.ReCaptcha -> 3
|
||||||
|
is Stage.Other -> 4
|
||||||
|
is Stage.Dummy -> 5
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package im.vector.app.features.onboarding.ftueauth
|
||||||
|
|
||||||
|
import im.vector.app.test.fixtures.aDummyStage
|
||||||
|
import im.vector.app.test.fixtures.aMsisdnStage
|
||||||
|
import im.vector.app.test.fixtures.aRecaptchaStage
|
||||||
|
import im.vector.app.test.fixtures.aTermsStage
|
||||||
|
import im.vector.app.test.fixtures.anEmailStage
|
||||||
|
import im.vector.app.test.fixtures.anOtherStage
|
||||||
|
import org.amshove.kluent.shouldBeEqualTo
|
||||||
|
import org.junit.Test
|
||||||
|
|
||||||
|
class FtueMissingRegistrationStagesComparatorTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `when ordering stages, then prioritizes email`() {
|
||||||
|
val input = listOf(
|
||||||
|
aDummyStage(),
|
||||||
|
anOtherStage(),
|
||||||
|
aMsisdnStage(),
|
||||||
|
anEmailStage(),
|
||||||
|
aRecaptchaStage(),
|
||||||
|
aTermsStage()
|
||||||
|
)
|
||||||
|
|
||||||
|
val result = input.sortedWith(FtueMissingRegistrationStagesComparator())
|
||||||
|
|
||||||
|
result shouldBeEqualTo listOf(
|
||||||
|
anEmailStage(),
|
||||||
|
aMsisdnStage(),
|
||||||
|
aTermsStage(),
|
||||||
|
aRecaptchaStage(),
|
||||||
|
anOtherStage(),
|
||||||
|
aDummyStage()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package im.vector.app.test.fixtures
|
||||||
|
|
||||||
|
import org.matrix.android.sdk.api.auth.registration.Stage
|
||||||
|
|
||||||
|
fun aDummyStage() = Stage.Dummy(mandatory = true)
|
||||||
|
fun anEmailStage() = Stage.Email(mandatory = true)
|
||||||
|
fun aMsisdnStage() = Stage.Msisdn(mandatory = true)
|
||||||
|
fun aTermsStage() = Stage.Terms(mandatory = true, policies = emptyMap<String, String>())
|
||||||
|
fun aRecaptchaStage() = Stage.ReCaptcha(mandatory = true, publicKey = "any-key")
|
||||||
|
fun anOtherStage() = Stage.Other(mandatory = true, type = "raw-type", params = emptyMap<String, String>())
|
Loading…
Reference in New Issue