diff --git a/CLAUDE.md b/CLAUDE.md
index 4ddb11a..bc95dc6 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -55,7 +55,6 @@ All errors should use the `CodedError` interface. Error codes use the `NATA-XXXX
|-------|------|-------------|
| NATA-1xxx | App/general errors | Unexpected errors, catch-all |
| NATA-2xxx | API/network errors | HTTP request failures, parsing errors |
-| NATA-3xxx | NFC/scan errors | NFC tag read/write/scan failures |
- New error types must implement `CodedError`
- Use `codedDescription` (not `message` or `localizedMessage`) in all user-facing error messages — this prepends `[NATA-XXXX]` for `CodedError` types
diff --git a/README.md b/README.md
index 04b3bc9..0f745b1 100644
--- a/README.md
+++ b/README.md
@@ -37,12 +37,10 @@ NativeAppTemplate-Free-Android uses modern Android development tools and practic
- Email Confirmation
- Forgot Password
- CRUD Operations for Shops (Create/Read/Update/Delete)
-- CRUD Operations for Shops' Nested Resource, Number Tags (ItemTags) (Create/Read/Update/Delete)
+- CRUD Operations for Shops' Nested Resource, Item Tags (Create/Read/Update/Delete)
- Force App Version Update
- Force Privacy Policy Version Update
- Force Terms of Use Version Update
-- Generate QR Code Image for Number Tags (ItemTags) with a Centered Number
-- NFC features for Number Tags (ItemTags): Write Application Info to a Tag, Read a Tag, Background Tag Reading
- And more!
## NFC Tag Operations
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 65f7a0d..c7b61da 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,14 +26,5 @@
-
-
-
diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModel.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModel.kt
index 1efef57..96547a6 100644
--- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModel.kt
+++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModel.kt
@@ -6,7 +6,7 @@ import com.nativeapptemplate.nativeapptemplatefree.NatConstants
import com.nativeapptemplate.nativeapptemplatefree.common.errors.codedDescription
import com.nativeapptemplate.nativeapptemplatefree.data.login.SignUpRepository
import com.nativeapptemplate.nativeapptemplatefree.model.SendResetPassword
-import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
+import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -75,7 +75,7 @@ class ForgotPasswordViewModel @Inject constructor(
fun hasInvalidDataEmail(): Boolean {
if (uiState.value.email.isBlank()) return true
- return !uiState.value.email.validateEmail()
+ return !uiState.value.email.isValidEmail()
}
fun updateEmail(newEmail: String) {
diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModel.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModel.kt
index 020ac31..168004d 100644
--- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModel.kt
+++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModel.kt
@@ -6,7 +6,7 @@ import com.nativeapptemplate.nativeapptemplatefree.NatConstants
import com.nativeapptemplate.nativeapptemplatefree.common.errors.codedDescription
import com.nativeapptemplate.nativeapptemplatefree.data.login.SignUpRepository
import com.nativeapptemplate.nativeapptemplatefree.model.SendConfirmation
-import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
+import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -75,7 +75,7 @@ class ResendConfirmationInstructionsViewModel @Inject constructor(
fun hasInvalidDataEmail(): Boolean {
if (uiState.value.email.isBlank()) return true
- return !uiState.value.email.validateEmail()
+ return !uiState.value.email.isValidEmail()
}
fun updateEmail(newEmail: String) {
diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModel.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModel.kt
index 927244e..084657e 100644
--- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModel.kt
+++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModel.kt
@@ -9,7 +9,7 @@ import com.nativeapptemplate.nativeapptemplatefree.data.login.LoginRepository
import com.nativeapptemplate.nativeapptemplatefree.model.LoggedInShopkeeper
import com.nativeapptemplate.nativeapptemplatefree.model.Login
import com.nativeapptemplate.nativeapptemplatefree.model.Permissions
-import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
+import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
@@ -94,7 +94,7 @@ class SignInEmailAndPasswordViewModel @Inject constructor(
fun hasInvalidDataEmail(): Boolean {
if (uiState.value.email.isBlank()) return true
- return !uiState.value.email.validateEmail()
+ return !uiState.value.email.isValidEmail()
}
fun hasInvalidDataPassword(): Boolean {
diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModel.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModel.kt
index 9348f8e..ca1fe8f 100644
--- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModel.kt
+++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModel.kt
@@ -7,7 +7,7 @@ import com.nativeapptemplate.nativeapptemplatefree.common.errors.codedDescriptio
import com.nativeapptemplate.nativeapptemplatefree.data.login.SignUpRepository
import com.nativeapptemplate.nativeapptemplatefree.model.SignUp
import com.nativeapptemplate.nativeapptemplatefree.model.TimeZones
-import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
+import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -88,7 +88,7 @@ class SignUpViewModel @Inject constructor(
fun hasInvalidDataEmail(): Boolean {
if (uiState.value.email.isBlank()) return true
- return !uiState.value.email.validateEmail()
+ return !uiState.value.email.isValidEmail()
}
fun hasInvalidDataPassword(): Boolean {
diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModel.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModel.kt
index 3999a9c..3c085f3 100644
--- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModel.kt
+++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModel.kt
@@ -9,7 +9,7 @@ import com.nativeapptemplate.nativeapptemplatefree.data.login.SignUpRepository
import com.nativeapptemplate.nativeapptemplatefree.model.SignUpForUpdate
import com.nativeapptemplate.nativeapptemplatefree.model.TimeZones
import com.nativeapptemplate.nativeapptemplatefree.model.UserData
-import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
+import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
@@ -198,7 +198,7 @@ class ShopkeeperEditViewModel @Inject constructor(
fun hasInvalidDataEmail(): Boolean {
if (uiState.value.email.isBlank()) return true
- return !uiState.value.email.validateEmail()
+ return !uiState.value.email.isValidEmail()
}
fun updateName(newName: String) {
diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtility.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtility.kt
index 70615ce..8eefbd3 100644
--- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtility.kt
+++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtility.kt
@@ -4,38 +4,12 @@ import java.time.ZoneId
import java.time.ZonedDateTime
object DateUtility {
- fun ZonedDateTime.cardDateString(): String {
- val dateTimeFormatter = DateTimeFormatterUtility.cardDateFormatter()
- return this.format(dateTimeFormatter)
- }
-
- fun String.cardDateString(zoneId: ZoneId = ZoneId.systemDefault()): String {
- if (this.isBlank()) return ""
-
- val date = ZonedDateTime.parse(this).withZoneSameInstant(zoneId)
- return date.cardDateString()
- }
-
- fun ZonedDateTime.cardTimeString(): String {
- val dateTimeFormatter = DateTimeFormatterUtility.cardTimeFormatter()
- return this.format(dateTimeFormatter)
- }
-
- fun String.cardTimeString(zoneId: ZoneId = ZoneId.systemDefault()): String {
- if (this.isBlank()) return ""
-
- val date = ZonedDateTime.parse(this).withZoneSameInstant(zoneId)
- return date.cardTimeString()
- }
-
- fun ZonedDateTime.cardDateTimeString(): String {
- return "${this.cardDateString()} ${this.cardTimeString()}"
- }
-
fun String.cardDateTimeString(zoneId: ZoneId = ZoneId.systemDefault()): String {
if (this.isBlank()) return ""
val date = ZonedDateTime.parse(this).withZoneSameInstant(zoneId)
- return date.cardDateTimeString()
+ val dateString = date.format(DateTimeFormatterUtility.cardDateFormatter())
+ val timeString = date.format(DateTimeFormatterUtility.cardTimeFormatter())
+ return "$dateString $timeString"
}
}
diff --git a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/Utility.kt b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/Utility.kt
index 0fa5204..a761960 100644
--- a/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/Utility.kt
+++ b/app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/Utility.kt
@@ -12,7 +12,7 @@ import com.nativeapptemplate.nativeapptemplatefree.R
import java.util.Locale
object Utility {
- fun String.validateEmail(): Boolean {
+ fun String.isValidEmail(): Boolean {
return this.isNotEmpty() && android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c715ee9..beca9a9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -105,8 +105,8 @@
Buy milk
Add Item Tag
Add a new item tag and start changing the item tag status.
- Tag name is invalid.
- Tag description is invalid.
+ Item tag name is invalid.
+ Item tag description is invalid.
Name must be 1-%1$d characters.
Description must be 0-%1$d characters.
Mark as completed
diff --git a/app/src/main/res/xml/filepaths.xml b/app/src/main/res/xml/filepaths.xml
deleted file mode 100644
index 53f48e4..0000000
--- a/app/src/main/res/xml/filepaths.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModelTest.kt b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModelTest.kt
index 3490dea..325bd3b 100644
--- a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModelTest.kt
+++ b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModelTest.kt
@@ -15,7 +15,7 @@ import org.robolectric.RobolectricTestRunner
/**
* These tests use Robolectric because the subject under test (the ViewModel) uses
- * `String.validateEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
+ * `String.isValidEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
*/
@RunWith(RobolectricTestRunner::class)
class ForgotPasswordViewModelTest {
diff --git a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModelTest.kt b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModelTest.kt
index 80e55aa..557caa9 100644
--- a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModelTest.kt
+++ b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModelTest.kt
@@ -15,7 +15,7 @@ import org.robolectric.RobolectricTestRunner
/**
* These tests use Robolectric because the subject under test (the ViewModel) uses
- * `String.validateEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
+ * `String.isValidEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
*/
@RunWith(RobolectricTestRunner::class)
class ResendConfirmationInstructionsViewModelTest {
diff --git a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModelTest.kt b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModelTest.kt
index a685535..246e3ae 100644
--- a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModelTest.kt
+++ b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModelTest.kt
@@ -21,7 +21,7 @@ import org.robolectric.RobolectricTestRunner
/**
* These tests use Robolectric because the subject under test (the ViewModel) uses
- * `String.validateEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
+ * `String.isValidEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
*/
@RunWith(RobolectricTestRunner::class)
class SignInEmailAndPasswordViewModelTest {
diff --git a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModelTest.kt b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModelTest.kt
index 00f01d2..8a22156 100644
--- a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModelTest.kt
+++ b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModelTest.kt
@@ -18,7 +18,7 @@ import org.robolectric.RobolectricTestRunner
/**
* These tests use Robolectric because the subject under test (the ViewModel) uses
- * `String.validateEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
+ * `String.isValidEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
*/
@RunWith(RobolectricTestRunner::class)
class SignUpViewModelTest {
diff --git a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModelTest.kt b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModelTest.kt
index 3514c64..a685872 100644
--- a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModelTest.kt
+++ b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModelTest.kt
@@ -21,7 +21,7 @@ import org.robolectric.RobolectricTestRunner
/**
* These tests use Robolectric because the subject under test (the ViewModel) uses
- * `String.validateEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
+ * `String.isValidEmail` which has a dependency on `android.util.Patterns.EMAIL_ADDRESS`.
*/
@RunWith(RobolectricTestRunner::class)
class ShopkeeperEditViewModelTest {
diff --git a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtilityTest.kt b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtilityTest.kt
index b034843..7bcac7c 100644
--- a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtilityTest.kt
+++ b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtilityTest.kt
@@ -1,108 +1,27 @@
package com.nativeapptemplate.nativeapptemplatefree.utils
-import com.nativeapptemplate.nativeapptemplatefree.utils.DateUtility.cardDateString
import com.nativeapptemplate.nativeapptemplatefree.utils.DateUtility.cardDateTimeString
-import com.nativeapptemplate.nativeapptemplatefree.utils.DateUtility.cardTimeString
import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
import org.junit.Test
import java.time.ZoneId
-import java.time.ZonedDateTime
class DateUtilityTest {
- private val testZonedDateTime = ZonedDateTime.of(
- 2025,
- 3,
- 15,
- 14,
- 30,
- 0,
- 0,
- ZoneId.of("UTC"),
- )
-
- // ZonedDateTime extension tests
-
- @Test
- fun zonedDateTime_cardDateString_formatsCorrectly() {
- val result = testZonedDateTime.cardDateString()
- // Locale-safe: verify it contains day and year
- assertTrue(result.contains("15"))
- assertTrue(result.contains("2025"))
- }
-
- @Test
- fun zonedDateTime_cardTimeString_formatsCorrectly() {
- assertEquals("14:30", testZonedDateTime.cardTimeString())
- }
-
@Test
- fun zonedDateTime_cardDateTimeString_combinesDateAndTime() {
- val result = testZonedDateTime.cardDateTimeString()
- assertTrue(result.contains("15"))
- assertTrue(result.contains("2025"))
- assertTrue(result.contains("14:30"))
+ fun string_cardDateTimeString_withUtcZone_formatsCorrectly() {
+ val dateString = "2025-06-15T14:30:00Z"
+ assertEquals("2025/06/15 14:30", dateString.cardDateTimeString(ZoneId.of("UTC")))
}
@Test
- fun string_cardDateTimeString_returnsEmptyForBlankString() {
+ fun string_cardDateTimeString_blankReturnsEmpty() {
assertEquals("", "".cardDateTimeString())
}
- // String extension tests with UTC zone
-
- @Test
- fun string_cardDateString_formatsIsoStringWithUtcZone() {
- val isoString = "2025-03-15T14:30:00Z"
- val result = isoString.cardDateString(ZoneId.of("UTC"))
- assertTrue(result.contains("15"))
- assertTrue(result.contains("2025"))
- }
-
- @Test
- fun string_cardTimeString_formatsIsoStringWithUtcZone() {
- val isoString = "2025-03-15T14:30:00Z"
- assertEquals("14:30", isoString.cardTimeString(ZoneId.of("UTC")))
- }
-
- // Blank string tests
-
- @Test
- fun string_cardDateString_returnsEmptyForBlankString() {
- assertEquals("", "".cardDateString())
- }
-
- @Test
- fun string_cardTimeString_returnsEmptyForBlankString() {
- assertEquals("", "".cardTimeString())
- }
-
- @Test
- fun string_cardDateString_returnsEmptyForWhitespaceString() {
- assertEquals("", " ".cardDateString())
- }
-
- @Test
- fun string_cardTimeString_returnsEmptyForWhitespaceString() {
- assertEquals("", " ".cardTimeString())
- }
-
- // Timezone conversion tests
-
- @Test
- fun string_cardDateString_convertsTimezoneCorrectly() {
- // 2025-03-15T23:30:00Z in UTC is 2025-03-16 08:30 in Asia/Tokyo (+9)
- val isoString = "2025-03-15T23:30:00Z"
- val result = isoString.cardDateString(ZoneId.of("Asia/Tokyo"))
- assertTrue(result.contains("16"))
- assertTrue(result.contains("2025"))
- }
-
@Test
- fun string_cardTimeString_convertsTimezoneCorrectly() {
- // 2025-03-15T14:30:00Z in UTC is 23:30 in Asia/Tokyo (+9)
- val isoString = "2025-03-15T14:30:00Z"
- assertEquals("23:30", isoString.cardTimeString(ZoneId.of("Asia/Tokyo")))
+ fun string_cardDateTimeString_convertsTimezone() {
+ // UTC 14:30 -> Tokyo (UTC+9) is 23:30 same day
+ val dateString = "2025-06-15T14:30:00Z"
+ assertEquals("2025/06/15 23:30", dateString.cardDateTimeString(ZoneId.of("Asia/Tokyo")))
}
}
diff --git a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/UtilityTest.kt b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/UtilityTest.kt
index c6da1dc..6029c26 100644
--- a/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/UtilityTest.kt
+++ b/app/src/test/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/UtilityTest.kt
@@ -1,6 +1,6 @@
package com.nativeapptemplate.nativeapptemplatefree.utils
-import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
+import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
@@ -10,25 +10,25 @@ import org.robolectric.RobolectricTestRunner
@RunWith(RobolectricTestRunner::class)
class UtilityTest {
- // validateEmail tests
+ // isValidEmail tests
@Test
- fun validateEmail_validEmail_returnsTrue() {
- assertTrue("test@example.com".validateEmail())
+ fun isValidEmail_validEmail_returnsTrue() {
+ assertTrue("test@example.com".isValidEmail())
}
@Test
- fun validateEmail_emptyString_returnsFalse() {
- assertFalse("".validateEmail())
+ fun isValidEmail_emptyString_returnsFalse() {
+ assertFalse("".isValidEmail())
}
@Test
- fun validateEmail_noAtSign_returnsFalse() {
- assertFalse("testexample.com".validateEmail())
+ fun isValidEmail_noAtSign_returnsFalse() {
+ assertFalse("testexample.com".isValidEmail())
}
@Test
- fun validateEmail_noDomain_returnsFalse() {
- assertFalse("test@".validateEmail())
+ fun isValidEmail_noDomain_returnsFalse() {
+ assertFalse("test@".isValidEmail())
}
}