From 2ac42caf6f7d10e2b97f8fcd0d8f4ebaeb9a7071 Mon Sep 17 00:00:00 2001 From: beaulaton Date: Wed, 2 Apr 2025 15:35:26 +0200 Subject: [PATCH 1/3] Tests unitaires des user --- .../data/services/IServices.kt | 2 + .../data/services/ServicesStub.kt | 52 ++++--- .../what_the_fantasy/ExampleUnitTest.kt | 17 --- .../example/what_the_fantasy/UnitTestQuote.kt | 16 +++ .../example/what_the_fantasy/UnitTestUser.kt | 127 ++++++++++++++++++ 5 files changed, 170 insertions(+), 44 deletions(-) delete mode 100644 What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/ExampleUnitTest.kt create mode 100644 What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt create mode 100644 What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestUser.kt diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt index 9da9c8a..f9fe1fc 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/IServices.kt @@ -20,6 +20,8 @@ interface IServices { fun EditPasswd(passwd : String, index : Int) fun EditImage(index : Int) : String fun ChangeLangage(index : Int): SrcLanguage + fun isUsernameExist(username : String) : Boolean + fun isEmailExist(email : String) : Boolean fun AddFav(userId: Int, QuoteId : Int) fun SupFav(userId: Int, QuoteId : Int) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index e68b96e..df21f6c 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -28,7 +28,7 @@ class ServicesStub : IServices { if (user.username == username && user.password == hashPassWd) { initialierCurrentUser(index) navController(index) - logsUser.logInformationUserConnect(user, "UserConnect") + //logsUser.logInformationUserConnect(user, "UserConnect") return true } } @@ -45,7 +45,7 @@ class ServicesStub : IServices { } //Afficher tous les users - logsUser.logDebugUserEmail(user, "UsernameUpdate") + //logsUser.logDebugUserEmail(user, "UsernameUpdate") return false } @@ -57,7 +57,7 @@ class ServicesStub : IServices { return true } //Afficher tous les users - logsUser.logDebugAllUsers(getAllUsers(), "EmailUpdate") + //logsUser.logDebugAllUsers(getAllUsers(), "EmailUpdate") return false } @@ -67,7 +67,7 @@ class ServicesStub : IServices { user?.password = passwordhash //Afficher tous les users en log - logsUser.logDebugAllUsers(getAllUsers(), "PasswordUpdate") + //logsUser.logDebugAllUsers(getAllUsers(), "PasswordUpdate") } override fun EditImage(index : Int) : String { @@ -82,7 +82,7 @@ class ServicesStub : IServices { getAllUsers()[index].langage = SrcLanguage.vo } - logsUser.logDebugUserLangage(getAllUsers()[index], "ChangeLangue") + //logsUser.logDebugUserLangage(getAllUsers()[index], "ChangeLangue") return getAllUsers()[index].langage } @@ -114,7 +114,7 @@ class ServicesStub : IServices { users.add(user)//ajout au stub //Afficher tous les users - logsUser.logDebugAllUsers(users, "CreateUser") + //logsUser.logDebugAllUsers(users, "CreateUser") return true } return false @@ -172,26 +172,7 @@ class ServicesStub : IServices { }.take(indexCount)) } - //------------------------------------------------------ - @SuppressLint("NewApi") - fun dateDuJour(): String { - val date = LocalDate.now() - return date.toString() - } - - fun randomImage() : String{ - val sizeList = allImages.size - val randomNb = (0..sizeList).random() - allImages.forEach{image -> - if(image.id == randomNb){ - return image.url - } - - } - return allImages[0].url - } - - fun isUsernameExist(username : String) : Boolean{ + override fun isUsernameExist(username : String) : Boolean{ val userStub = getAllUsers() for (user in userStub) { if (user.username == username) { @@ -201,7 +182,7 @@ class ServicesStub : IServices { return false } - fun isEmailExist(email : String) : Boolean{ + override fun isEmailExist(email : String) : Boolean{ val userStub = getAllUsers() for (user in userStub) { if (user.email == email) { @@ -210,6 +191,23 @@ class ServicesStub : IServices { } return false } + //------------------------------------------------------ + @SuppressLint("NewApi") + fun dateDuJour(): String { + val date = LocalDate.now() + return date.toString() + } + + fun randomImage() : String{ + val sizeList = allImages.size + val randomNb = (0..sizeList).random() + allImages.forEach{image -> + if(image.id == randomNb){ + return image.url + } + } + return allImages[0].url + } } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/ExampleUnitTest.kt b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/ExampleUnitTest.kt deleted file mode 100644 index 06a73c9..0000000 --- a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.what_the_fantasy - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt new file mode 100644 index 0000000..f707764 --- /dev/null +++ b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt @@ -0,0 +1,16 @@ +package com.example.what_the_fantasy + +import com.example.what_the_fantasy.data.model.SrcLanguage +import org.junit.Assert.assertEquals +import org.junit.Test +import com.example.what_the_fantasy.data.services.IServices +import com.example.what_the_fantasy.data.services.ServicesStub +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue + +class UnitTestQuote { + @Test + fun test(){ + assertEquals(2,2) + } +} \ No newline at end of file diff --git a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestUser.kt b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestUser.kt new file mode 100644 index 0000000..6ba9d5d --- /dev/null +++ b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestUser.kt @@ -0,0 +1,127 @@ +package com.example.what_the_fantasy + +import androidx.compose.runtime.Composable +import androidx.navigation.compose.rememberNavController +import com.example.what_the_fantasy.data.model.SrcLanguage +import org.junit.Assert.assertEquals +import org.junit.Test +import com.example.what_the_fantasy.data.services.IServices +import com.example.what_the_fantasy.data.services.ServicesStub +import com.example.what_the_fantasy.data.services.hashPassword +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue + +class UnitTestUser { + private val services : IServices = ServicesStub() + + + @Test + fun testCreateUser_OK(){ + assertTrue(services.CreateUser("username", "email", "passwd") + ) + } + + @Test + fun testCreateUserSameUsername(){ + services.CreateUser("username2", "email2", "passwd") + assertFalse(services.CreateUser("username2", "emai", "passwd")) + } + + @Test + fun testCreateUserSameEmail(){ + services.CreateUser("username3", "email3", "passwd") + assertFalse(services.CreateUser("usernam", "email3", "passwd") + ) + } + + @Test + fun testUserEditUsername_OK(){ + services.CreateUser("username4", "email4", "passwd") + assertTrue(services.EditUsername("newUsername",11)) + } + + @Test + fun testUserEditUsernameSameUsernameWithAnotherUsername(){ + services.CreateUser("username5", "email5", "passwd") + assertFalse(services.EditUsername("dev",10)) + } + + + @Test + fun testUserEditEmail_OK(){ + services.CreateUser("username6", "email6", "passwd") + assertTrue(services.EditEmail("newEmail",11)) + } + + @Test + fun testUserEditEmailSameUsernameWithAnotherEmail(){ + services.CreateUser("username7", "email7", "passwd") + assertFalse(services.EditEmail("testeur@example.com",10)) + } + + @Test + fun testUserEditPassword_OK(){ + services.CreateUser("username8", "email8", "passwd") + services.EditPasswd("newPassword",11) + assertEquals(hashPassword("newPassword"), services.getUserById(11)?.password) + } + + @Test + fun testUserChangeLangueVoAtVf(){ + services.CreateUser("username9", "email9", "passwd") + services.ChangeLangage(11) + assertEquals(SrcLanguage.vf, services.getUserById(11)?.langage) + } + + @Test + fun testUserChangeLangueVfAtVo(){ + services.CreateUser("username10", "email10", "passwd") + services.ChangeLangage(11) + services.ChangeLangage(11) + assertEquals(SrcLanguage.vo, services.getUserById(11)?.langage) + } + + @Test + fun testUserExist_OK(){ + assertTrue(services.isUsernameExist("dev")) + } + + @Test + fun testUserNotExist_OK(){ + assertFalse(services.isUsernameExist("devNotExist")) + } + + @Test + fun testEmailExist_OK(){ + assertTrue(services.isEmailExist("testeur@example.com")) + } + + @Test + fun testEmailNotExist_OK(){ + assertFalse(services.isUsernameExist("email@example.com")) + } + + @Test + fun TestUserValidLogin_OK() { + val navControllerMock: (Int) -> Unit = {} + val initialiserCurrentUserMock: (Int) -> Unit = {} + + assertTrue(services.validLogin("dev", "1234", navControllerMock, initialiserCurrentUserMock)) + } + + @Test + fun TestUserValidLoginBadUsername() { + val navControllerMock: (Int) -> Unit = {} + val initialiserCurrentUserMock: (Int) -> Unit = {} + + assertFalse(services.validLogin("devBad", "1234", navControllerMock, initialiserCurrentUserMock)) + } + + @Test + fun TestUserValidLoginBadPassword() { + val navControllerMock: (Int) -> Unit = {} + val initialiserCurrentUserMock: (Int) -> Unit = {} + + assertFalse(services.validLogin("dev", "5678", navControllerMock, initialiserCurrentUserMock)) + } +} \ No newline at end of file From 3a2ac655fe141b97422689355b92dd5cc7d35b78 Mon Sep 17 00:00:00 2001 From: beaulaton Date: Wed, 2 Apr 2025 16:14:32 +0200 Subject: [PATCH 2/3] Test search --- .../data/services/ServicesStub.kt | 7 +- .../example/what_the_fantasy/UnitTestQuote.kt | 122 +++++++++++++++++- 2 files changed, 122 insertions(+), 7 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt index df21f6c..6c82153 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/services/ServicesStub.kt @@ -141,8 +141,11 @@ class ServicesStub : IServices { } override fun getSomeQuotes(nb: Int, page: Int): MutableList { - val fromIndex = (page - 1) * nb - val toIndex = minOf(page * nb, quotes.size) + var nbQuote = nb + if(nb < 0) nbQuote = 1 + + val fromIndex = (page - 1) * nbQuote + val toIndex = minOf(page * nbQuote, quotes.size) if (fromIndex >= quotes.size) return mutableListOf() diff --git a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt index f707764..c4552b8 100644 --- a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt +++ b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt @@ -1,16 +1,128 @@ package com.example.what_the_fantasy -import com.example.what_the_fantasy.data.model.SrcLanguage import org.junit.Assert.assertEquals import org.junit.Test import com.example.what_the_fantasy.data.services.IServices import com.example.what_the_fantasy.data.services.ServicesStub -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue class UnitTestQuote { + private val services : IServices = ServicesStub() + + @Test + fun testGetQuote(){ + val quote = services.getQuote(1) + assertEquals("All we have to decide is what to do with the time that is given us.",quote?.content) + } + + @Test + fun testGetSomeQuote_OK(){ + val quote = services.getSomeQuotes(4,1) + assertEquals(4,quote.size) + } + + @Test + fun testGetSomeQuoteNegatif(){ + val quote = services.getSomeQuotes(-1,1) + assertEquals(1,quote.size) + } + + @Test + fun testGetSomeQuote0(){ + val quote = services.getSomeQuotes(0,1) + assertEquals(0,quote.size) + } + + @Test + fun testSearchByFullQuote(){ + val quote = services.search("contenu","I am no man.",1) + assertEquals("I am no man.",quote[0].content) + } + + @Test + fun testSearchByHalfQuote(){ + val quote = services.search("contenu","I am no",1) + assertEquals("I am no man.",quote[0].content) + } + + @Test + fun testSearchByFullQuoteWithUpperCase(){ + val quote = services.search("contenu","I aM nO MaN",1) + assertEquals("I am no man.",quote[0].content) + } + + @Test + fun testSearchByHalfQuoteWithUpperCase(){ + val quote = services.search("contenu","I aM nO",1) + assertEquals("I am no man.",quote[0].content) + } + + @Test + fun testSearchByFullQuoteBad(){ + val quote = services.search("contenu","I am no Man bad",1) + assertEquals(0,quote.size) + } + + + + + @Test + fun testSearchByFullCharacter(){ + val quote = services.search("personnage","Arwen",1) + assertEquals("Arwen",quote[0].character) + } + + @Test + fun testSearchByHalfCharacter(){ + val quote = services.search("personnage","Arw",1) + assertEquals("Arwen",quote[0].character) + } + + @Test + fun testSearchByFullCharacterWithUpperCase(){ + val quote = services.search("personnage","ArwEn",1) + assertEquals("Arwen",quote[0].character) + } + + @Test + fun testSearchByHalfCharacterWithUpperCase(){ + val quote = services.search("personnage","Arw",1) + assertEquals("Arwen",quote[0].character) + } + + @Test + fun testSearchByFullCharacterBad(){ + val quote = services.search("personnage","Arwen bad",1) + assertEquals(0,quote.size) + } + + + @Test + fun testSearchByFullTitle(){ + val quote = services.search("titre","Star Wars",1) + assertEquals("Star Wars",quote[0].source) + } + + @Test + fun testSearchByHalfTitle(){ + val quote = services.search("titre","Star",1) + assertEquals("Star Wars",quote[0].source) + } + + @Test + fun testSearchByFullTitleWithUpperCase(){ + val quote = services.search("titre","StAr WaRs",1) + assertEquals("Star Wars",quote[0].source) + } + + @Test + fun testSearchByHalfTitleWithUpperCase(){ + val quote = services.search("titre","StAr",1) + assertEquals("Star Wars",quote[0].source) + } + @Test - fun test(){ - assertEquals(2,2) + fun testSearchByTitleBad(){ + val quote = services.search("titre","Star Wars bad",1) + assertEquals(0,quote.size) } } \ No newline at end of file From 20180a1e81c8ee33682db36de5eb171238bb1375 Mon Sep 17 00:00:00 2001 From: beaulaton Date: Wed, 2 Apr 2025 16:32:30 +0200 Subject: [PATCH 3/3] Tests commentaires --- .../com/example/what_the_fantasy/UnitTestQuote.kt | 2 ++ .../com/example/what_the_fantasy/UnitTestUser.kt | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt index c4552b8..5d00730 100644 --- a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt +++ b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestQuote.kt @@ -125,4 +125,6 @@ class UnitTestQuote { val quote = services.search("titre","Star Wars bad",1) assertEquals(0,quote.size) } + + } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestUser.kt b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestUser.kt index 6ba9d5d..1bcf454 100644 --- a/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestUser.kt +++ b/What_The_Fantasy/app/src/test/java/com/example/what_the_fantasy/UnitTestUser.kt @@ -124,4 +124,18 @@ class UnitTestUser { assertFalse(services.validLogin("dev", "5678", navControllerMock, initialiserCurrentUserMock)) } + + @Test + fun testGetUserById(){ + val user = services.getUserById(10) + assertEquals("dev", user?.username) + } + + @Test + fun testGetFavorite_User_Dev(){ + val user = services.getAllUsers()[10] + val quotes = services.getFavorite(user) + assertEquals(3, quotes.size) + } + } \ No newline at end of file