@@ -4,13 +4,16 @@ import android.util.Log
44import com.xpeho.xpeapp.data.entity.AuthentificationBody
55import com.xpeho.xpeapp.data.entity.QvstAnswerBody
66import com.xpeho.xpeapp.data.entity.QvstCampaignEntity
7+ import com.xpeho.xpeapp.data.entity.user.UserEditPassword
78import com.xpeho.xpeapp.data.model.AuthResult
89import com.xpeho.xpeapp.data.model.WordpressToken
910import com.xpeho.xpeapp.data.model.qvst.QvstAnswer
1011import com.xpeho.xpeapp.data.model.qvst.QvstCampaign
1112import com.xpeho.xpeapp.data.model.qvst.QvstProgress
1213import com.xpeho.xpeapp.data.model.qvst.QvstQuestion
1314import com.xpeho.xpeapp.data.model.qvst.QvstTheme
15+ import com.xpeho.xpeapp.data.model.user.UpdatePasswordResult
16+ import com.xpeho.xpeapp.data.model.user.UserInfos
1417import com.xpeho.xpeapp.data.service.WordpressRepository
1518import com.xpeho.xpeapp.data.service.WordpressService
1619import io.mockk.coEvery
@@ -32,6 +35,7 @@ import org.junit.Test
3235import org.junit.experimental.runners.Enclosed
3336import org.junit.runner.RunWith
3437import retrofit2.HttpException
38+ import retrofit2.Response
3539import java.net.ConnectException
3640import java.net.SocketTimeoutException
3741import java.net.UnknownHostException
@@ -52,6 +56,7 @@ class WordpressRepositoryTest {
5256 wordpressRepo = spyk(WordpressRepository (wordpressService))
5357 mockkStatic(Log ::class )
5458 every { Log .e(any(), any()) } returns 0
59+ every { Log .d(any(), any()) } returns 0
5560 }
5661 }
5762
@@ -491,6 +496,113 @@ class WordpressRepositoryTest {
491496 }
492497 }
493498
499+ class FetchUserInfosTests : BaseTest () {
500+
501+ @Test
502+ fun `fetchUserInfos with valid response returns UserInfos` () = runBlocking {
503+ val userInfos = UserInfos (" 1" , " toto@example" , " toto" ," tata" )
504+ coEvery { wordpressService.fetchUserInfos() } returns userInfos
505+
506+ val result = wordpressRepo.fetchUserInfos()
507+
508+ assertEquals(userInfos, result)
509+ }
510+
511+ @Test
512+ fun `fetchUserInfos with network error returns null` () = runBlocking {
513+ coEvery { wordpressService.fetchUserInfos() } throws UnknownHostException ()
514+
515+ val result = wordpressRepo.fetchUserInfos()
516+
517+ assertEquals(null , result)
518+ }
519+
520+ @Test
521+ fun `fetchUserInfos with HttpException returns null` () = runBlocking {
522+ coEvery { wordpressService.fetchUserInfos() } throws HttpException (mockk {
523+ coEvery { code() } returns 500
524+ coEvery { message() } returns " Internal Server Error"
525+ })
526+
527+ val result = wordpressRepo.fetchUserInfos()
528+
529+ assertEquals(null , result)
530+ }
531+ }
532+
533+ class UpdatePasswordTests : BaseTest () {
534+ companion object {
535+ private const val INTERNAL_SERVER_ERROR = 500
536+ private const val NO_CONTENT = 204
537+ }
538+
539+ @Test
540+ fun `updatePassword with valid response returns Success` () = runBlocking {
541+ val editPassword = UserEditPassword (" oldPassword" , " newPassword" , " newPassword" )
542+ val response = mockk<Response <String >> {
543+ every { code() } returns NO_CONTENT
544+ }
545+ coEvery { wordpressService.updatePassword(editPassword) } returns response
546+
547+ val result = wordpressRepo.updatePassword(editPassword)
548+
549+ assertEquals(UpdatePasswordResult .Success , result)
550+ }
551+
552+ @Test
553+ fun `updatePassword with incorrect initial password returns IncorrectInitialPassword` () = runBlocking {
554+ val editPassword = UserEditPassword (" oldPassword" , " newPassword" , " newPassword" )
555+ val response = mockk<Response <String >> {
556+ every { code() } returns INTERNAL_SERVER_ERROR
557+ every { errorBody()?.string() } returns " incorrect_password"
558+ }
559+ coEvery { wordpressService.updatePassword(editPassword) } returns response
560+
561+ val result = wordpressRepo.updatePassword(editPassword)
562+
563+ assertEquals(UpdatePasswordResult .IncorrectInitialPassword , result)
564+ }
565+
566+ @Test
567+ fun `updatePassword with password mismatch returns PasswordMismatch` () = runBlocking {
568+ val editPassword = UserEditPassword (" oldPassword" , " newPassword" , " newPassword" )
569+ val response = mockk<Response <String >> {
570+ every { code() } returns INTERNAL_SERVER_ERROR
571+ every { errorBody()?.string() } returns " password_mismatch"
572+ }
573+ coEvery { wordpressService.updatePassword(editPassword) } returns response
574+
575+ val result = wordpressRepo.updatePassword(editPassword)
576+
577+ assertEquals(UpdatePasswordResult .PasswordMismatch , result)
578+ }
579+
580+ @Test
581+ fun `updatePassword with unknown error returns NetworkError` () = runBlocking {
582+ val editPassword = UserEditPassword (" oldPassword" , " newPassword" , " newPassword" )
583+ val response = mockk<Response <String >> {
584+ every { code() } returns INTERNAL_SERVER_ERROR
585+ every { errorBody() } returns null
586+ }
587+ coEvery { wordpressService.updatePassword(editPassword) } returns response
588+
589+ val result = wordpressRepo.updatePassword(editPassword)
590+
591+ assertEquals(UpdatePasswordResult .NetworkError , result)
592+ }
593+
594+ @Test
595+ fun `updatePassword with network error returns NetworkError` () = runBlocking {
596+ val editPassword = UserEditPassword (" oldPassword" , " newPassword" , " newPassword" )
597+ coEvery { wordpressService.updatePassword(editPassword) } throws UnknownHostException ()
598+
599+ val result = wordpressRepo.updatePassword(editPassword)
600+
601+ assertEquals(UpdatePasswordResult .NetworkError , result)
602+ }
603+ }
604+
605+
494606 class HandleAuthExceptionsTests : BaseTest () {
495607
496608 @Test
0 commit comments