mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Convert the LoginClient to kotlin (#5479)
* Convert the result classes to kotlin * Convert response and callback to kotlin * Cleanup code-quality warnings before converting * Converted the LoginClient to kotlin * Updated the UserExtendedInfoClientTest to be kotlin, and live in the correct spot
This commit is contained in:
parent
0541aacdff
commit
02ce017c98
14 changed files with 370 additions and 450 deletions
|
|
@ -0,0 +1,78 @@
|
|||
package fr.free.nrw.commons.auth.login
|
||||
|
||||
import android.net.Uri
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.google.gson.stream.MalformedJsonException
|
||||
import fr.free.nrw.commons.MockWebServerTest
|
||||
import io.reactivex.observers.TestObserver
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.wikipedia.dataclient.WikiSite
|
||||
import org.wikipedia.dataclient.mwapi.MwQueryResponse
|
||||
import org.wikipedia.json.NamespaceTypeAdapter
|
||||
import org.wikipedia.json.PostProcessingTypeAdapter
|
||||
import org.wikipedia.json.UriTypeAdapter
|
||||
import org.wikipedia.json.WikiSiteTypeAdapter
|
||||
import org.wikipedia.page.Namespace
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
|
||||
class UserExtendedInfoClientTest : MockWebServerTest() {
|
||||
private var apiService: LoginInterface? = null
|
||||
private val observer = TestObserver<MwQueryResponse>()
|
||||
private val gson = GsonBuilder()
|
||||
.registerTypeHierarchyAdapter(Uri::class.java, UriTypeAdapter().nullSafe())
|
||||
.registerTypeHierarchyAdapter(Namespace::class.java, NamespaceTypeAdapter().nullSafe())
|
||||
.registerTypeAdapter(WikiSite::class.java, WikiSiteTypeAdapter().nullSafe())
|
||||
.registerTypeAdapterFactory(PostProcessingTypeAdapter())
|
||||
.create()
|
||||
|
||||
@Before
|
||||
@Throws(Throwable::class)
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
|
||||
apiService = Retrofit.Builder()
|
||||
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
|
||||
.addConverterFactory(GsonConverterFactory.create(gson))
|
||||
.baseUrl(server().url)
|
||||
.build()
|
||||
.create(LoginInterface::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Throwable::class)
|
||||
fun testRequestSuccess() {
|
||||
enqueueFromFile("user_extended_info.json")
|
||||
|
||||
apiService!!.getUserInfo("USER").subscribe(observer)
|
||||
|
||||
observer
|
||||
.assertComplete()
|
||||
.assertNoErrors()
|
||||
.assertValue { result: MwQueryResponse ->
|
||||
result.query()!!
|
||||
.userInfo()!!.id() == 24531888 && result.query()!!.getUserResponse("USER")!!
|
||||
.name() == "USER"
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testRequestResponse404() {
|
||||
enqueue404()
|
||||
|
||||
apiService!!.getUserInfo("USER").subscribe(observer)
|
||||
|
||||
observer.assertError(Exception::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testRequestResponseMalformed() {
|
||||
enqueueMalformed()
|
||||
|
||||
apiService!!.getUserInfo("USER").subscribe(observer)
|
||||
|
||||
observer.assertError(MalformedJsonException::class.java)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
package fr.free.nrw.commons.login;
|
||||
|
||||
import android.net.Uri;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.stream.MalformedJsonException;
|
||||
import fr.free.nrw.commons.MockWebServerTest;
|
||||
import fr.free.nrw.commons.auth.login.LoginInterface;
|
||||
import io.reactivex.observers.TestObserver;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.wikipedia.dataclient.WikiSite;
|
||||
import org.wikipedia.dataclient.mwapi.MwQueryResponse;
|
||||
import org.wikipedia.json.NamespaceTypeAdapter;
|
||||
import org.wikipedia.json.PostProcessingTypeAdapter;
|
||||
import org.wikipedia.json.UriTypeAdapter;
|
||||
import org.wikipedia.json.WikiSiteTypeAdapter;
|
||||
import org.wikipedia.page.Namespace;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
public class UserExtendedInfoClientTest extends MockWebServerTest {
|
||||
|
||||
private LoginInterface apiService;
|
||||
|
||||
@Override
|
||||
@Before
|
||||
public void setUp() throws Throwable {
|
||||
super.setUp();
|
||||
|
||||
apiService = new Retrofit.Builder()
|
||||
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
|
||||
.addConverterFactory(GsonConverterFactory.create(getGson()))
|
||||
.baseUrl(server().getUrl())
|
||||
.build()
|
||||
.create(LoginInterface.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequestSuccess() throws Throwable {
|
||||
enqueueFromFile("user_extended_info.json");
|
||||
TestObserver<MwQueryResponse> observer = new TestObserver<>();
|
||||
|
||||
apiService.getUserInfo("USER").subscribe(observer);
|
||||
|
||||
observer
|
||||
.assertComplete()
|
||||
.assertNoErrors()
|
||||
.assertValue(
|
||||
result -> result.query().userInfo().id() == 24531888
|
||||
&& result.query().getUserResponse("USER").name().equals("USER")
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequestResponse404() {
|
||||
enqueue404();
|
||||
TestObserver<MwQueryResponse> observer = new TestObserver<>();
|
||||
|
||||
apiService.getUserInfo("USER").subscribe(observer);
|
||||
|
||||
observer.assertError(Exception.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequestResponseMalformed() {
|
||||
enqueueMalformed();
|
||||
TestObserver<MwQueryResponse> observer = new TestObserver<>();
|
||||
|
||||
apiService.getUserInfo("USER").subscribe(observer);
|
||||
|
||||
observer.assertError(MalformedJsonException.class);
|
||||
}
|
||||
|
||||
private Gson getGson() {
|
||||
return new GsonBuilder()
|
||||
.registerTypeHierarchyAdapter(Uri.class, new UriTypeAdapter().nullSafe())
|
||||
.registerTypeHierarchyAdapter(Namespace.class, new NamespaceTypeAdapter().nullSafe())
|
||||
.registerTypeAdapter(WikiSite.class, new WikiSiteTypeAdapter().nullSafe())
|
||||
.registerTypeAdapterFactory(new PostProcessingTypeAdapter())
|
||||
.create();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue