Skip to content

Commit

Permalink
Merge pull request #40 from jbreitenthaler/feature/MULI-15
Browse files Browse the repository at this point in the history
Approved and Merged into Development
  • Loading branch information
tom-reith authored May 6, 2021
2 parents d0b3085 + 8fb4758 commit 43c92f0
Show file tree
Hide file tree
Showing 31 changed files with 604 additions and 116 deletions.
4 changes: 4 additions & 0 deletions MulatschakTracker/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,17 @@ dependencies {
implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0'
implementation 'android.arch.navigation:navigation-ui-ktx:1.0.0'
implementation 'androidx.wear:wear:1.1.0'
implementation 'androidx.preference:preference:1.1.1'
testImplementation 'junit:junit:4.+'
testCompile 'junit:junit:4.12'
testCompile 'org.robolectric:robolectric:3.0'
androidTestImplementation 'com.android.support.test:runner:0.5'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
compileOnly 'com.google.android.wearable:wearable:2.8.1'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-accessibility:3.3.0'

}

Original file line number Diff line number Diff line change
@@ -1,32 +1,49 @@
package com.example.mulatschaktracker

import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import androidx.test.core.app.ActivityScenario
import androidx.test.core.app.ApplicationProvider
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.*
import junit.framework.TestCase
import org.junit.Test
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Rule
import org.junit.runner.RunWith
import androidx.test.ext.junit.rules.ActivityScenarioRule
import org.junit.After
import org.junit.Before

