Skip to content

Instantly share code, notes, and snippets.

View ragdroid's full-sized avatar
🤪

Garima Jain ragdroid

🤪
View GitHub Profile
@ragdroid
ragdroid / IfElse.kt
Created March 2, 2019 14:00
Simplified if-else
infix fun <T>Boolean.then(action : () -> T): T? {
return if (this)
action.invoke()
else null
}
infix fun <T>T?.elze(action: () -> T): T {
return if (this == null)
action.invoke()
@ragdroid
ragdroid / DataStore.kt
Created February 21, 2018 08:29
Cache Interface to talk to the whole app
interface DataStore<T> {
fun modelListObservable(): Maybe<List<T>>
fun modelObservable(id: String): Maybe<T>
fun putModels(vararg models: T)
fun clear()
@ragdroid
ragdroid / PokeDataSourceTest.java
Last active March 10, 2017 19:20
Testing DataSource with Mockito
@Inject PokeService pokemonService;
@Test
public void testGetPokemonAbilityStringObservable() {
PokeDataSource dataSource = new PokeDataSource(pokemonService);
TestObserver observer = new TestObserver();
dataSource.getPokemonAbilityStringObservable("12")
.subscribe(observer);
observer.assertNoErrors();
public Observable<String> getPokemonAbilityStringObservable(String id) {
return pokemonService.getPokemon(id)
.map(new Function<Pokemon, String>() {
@Override
public String apply(@NonNull Pokemon pokemon) throws Exception {
return constructAbility(pokemon);
}
});
}
@Mock MainView mainViewMock;
@Mock PokeDataSource pokeDataSource;
@Mock HttpException httpException;
@Test
public void testDemoResponseError404() {
reset(mainViewMock);
MainPresenterImpl presenter = new MainPresenterImpl(schedulersProvider, pokeDataSource);
@Mock MainView mainViewMock;
@Mock PokeDataSource pokeDataSource;
@Test
public void testOnViewAdded() {
reset(mainViewMock);
MainPresenterImpl presenter = new MainPresenterImpl(
schedulersProvider, pokeDataSource);
@ragdroid
ragdroid / SocketIOTest.java
Created March 5, 2017 22:40
Use MockWebServer to test your app under SocketIO fail.
@Test
public void testDemoResponseErrorSocket() {
reset(mainSceneMock);
MainPresenterImpl presenter = new MainPresenterImpl(schedulersProvider, pokemonService);
MockResponse response = new MockResponse();
response.setBody("\"message\":\"Hello\"").throttleBody(1, 2, TimeUnit.SECONDS);
@ragdroid
ragdroid / TestHttpUnavailable.java
Created March 5, 2017 22:32
Use MockWebserver to test error cases
@Test
public void testDemoResponseError503() {
reset(mainSceneMock);
MainPresenterImpl presenter = new MainPresenterImpl(schedulersProvider, pokemonService);
MockResponse response = new MockResponse();
response.setResponseCode(HttpURLConnection.HTTP_UNAVAILABLE);
getErrorMockWebServer().enqueue(response);
@ragdroid
ragdroid / TestGetPokemon.java
Created March 5, 2017 22:26
Use MockWebserver to test getPokemon
@Test
public void testOnSceneAdded() {
reset(mainSceneMock);
MainPresenterImpl presenter = new MainPresenterImpl(schedulersProvider, pokemonService);
presenter.onSceneAdded(mainSceneMock, null);
testScheduler.triggerActions();
@ragdroid
ragdroid / LocalResponseDispatcher.java
Created March 5, 2017 22:14
MockWebServer Dispatcher to Map the server requests to their json files
public class LocalResponseDispatcher extends QueueDispatcher {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
MockResponse mockResponse = new MockResponse();
String scenario = getScenario(request);
if (scenario != null) {
try {
mockResponse.setBody(readFile(scenario));