Skip to content

Commit

Permalink
Update tests and screenshots
Browse files Browse the repository at this point in the history
  • Loading branch information
Serchinastico committed Jan 28, 2019
1 parent 4d94af6 commit 5121c4c
Show file tree
Hide file tree
Showing 32 changed files with 249 additions and 263 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package com.karumi.jetpack.ui.view
package com.karumi.ui.view

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.support.test.InstrumentationRegistry
import android.support.test.espresso.intent.rule.IntentsTestRule
import android.support.test.filters.LargeTest
import android.support.test.rule.ActivityTestRule
import android.support.test.runner.AndroidJUnit4
import com.github.salomonbrys.kodein.Kodein
import com.karumi.jetpack.superheroes.asApp
import com.karumi.jetpack.superheroes.ui.view.ScreenshotTest
import org.junit.Before
import org.junit.Rule
import org.junit.runner.RunWith
Expand All @@ -20,7 +21,7 @@ abstract class AcceptanceTest<T : Activity>(clazz: Class<T>) : ScreenshotTest {

@Rule
@JvmField
val testRule: ActivityTestRule<T> = ActivityTestRule(clazz, true, false)
val testRule: IntentsTestRule<T> = IntentsTestRule(clazz, true, false)

@Before
fun setup() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package com.karumi.jetpack.superheroes.ui.view

import com.github.salomonbrys.kodein.Kodein.Module
import com.github.salomonbrys.kodein.bind
import com.github.salomonbrys.kodein.instance
import com.karumi.jetpack.superheroes.data.repository.SuperHeroRepository
import com.karumi.jetpack.superheroes.domain.model.SuperHero
import com.karumi.ui.view.AcceptanceTest
import com.nhaarman.mockitokotlin2.whenever
import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.mockito.Mock

class MainActivityTest : AcceptanceTest<MainActivity>(MainActivity::class.java) {

companion object {
private const val ANY_NUMBER_OF_SUPER_HEROES = 100
}

@Mock
private lateinit var repository: SuperHeroRepository

@Test
fun showsEmptyCaseIfThereAreNoSuperHeroes() {
givenThereAreNoSuperHeroes()

val activity = startActivity()

compareScreenshot(activity)
}

@Test
fun showsJustOneSuperHero() = runBlocking {
givenThereAreSomeSuperHeroes(1)

val activity = startActivity()

compareScreenshot(activity)
}

@Test
fun showsSuperHeroesIfThereAreSomeSuperHeroes() {
givenThereAreSomeSuperHeroes(ANY_NUMBER_OF_SUPER_HEROES)

val activity = startActivity()

compareScreenshot(activity)
}

@Test
fun showsAvengersBadgeIfASuperHeroIsPartOfTheAvengersTeam() {
givenThereAreSomeAvengers(ANY_NUMBER_OF_SUPER_HEROES)

val activity = startActivity()

compareScreenshot(activity)
}

@Test
fun doesNotShowAvengersBadgeIfASuperHeroIsNotPartOfTheAvengersTeam() {
givenThereAreSomeSuperHeroes(ANY_NUMBER_OF_SUPER_HEROES)

val activity = startActivity()

compareScreenshot(activity)
}

private fun givenThereAreSomeAvengers(numberOfAvengers: Int): List<SuperHero> =
givenThereAreSomeSuperHeroes(numberOfAvengers, areAvengers = true)

private fun givenThereAreSomeSuperHeroes(
numberOfSuperHeroes: Int = 1,
areAvengers: Boolean = false
): List<SuperHero> {
val superHeroes = IntRange(0, numberOfSuperHeroes - 1).map { id ->
val superHeroId = "#$id"
val superHeroName = "SuperHero - $id"
val superHeroDescription = "Description Super Hero - $id"
SuperHero(
superHeroId,
superHeroName,
null,
areAvengers,
superHeroDescription
)
}

whenever(runBlocking { repository.getAllSuperHeroes() }).thenReturn(superHeroes)
return superHeroes
}

private fun givenThereAreNoSuperHeroes() {
whenever(runBlocking { repository.getAllSuperHeroes() }).thenReturn(emptyList())
}

override val testDependencies = Module(allowSilentOverride = true) {
bind<SuperHeroRepository>() with instance(repository)
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.karumi.jetpack.ui.view
package com.karumi.jetpack.superheroes.ui.view

import android.app.Activity
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
package com.karumi.jetpack.ui.view
package com.karumi.jetpack.superheroes.ui.view

import android.os.Bundle
import com.github.salomonbrys.kodein.Kodein.Module
import com.github.salomonbrys.kodein.bind
import com.github.salomonbrys.kodein.instance
import com.karumi.jetpack.superheroes.data.repository.SuperHeroRepository
import com.karumi.jetpack.superheroes.domain.model.SuperHero
import com.karumi.jetpack.superheroes.ui.view.SuperHeroDetailActivity
import com.karumi.mockito.MockitoExtensions.on
import org.funktionale.either.Either
import com.karumi.ui.view.AcceptanceTest
import com.nhaarman.mockitokotlin2.whenever
import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.mockito.Mock

class SuperHeroDetailActivityTest : AcceptanceTest<SuperHeroDetailActivity>(
SuperHeroDetailActivity::class.java) {
SuperHeroDetailActivity::class.java
) {

@Mock private lateinit var repository: SuperHeroRepository
@Mock
private lateinit var repository: SuperHeroRepository

@Test
fun showsAvengersBadgeIfSuperHeroIsPartOfTheAvengersTeam() {
Expand All @@ -36,20 +38,17 @@ class SuperHeroDetailActivityTest : AcceptanceTest<SuperHeroDetailActivity>(
}

private fun givenThereIsASuperHero(isAvenger: Boolean): SuperHero {
val superHero = SuperHero(
id = "id",
name = "SuperHero",
photo = null,
isAvenger = isAvenger,
description = "Super Hero Description"
)
on(repository.getByName("id")).thenReturn(Either.right(superHero))
val superHeroId = "#1"
val superHeroName = "SuperHero"
val superHeroDescription = "Super Hero Description"
val superHero = SuperHero(superHeroId, superHeroName, null, isAvenger, superHeroDescription)
whenever(runBlocking { repository.get(superHeroId) }).thenReturn(superHero)
return superHero
}

private fun startActivity(superHero: SuperHero): SuperHeroDetailActivity {
val args = Bundle()
args.putString("super_hero_name_key", superHero.id)
args.putString("super_hero_id_key", superHero.id)
return startActivity(args)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.karumi.jetpack.ui.view
package com.karumi.jetpack.superheroes.ui.view

import android.support.test.InstrumentationRegistry.getInstrumentation
import android.view.LayoutInflater
import com.karumi.R
import com.karumi.jetpack.superheroes.R
import com.karumi.jetpack.superheroes.domain.model.SuperHero
import com.karumi.jetpack.superheroes.ui.presenter.SuperHeroesPresenter
import com.karumi.jetpack.superheroes.ui.view.adapter.SuperHeroViewHolder
Expand All @@ -21,6 +21,36 @@ class SuperHeroViewHolderTest : ScreenshotTest {
compareScreenshot(holder, R.dimen.super_hero_row_height)
}

@Test
fun showsSuperHeroesWithLongNames() {
val superHero = givenASuperHeroWithALongName()
val holder = givenASuperHeroViewHolder()

holder.render(superHero)

compareScreenshot(holder, R.dimen.super_hero_row_height)
}

@Test
fun showsSuperHeroesWithLongDescriptions() {
val superHero = givenASuperHeroWithALongDescription()
val holder = givenASuperHeroViewHolder()

holder.render(superHero)

compareScreenshot(holder, R.dimen.super_hero_row_height)
}

@Test
fun showsAvengersBadge() {
val superHero = givenASuperHero(isAvenger = true)
val holder = givenASuperHeroViewHolder()

holder.render(superHero)

compareScreenshot(holder, R.dimen.super_hero_row_height)
}

private fun givenASuperHeroViewHolder(): SuperHeroViewHolder {
val context = getInstrumentation().targetContext
val inflater = LayoutInflater.from(context)
Expand All @@ -41,10 +71,11 @@ class SuperHeroViewHolderTest : ScreenshotTest {
|proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|""".trimMargin()
val isAvenger = false
return givenASuperHero(superHeroName, superHeroDescription, isAvenger)
return givenASuperHero("#1", superHeroName, superHeroDescription, isAvenger)
}

private fun givenASuperHeroWithALongName(): SuperHero {
val superHeroId = "Super Hero Id"
val superHeroName = """
|Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
|incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
Expand All @@ -54,18 +85,13 @@ class SuperHeroViewHolderTest : ScreenshotTest {
|""".trimMargin()
val superHeroDescription = "Description Super Hero"
val isAvenger = false
return givenASuperHero(superHeroName, superHeroDescription, isAvenger)
return givenASuperHero(superHeroId, superHeroName, superHeroDescription, isAvenger)
}

private fun givenASuperHero(
superHeroId: String = "Super Hero Id",
superHeroName: String = "Super Hero Name",
superHeroDescription: String = "Super Hero Description",
isAvenger: Boolean = false
): SuperHero =
SuperHero(
superHeroName,
null,
isAvenger,
superHeroDescription
)
): SuperHero = SuperHero(superHeroId, superHeroName, null, isAvenger, superHeroDescription)
}

This file was deleted.

Loading

0 comments on commit 5121c4c

Please sign in to comment.