mirror of
https://github.com/MinimalBible/MinimalBible
synced 2024-11-21 15:38:35 -05:00
Get Robolectric test support working!
This commit is contained in:
parent
3ce3d16489
commit
71fb362ffe
@ -6,6 +6,7 @@ apply plugin: 'com.github.kt3k.coveralls'
|
|||||||
evaluationDependsOn(":app")
|
evaluationDependsOn(":app")
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
|
ext.kotlin_version = '0.10.770'
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
@ -13,6 +14,7 @@ buildscript {
|
|||||||
dependencies {
|
dependencies {
|
||||||
// Version lock for https://github.com/kt3k/coveralls-gradle-plugin/issues/27
|
// Version lock for https://github.com/kt3k/coveralls-gradle-plugin/issues/27
|
||||||
classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1x'
|
classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1x'
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,6 +22,7 @@ repositories {
|
|||||||
maven {
|
maven {
|
||||||
url 'http://repository.jetbrains.com/repo'
|
url 'http://repository.jetbrains.com/repo'
|
||||||
}
|
}
|
||||||
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Make sure we test against the Debug variant
|
// TODO: Make sure we test against the Debug variant
|
||||||
@ -51,9 +54,11 @@ dependencies {
|
|||||||
testCompile firstVariant.javaCompile.classpath
|
testCompile firstVariant.javaCompile.classpath
|
||||||
testCompile firstVariant.javaCompile.outputs.files
|
testCompile firstVariant.javaCompile.outputs.files
|
||||||
testCompile files(androidModule.plugins.findPlugin("com.android.application").getBootClasspath())
|
testCompile files(androidModule.plugins.findPlugin("com.android.application").getBootClasspath())
|
||||||
|
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
def buildExcludeTree(path, excludes) {
|
def buildExcludeTree(path, excludes) {
|
||||||
|
//noinspection GroovyAssignabilityCheck
|
||||||
def tree = fileTree(path).exclude(excludes)
|
def tree = fileTree(path).exclude(excludes)
|
||||||
tree
|
tree
|
||||||
}
|
}
|
||||||
@ -87,6 +92,6 @@ coveralls {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(Test) {
|
tasks.withType(Test) {
|
||||||
scanForTestClasses = false
|
scanForTestClasses = true
|
||||||
includes = testIncludes
|
includes = testIncludes
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package org.bspeice.minimalbible.activity.search;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.robolectric.Robolectric;
|
||||||
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Right now this is the only Robolectric test. Some clarifications on this should be made:
|
||||||
|
* There's an ongoing issue with the ActionBarDrawerToggle, meaning that the BasicSearch
|
||||||
|
* activity is the only one eligible for testing
|
||||||
|
* (https://github.com/robolectric/robolectric/issues/1424)
|
||||||
|
* <p/>
|
||||||
|
* Additionally, Robolectric only supports up to Jellybean, which is why the emulateSdk.
|
||||||
|
* Finally, in Gradle, tests run relative to app-test, whereas the IDE may try and run
|
||||||
|
* things in the project root. Be careful when changing the manifest location.
|
||||||
|
*/
|
||||||
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(emulateSdk = 18, manifest = "../app/src/main/AndroidManifest.xml")
|
||||||
|
public class BasicSearchTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBuildActivity() {
|
||||||
|
BasicSearch activity = Robolectric.buildActivity(BasicSearch.class)
|
||||||
|
.create().get();
|
||||||
|
assertNotNull(activity);
|
||||||
|
}
|
||||||
|
}
|
@ -18,7 +18,7 @@ public class SearchModules {
|
|||||||
@Provides
|
@Provides
|
||||||
SearchProvider searchProvider(@Named("MainBook") Book book,
|
SearchProvider searchProvider(@Named("MainBook") Book book,
|
||||||
IndexManager indexManager) {
|
IndexManager indexManager) {
|
||||||
return new SearchProvider(book, indexManager);
|
return new SearchProvider(indexManager, book);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,27 +10,31 @@ import org.crosswire.jsword.index.IndexManager
|
|||||||
* This is the entry point for handling the actual bible search. Likely will support
|
* This is the entry point for handling the actual bible search. Likely will support
|
||||||
* an "advanced" search in the future, but for now, basicTextSearch is what you get.
|
* an "advanced" search in the future, but for now, basicTextSearch is what you get.
|
||||||
*/
|
*/
|
||||||
class SearchProvider(val b: Book, val indexManager: IndexManager) {
|
class SearchProvider(val indexManager: IndexManager, val b: Book?) {
|
||||||
|
|
||||||
val defaultSearchType = SearchType.ANY_WORDS
|
val defaultSearchType = SearchType.ANY_WORDS
|
||||||
|
|
||||||
[suppress("UNUSED_PARAMETER")]
|
[suppress("UNUSED_PARAMETER")]
|
||||||
public fun basicTextSearch(text: String): List<Verse> {
|
public fun basicTextSearch(text: String): List<Verse> {
|
||||||
if (!isSearchAvailable()) {
|
if (!isSearchAvailable()) {
|
||||||
Log.w("SearchProvider", "Search unavailable, index status of ${b.getInitials()}: ${b.getIndexStatus()}")
|
Log.w("SearchProvider", "Search unavailable, index status of ${b?.getInitials()}: ${b?.getIndexStatus()}")
|
||||||
return listOf()
|
return listOf()
|
||||||
}
|
}
|
||||||
|
|
||||||
val searchText = defaultSearchType decorate text
|
val searchText = defaultSearchType decorate text
|
||||||
val results = b find searchText
|
// We already checked for null in isSearchAvailable(), but Kotlin
|
||||||
|
// doesn't keep track of that (yet)
|
||||||
|
val results = b!!.find(searchText)
|
||||||
return results map { it as Verse }
|
return results map { it as Verse }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler to check if the index is available - because it doesn't
|
* Handler to check if the index is available - because it doesn't
|
||||||
* seem to register itself properly in the book metadata
|
* seem to register itself properly in the book metadata.
|
||||||
|
* This check MUST guarantee that the book is not null.
|
||||||
*/
|
*/
|
||||||
public fun isSearchAvailable(): Boolean =
|
public fun isSearchAvailable(): Boolean =
|
||||||
|
b != null &&
|
||||||
indexManager isIndexed b
|
indexManager isIndexed b
|
||||||
|
|
||||||
}
|
}
|
||||||
|
3
app/src/main/project.properties
Normal file
3
app/src/main/project.properties
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# suppress inspection "UnusedProperty" for whole file
|
||||||
|
android.library.reference.1=../../build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.3
|
||||||
|
android.library.reference.2=../../build/intermediates/exploded-aar/com.android.support/support-v4/21.0.3
|
Loading…
Reference in New Issue
Block a user