From 9f896167b156d7382c44058872d241aa5407f1c6 Mon Sep 17 00:00:00 2001 From: ASHWANI KUMAR <85477554+ashwanil23@users.noreply.github.com> Date: Sat, 24 Aug 2024 09:54:53 +0530 Subject: [PATCH] added unit test and updated viewmodel with out of stock condition --- app/build.gradle | 2 + app/src/main/AndroidManifest.xml | 3 +- .../example/dessertclicker/MainActivity.kt | 3 +- .../example/dessertclicker/data/Datasource.kt | 3 +- .../dessertclicker/ui/DessertViewModel.kt | 49 ++++++++++------- .../main/res/drawable-nodpi/out_of_stock.png | Bin 0 -> 22547 bytes .../dessertclicker/DessertViewModelTest.kt | 50 ++++++++++++++++++ build.gradle | 4 +- gradle.properties | 4 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 10 files changed, 92 insertions(+), 28 deletions(-) create mode 100644 app/src/main/res/drawable-nodpi/out_of_stock.png create mode 100644 app/src/test/java/com/example/dessertclicker/DessertViewModelTest.kt diff --git a/app/build.gradle b/app/build.gradle index 7523fcb..d33f5ea 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,6 +43,7 @@ android { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } + namespace 'com.example.dessertclicker' } dependencies { @@ -56,4 +57,5 @@ dependencies { implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" + testImplementation("junit:junit:4.13.2") } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0c5fdde..561a526 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,8 +15,7 @@ limitations under the License. --> + xmlns:tools="http://schemas.android.com/tools"> Unit, - modifier: Modifier = Modifier + onDessertClicked: () -> Unit ) { Scaffold( topBar = { diff --git a/app/src/main/java/com/example/dessertclicker/data/Datasource.kt b/app/src/main/java/com/example/dessertclicker/data/Datasource.kt index 9071928..47af2e8 100644 --- a/app/src/main/java/com/example/dessertclicker/data/Datasource.kt +++ b/app/src/main/java/com/example/dessertclicker/data/Datasource.kt @@ -35,6 +35,7 @@ object Datasource { Dessert(R.drawable.lollipop, 3000, 4000), Dessert(R.drawable.marshmallow, 4000, 8000), Dessert(R.drawable.nougat, 5000, 16000), - Dessert(R.drawable.oreo, 6000, 20000) + Dessert(R.drawable.oreo, 6000, 20000), + Dessert(R.drawable.out_of_stock, 1, 20001) ) } \ No newline at end of file diff --git a/app/src/main/java/com/example/dessertclicker/ui/DessertViewModel.kt b/app/src/main/java/com/example/dessertclicker/ui/DessertViewModel.kt index 6ba1147..8f172a3 100644 --- a/app/src/main/java/com/example/dessertclicker/ui/DessertViewModel.kt +++ b/app/src/main/java/com/example/dessertclicker/ui/DessertViewModel.kt @@ -13,18 +13,34 @@ class DessertViewModel : ViewModel() { private val _dessertUiState = MutableStateFlow(DessertUiState()) val dessertUiState: StateFlow = _dessertUiState.asStateFlow() - fun onDessertClicked() { - _dessertUiState.update { cupcakeUiState -> - val dessertsSold = cupcakeUiState.dessertsSold + 1 - val nextDessertIndex = determineDessertIndex(dessertsSold) - cupcakeUiState.copy( - currentDessertIndex = nextDessertIndex, - revenue = cupcakeUiState.revenue + cupcakeUiState.currentDessertPrice, - dessertsSold = dessertsSold, - currentDessertImageId = dessertList[nextDessertIndex].imageId, - currentDessertPrice = dessertList[nextDessertIndex].price - ) - } + fun onDessertClicked(){ + _dessertUiState.update { cupCakeUiState -> + val dessertsSold: Int = if (cupCakeUiState.currentDessertIndex >= 13){ + cupCakeUiState.dessertsSold + }else{ + cupCakeUiState.dessertsSold + 1 + } + val nextDessertIndex = determineDessertIndex(dessertsSold) + if(cupCakeUiState.currentDessertIndex >= 13){ + cupCakeUiState.copy( + currentDessertIndex = nextDessertIndex, + dessertsSold = dessertsSold, + revenue = cupCakeUiState.revenue, + currentDessertPrice = dessertList[nextDessertIndex].price, + currentDessertImageId = dessertList[nextDessertIndex].imageId + ) + }else{ + cupCakeUiState.copy( + currentDessertIndex = nextDessertIndex, + dessertsSold = dessertsSold, + revenue = cupCakeUiState.revenue + cupCakeUiState.currentDessertPrice, + currentDessertPrice = dessertList[nextDessertIndex].price, + currentDessertImageId = dessertList[nextDessertIndex].imageId + ) + } + + } + } private fun determineDessertIndex(dessertsSold: Int): Int { @@ -32,14 +48,9 @@ class DessertViewModel : ViewModel() { for (index in dessertList.indices) { if (dessertsSold >= dessertList[index].startProductionAmount) { dessertIndex = index - } else { - // The list of desserts is sorted by startProductionAmount. As you sell more - // desserts, you'll start producing more expensive desserts as determined by - // startProductionAmount. We know to break as soon as we see a dessert who's - // "startProductionAmount" is greater than the amount sold. - break } } - return dessertIndex + return if (dessertIndex <= 12) dessertIndex + else 13 } } \ No newline at end of file diff --git a/app/src/main/res/drawable-nodpi/out_of_stock.png b/app/src/main/res/drawable-nodpi/out_of_stock.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f04b6cf1187964662367b2461f509f14cc9aff GIT binary patch literal 22547 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 literal 0 HcmV?d00001 diff --git a/app/src/test/java/com/example/dessertclicker/DessertViewModelTest.kt b/app/src/test/java/com/example/dessertclicker/DessertViewModelTest.kt new file mode 100644 index 0000000..37f3a16 --- /dev/null +++ b/app/src/test/java/com/example/dessertclicker/DessertViewModelTest.kt @@ -0,0 +1,50 @@ +package com.example.dessertclicker + +import com.example.dessertclicker.data.Datasource.dessertList +import com.example.dessertclicker.data.DessertUiState +import com.example.dessertclicker.ui.DessertViewModel +import junit.framework.Assert.assertEquals +import org.junit.Test + +class DessertViewModelTest { + private var viewModel = DessertViewModel() + private var testUiState = DessertUiState() + @Test + fun onDessertClicked_updates_UI_state_correctly() { + // Set the initial state with some values + val initialUiState = DessertUiState( + currentDessertIndex = 0, + dessertsSold = 0, + revenue = 0, + currentDessertPrice = dessertList[0].price, + currentDessertImageId = dessertList[0].imageId + ) + + // Simulate clicking the dessert + viewModel.onDessertClicked() + val nextDessertIndex = testDetermineDessertIndex(initialUiState.dessertsSold) + // Expected UI state after the click + val expectedUiState = initialUiState.copy( + + currentDessertIndex = nextDessertIndex, + dessertsSold = 1, + revenue = dessertList[initialUiState.currentDessertIndex].price, + currentDessertPrice = dessertList[initialUiState.currentDessertIndex].price, + currentDessertImageId = dessertList[initialUiState.currentDessertIndex].imageId + ) + + // Assert that the UI state has been updated correctly + assertEquals(expectedUiState, viewModel.dessertUiState.value) + } + + private fun testDetermineDessertIndex(dessertsSold: Int): Int { + var dessertIndex = 0 + for (index in dessertList.indices) { + if (dessertsSold >= dessertList[index].startProductionAmount) { + dessertIndex = index + } + } + return if (dessertIndex <= 12) dessertIndex + else 13 + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index 5d3f21b..877534b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,8 @@ buildscript { } }// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.4.1' apply false - id 'com.android.library' version '7.4.1' apply false + id 'com.android.application' version '8.5.0' apply false + id 'com.android.library' version '8.5.0' apply false id 'org.jetbrains.kotlin.android' version '1.8.0' apply false } diff --git a/gradle.properties b/gradle.properties index cd0519b..022338b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,4 +20,6 @@ kotlin.code.style=official # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true +android.defaults.buildfeatures.buildconfig=true +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 137e528..6b58354 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Jun 14 16:14:31 EDT 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME