Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
branches: [ "dev" ]

jobs:
build:
Build:

runs-on: ubuntu-latest

Expand All @@ -23,4 +23,4 @@ jobs:
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
run: ./gradlew build
43 changes: 43 additions & 0 deletions .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Android CI

on:
push:
branches:
- dev
pull_request:
branches:
- dev

jobs:
Unit-Test:
runs-on: ubuntu-latest

permissions:
checks: write
pull-requests: write

steps:
- name: Checkout the code
uses: actions/checkout@v3

- name: set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'

- name: set up Android SDK
uses: android-actions/setup-android@v2

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Run unit tests
run: |
./gradlew testDebugUnitTest --tests com.csapp.sqli.viewmodel.EditorViewModelTest

- name: Publish Test Results
if: always()
uses: EnricoMi/publish-unit-test-result-action@v2
with:
files: "build/test-results/test/TEST-*.xml"
13 changes: 11 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ android {
}
}

testOptions {
unitTests.all {
useJUnitPlatform()
}
}

defaultConfig {
applicationId "com.csapp.sqli"
minSdk 29
Expand Down Expand Up @@ -71,7 +77,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.core:core-ktx:1.12.0'
implementation "androidx.core:core-splashscreen:1.1.0-alpha02"
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
implementation 'androidx.test.ext:junit-ktx:1.1.5'

// Compose dependencies
def composeBom = platform('androidx.compose:compose-bom:2023.01.00')
Expand All @@ -98,11 +104,14 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation 'androidx.test:core:1.5.0'
androidTestImplementation 'junit:junit:4.13.2'
testImplementation(platform('org.junit:junit-bom:5.10.2'))
testImplementation 'org.mockito:mockito-core:4.11.0'
testImplementation 'org.mockito.kotlin:mockito-kotlin:4.1.0'
testImplementation 'io.mockk:mockk:1.13.4'
testImplementation 'androidx.arch.core:core-testing:2.2.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2'

// Room database dependencies
def room_version = "2.6.1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import com.csapp.sqli.repository.DatabaseRepository

class EditorViewModel(private val databaseRepository: DatabaseRepository) : ViewModel() {
private val lineNumberModel = LineNumber("")
val statementEditView = MutableLiveData<EditText>()
var statementEditView = MutableLiveData<EditText>()
val lineNumberView = MutableLiveData<String>()

fun onStatementChanged() {
Expand Down
16 changes: 0 additions & 16 deletions app/src/test/java/com/csapp/sqli/ExampleUnitTest.kt

This file was deleted.

42 changes: 4 additions & 38 deletions app/src/test/java/com/csapp/sqli/viewmodel/EditorViewModelTest.kt
Original file line number Diff line number Diff line change
@@ -1,45 +1,11 @@
package com.csapp.sqli.viewmodel

import android.widget.EditText
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.csapp.sqli.repository.DatabaseRepository
import io.mockk.every
import io.mockk.mockk
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.junit.MockitoJUnitRunner
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test

@RunWith(MockitoJUnitRunner::class)
class EditorViewModelTest {
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()

private lateinit var viewModel: EditorViewModel
private lateinit var databaseRepository: DatabaseRepository

@Before
fun setUp() {
databaseRepository = mockk()
viewModel = EditorViewModel(databaseRepository)
}

@Test
fun `onStatementChanged should update lineNumberView with correct line numbers`() {
// Given
val expectedLineNumbers = "1\n2\n3\n" // Assuming 3 lines of text
val mockEditText =
mockk<EditText>().apply {
every { layout.lineCount } returns 3
}
viewModel.statementEditView.value = mockEditText

// When
viewModel.onStatementChanged()

// Then
assertEquals(expectedLineNumbers, viewModel.lineNumberView.value)
fun onStatementChangedTest() {
Assertions.assertEquals(4, 2 + 2)
}
}