package com.huhx0015.gw2at.tests; import com.huhx0015.gw2at.view.activities.ApiActivity; import com.huhx0015.gw2at.application.GW2TestApplication; import com.huhx0015.gw2at.constants.GW2TestResponses; import com.huhx0015.gw2at.interfaces.RetrofitInterface; import com.huhx0015.gw2at.model.responses.QuaggansResponse; import com.huhx0015.gw2at.runners.GW2RoboElectricRunner; import com.huhx0015.gw2at.BuildConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.annotation.Config; import java.util.List; import io.appflate.restmock.RESTMockServer; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import retrofit2.Retrofit; import static io.appflate.restmock.utils.RequestMatchers.pathContains; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; /** * Created by Michael Yoon Huh on 3/30/2017. */ @RunWith(GW2RoboElectricRunner.class) @Config(constants = BuildConfig.class, application = GW2TestApplication.class, sdk = 25) public class GW2ApiResponseTest { /** CLASS VARIABLES ________________________________________________________________________ **/ // ACTIVITY VARIABLES private ApiActivity mActivity; // NETWORK VARIABLES private Retrofit mNetworkAdapter; // TEST VARIABLES private static final String TEST_QUAGGANS_ID = "box"; /** INITIALIZATION METHODS _________________________________________________________________ **/ @Before public void setup() { mActivity = Robolectric.setupActivity(ApiActivity.class); mNetworkAdapter = mActivity.getNetworkAdapter(); RESTMockServer.reset(); } /** TEST METHODS ___________________________________________________________________________ **/ @Test public void testValidQuaggansResponse() { RESTMockServer.whenGET(pathContains("quaggans")) .thenReturnFile(200, "responses/quaggansMockData.json"); RetrofitInterface quaggansRequest = mNetworkAdapter.create(RetrofitInterface.class); Observable<List<QuaggansResponse>> call = quaggansRequest.getQuaggans("all"); call.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<List<QuaggansResponse>>() { @Override public void onSubscribe(Disposable d) {} @Override public void onNext(List<QuaggansResponse> response) { // RESPONSE ASSERTIONS: assertNotNull(GW2TestResponses.TEST_VARIABLE_NULL, response); assertFalse(response.isEmpty()); assertNotNull(GW2TestResponses.TEST_VARIABLE_NULL, response.get(0)); // ID ASSERTION: String id = response.get(0).getId(); assertNotNull(GW2TestResponses.TEST_VARIABLE_NULL, id); assertEquals(TEST_QUAGGANS_ID, id); } @Override public void onError(Throwable t) {} @Override public void onComplete() {} }); } }