From 0c3cc898da70211c4f91e3fb7ccece55c848f6d4 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Mon, 8 Apr 2019 10:54:26 +0200 Subject: [PATCH 1/3] fix issue with filterableClass enum --- .../android/model/realm/Filter.kt | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index 15ad066e..d4fbc6d8 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -11,19 +11,18 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow import org.jetbrains.annotations.TestOnly import java.util.* +import kotlin.reflect.KClass /** * A [Filter] is the top level representation of the filtering system * It contains a list of [FilterElement] describing the complete query to launch * The [Filter] is working closely with a [Filterable] interface providing the entity we want the query being launched on */ -open class Filter() : RealmObject() { +open class Filter(entity:Filterable) : RealmObject() { - constructor(entity:Filterable) : this() { - this.entityType = FilterableClass.filterableClass(entity = entity).ordinal - } + constructor() : this(entity = Session) - private var entityType : Int? = null + private var entityType : Int? = FilterableClass.filterableClass(entity = entity).ordinal private val filterableClass : FilterableClass? get() { entityType?.let { @@ -49,17 +48,26 @@ open class Filter() : RealmObject() { get() { return when (this) { SESSION -> Session::class.java - else -> throw FilterUnhandledEntityException("this entity is not filterable") +// else -> throw FilterUnhandledEntityException("this entity is not filterable") } } + val filterable : Filterable + get() { + return when (this) { + SESSION -> Session.Companion +// else -> throw FilterUnhandledEntityException("this entity is not filterable") + } + } + } companion object { @TestOnly fun queryOn(realm: Realm, entity: Filterable, queries:List): RealmResults<*> { - var realmQuery : RealmQuery = realm.where(FilterableClass.filterableClass(entity).relatedEntity) + val realmEntity : Class < out RealmObject > = FilterableClass.filterableClass(entity).relatedEntity + var realmQuery : RealmQuery = realm.where(realmEntity) queries.forEach { realmQuery = (it.filter(realmQuery, entity)) } @@ -124,12 +132,13 @@ open class Filter() : RealmObject() { } fun queryOn(entity: Filterable) : RealmResults<*> { - val realmEntity : Class < out RealmObject > = filterableClass?.relatedEntity ?: throw FilterMissingEntityException("this filter has no entity initialized") + val filterableClass : FilterableClass = this.filterableClass ?: throw FilterMissingEntityException("this filter has no entity initialized") + val realmEntity : Class < out RealmObject > = filterableClass.relatedEntity var realmQuery : RealmQuery = realm.where(realmEntity) this.filterElements.map { it.queryType }.forEach { - realmQuery = (it.filter(realmQuery, entity)) + realmQuery = (it.filter(realmQuery, filterableClass.filterable)) } return realmQuery.findAll() From 3f0fe54ab5c29d153524a3be25a13c8c888c4d97 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 8 Apr 2019 11:00:06 +0200 Subject: [PATCH 2/3] Try to remove instrumented test for branch dev --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9b65342e..8d3b6941 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,6 +42,9 @@ assembleDebug: instrumentedTests: stage: test + only: + refs: + - master script: - wget --quiet --output-document=android-wait-for-emulator https://raw.githubusercontent.com/travis-ci/travis-cookbooks/0f497eb71291b52a703143c5cd63a217c8766dc9/community-cookbooks/android-sdk/files/default/android-wait-for-emulator - chmod +x android-wait-for-emulator From e63f588325a8568cd5a4f3240d50f8ee19d1d3ab Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Mon, 8 Apr 2019 11:00:53 +0200 Subject: [PATCH 3/3] change queryOn method to reflect the modification of the related entity --- .../unitTests/filter/RealmFilterInstrumentedUnitTest.kt | 2 +- .../main/java/net/pokeranalytics/android/model/realm/Filter.kt | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/RealmFilterInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/RealmFilterInstrumentedUnitTest.kt index f46e7765..9b421570 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/RealmFilterInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/RealmFilterInstrumentedUnitTest.kt @@ -50,7 +50,7 @@ class RealmFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { val newRealm = this.mockRealm newRealm.where(Filter::class.java).equalTo("name", "testSaveLoadCashFilter").findFirst()?.let { foundFilter -> - val sessions = foundFilter.queryOn(Session) + val sessions = foundFilter.results() Assert.assertEquals(1, sessions.size) sessions[0]?.run { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index d4fbc6d8..8fb6ad60 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -11,7 +11,6 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow import org.jetbrains.annotations.TestOnly import java.util.* -import kotlin.reflect.KClass /** * A [Filter] is the top level representation of the filtering system @@ -131,7 +130,7 @@ open class Filter(entity:Filterable) : RealmObject() { return filterElementRow.contains(filtered) } - fun queryOn(entity: Filterable) : RealmResults<*> { + fun results(): RealmResults<*> { val filterableClass : FilterableClass = this.filterableClass ?: throw FilterMissingEntityException("this filter has no entity initialized") val realmEntity : Class < out RealmObject > = filterableClass.relatedEntity var realmQuery : RealmQuery = realm.where(realmEntity)