@RunWith(AndroidJUnit4::class)
class BottomNavigationTest : TestCase() {
lateinit var scenario: ActivityScenario<MainActivity>

public override fun setUp() {
@Before
public override fun setUp(){
super.setUp()
val appContext: Context = ApplicationProvider.getApplicationContext();
val userRepo = UserRepository(appContext)
userRepo.resetDatabase()
userRepo.createUser(UserObject("NewUser"))
val preferences = appContext.getSharedPreferences(PREFERENCENAME, AppCompatActivity.MODE_PRIVATE)
preferences.edit().putString(LASTUSER, "NewUser").commit()
scenario = ActivityScenario.launch(MainActivity::class.java)
}

public override fun tearDown() {}
@get:Rule
val activityRule = ActivityScenarioRule(MainActivity::class.java)
@After
public override fun tearDown(){
super.tearDown()
scenario.close()
}
@Test
fun checkHomeWindow(){

onView(withId(R.id.navigation_home)).perform(click())

onView(withId(R.id.text_game)).check(matches(isDisplayed()))
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.example.mulatschaktracker

import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import androidx.test.InstrumentationRegistry
import androidx.test.InstrumentationRegistry.getTargetContext
import androidx.test.core.app.ActivityScenario
import androidx.test.core.app.ApplicationProvider
import androidx.test.espresso.Espresso.closeSoftKeyboard
import androidx.test.espresso.Espresso.onView
Expand All @@ -25,22 +27,28 @@ import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class ChangeLanguageTest : TestCase() {
lateinit var scenario: ActivityScenario<MainActivity>

@Before
public override fun setUp() {
super.setUp()
InstrumentationRegistry.getTargetContext().getSharedPreferences("Settings", Context.MODE_PRIVATE).edit().clear().commit()

val appContext: Context = ApplicationProvider.getApplicationContext();
val userRepo = UserRepository(appContext)
userRepo.resetDatabase()
userRepo.createUser(UserObject("NewUser"))
val preferences = appContext.getSharedPreferences(PREFERENCENAME, AppCompatActivity.MODE_PRIVATE)
preferences.edit().putString(LASTUSER, "NewUser").commit()
scenario = ActivityScenario.launch(MainActivity::class.java)
}

public override fun tearDown() {}
@get:Rule
val activityRule = ActivityScenarioRule(MainActivity::class.java)

val validUserName = "User1";
val invalidUserName = "";


public override fun tearDown() {
super.tearDown()
scenario.close()
}
//@get:Rule
//val activityRule = ActivityScenarioRule(MainActivity::class.java)

@Test
fun UserOptionsInRightLanguageTetst(){
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
package com.example.mulatschaktracker

import android.content.Context
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.RecyclerView
import androidx.test.core.app.ActivityScenario
import androidx.test.core.app.ApplicationProvider
import androidx.test.espresso.*
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.Espresso.pressBack
import androidx.test.espresso.action.ViewActions.*
import androidx.test.espresso.assertion.ViewAssertions
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.contrib.RecyclerViewActions
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.ext.junit.rules.ActivityScenarioRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import junit.framework.TestCase
import org.hamcrest.Matcher


import org.hamcrest.core.StringStartsWith
import org.junit.After


import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Assert.*
import org.junit.Before
import org.junit.Rule

@RunWith(AndroidJUnit4::class)
class GameFragmentTest:TestCase() {
lateinit var userRepo : UserRepository
lateinit var gameRepo : GameRepository
lateinit var scenario : ActivityScenario<MainActivity>
val userName = "NewUser"
val playerName = "PlayerName"
//@get:Rule
//var activityRule: ActivityScenarioRule<MainActivity>
// = ActivityScenarioRule(MainActivity::class.java)

@Before
public override fun setUp(){
super.setUp()
val appContext: Context = ApplicationProvider.getApplicationContext()

userRepo = UserRepository(appContext)
userRepo.resetDatabase()

val userID = userRepo.createUser(UserObject(userName))
gameRepo = GameRepository(appContext)
gameRepo.createGame(GameObject(playerName,playerName,playerName,playerName),userID)

val preferences = appContext.getSharedPreferences(PREFERENCENAME, AppCompatActivity.MODE_PRIVATE)
preferences.edit().putString(LASTUSER, userName).commit()
scenario = ActivityScenario.launch(MainActivity::class.java)

}

@After
public override fun tearDown() {
super.tearDown()
scenario.close()
}

@Test
fun newGameIsPresentInGameFragment(){
onView(withId(R.id.game_textview)).check(matches(isDisplayed()))
}

@Test
fun correctGameIdDisplayedInGameFragment(){
assertEquals(getText(onView(withId(R.id.game_textview))),"Game 1")
}

@Test
fun correctPlayerNamesAreDisplayedInGameFragment(){
assertEquals(getText(onView(withId(R.id.game_textview_players))),
"PlayerName, PlayerName, PlayerName, PlayerName"
)
}

@Test
fun clickOnGameOpensGameActivity(){
onView(withId(R.id.gamesRecyclerView))
.perform(RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>(0, click()))
assertEquals(playerName, getText(onView(withId(R.id.textViewPlayer1))))
assertEquals(playerName, getText(onView(withId(R.id.textViewPlayer2))))
assertEquals(playerName, getText(onView(withId(R.id.textViewPlayer3))))
assertEquals(playerName, getText(onView(withId(R.id.textViewPlayer4))))
}

//helper function for comparing 2 strings from textboxes
fun getText(matcher: ViewInteraction): String {
var text = String()
matcher.perform(object : ViewAction {
override fun getConstraints(): Matcher<View> {
return isAssignableFrom(TextView::class.java)
}

override fun getDescription(): String {
return "Text of the view"
}

override fun perform(uiController: UiController, view: View) {
val tv = view as TextView
text = tv.text.toString()
}
})

return text
}




}
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
package com.example.mulatschaktracker

import android.content.Context
import android.view.View
import android.widget.TextView
import androidx.test.core.app.ApplicationProvider
import androidx.test.espresso.*
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.Espresso.pressBack
import androidx.test.espresso.action.ViewActions.*
import androidx.test.espresso.assertion.ViewAssertions
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.ext.junit.rules.ActivityScenarioRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.hamcrest.Matcher


import org.hamcrest.core.StringStartsWith


import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Assert.*
import org.junit.Rule

@RunWith(AndroidJUnit4::class)
class GameRepositoryTest {

@Test
fun createNewGameInDatabase(){
val gameObject = GameObject("Player 1","Player 2", "Player 3", "Player 3")
val appContext: Context = ApplicationProvider.getApplicationContext()
val repo = GameRepository(appContext)
repo.resetDatabase()
val newGameId = repo.createGame(gameObject, 1)
assert(newGameId > 0)
}

@Test
fun readGameFromDatabaseGameExists(){
val gameObject = GameObject("Player 1","Player 2", "Player 3", "Player 4")
val appContext: Context = ApplicationProvider.getApplicationContext()
val repo = GameRepository(appContext)
repo.resetDatabase()
val newGameId = repo.createGame(gameObject, 1)
val gameObjectFromDb = repo.getGame(newGameId)
assertEquals(gameObjectFromDb.id, newGameId)
assertEquals(gameObjectFromDb.player1, "Player 1")
assertEquals(gameObjectFromDb.player2, "Player 2")
assertEquals(gameObjectFromDb.player3, "Player 3")
assertEquals(gameObjectFromDb.player4, "Player 4")

}

@Test(expected = Exception::class)
fun readGameFromDatabaseGameDoesNotExist(){
val gameObject = GameObject("Player 1","Player 2", "Player 3", "Player 4")
val appContext: Context = ApplicationProvider.getApplicationContext()
val repo = GameRepository(appContext)
repo.resetDatabase()
val gameObjectFromDb = repo.getGame(1)
assert(false)

}


@Test
fun getGamesPerUserFromDbUserAndGamesExist() {
val appContext: Context = ApplicationProvider.getApplicationContext();

//Test for the activity of starting a new game
val userRepo = UserRepository(appContext)
userRepo.resetDatabase()
val gameRepo = GameRepository(appContext)
val userID = userRepo.createUser(UserObject("NewUser"))

val gameId1 = gameRepo.createGame(GameObject("Player 1", "Player 2", "Player 3", "Player 4"),userID)
val gameId2 = gameRepo.createGame(GameObject("Player 1", "Player 2", "Player 3", "Player 4"),userID)
val gameList = gameRepo.getGames(userID)
assertEquals(gameId1,gameList[0].id)
assertEquals(gameId2,gameList[1].id)
}

@Test
fun getGamesPerUserFromDbNoGamesExist() {
val appContext: Context = ApplicationProvider.getApplicationContext();

//Test for the activity of starting a new game
val userRepo = UserRepository(appContext)
userRepo.resetDatabase()
val gameRepo = GameRepository(appContext)
val userID = userRepo.createUser(UserObject("NewUser"))

val gameList = gameRepo.getGames(userID)
assertEquals(0,gameList.size)
}

@Test
fun getGamesPerUserFromDbUserDoesNotExist() {
val appContext: Context = ApplicationProvider.getApplicationContext();

//Test for the activity of starting a new game
val userRepo = UserRepository(appContext)
userRepo.resetDatabase()
val gameRepo = GameRepository(appContext)
val userID : Long = 1
val gameList = gameRepo.getGames(userID)
assertEquals(0,gameList.size)
}



}
Loading

0 comments on commit 43c92f0

Please sign in to comment.