package org.edx.mobile.test.http; import com.google.gson.Gson; import org.edx.mobile.http.OkHttpUtil; import org.edx.mobile.model.Page; import org.edx.mobile.model.PaginationData; import org.edx.mobile.profiles.BadgeAssertion; import org.edx.mobile.profiles.BadgeClass; import org.edx.mobile.test.BaseTestCase; import org.edx.mobile.user.UserService; import org.junit.Test; import java.io.IOException; import java.util.Collections; import java.util.Date; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class UserApiTest extends BaseTestCase { private BadgeAssertion getTestBadge() { return new BadgeAssertion("some user", "http://example.com/evidence", "http://example.com/image.jpg", new Date(), new BadgeClass( "someslug", "some component", "A badge!", "A badge you get for stuff", "http://example.com/image.jpg", "somecourse" ) ); } private String getTestBadgeString() { Page<BadgeAssertion> response = new Page<>(new PaginationData(1, 1, null, null), Collections.singletonList(getTestBadge())); return new Gson().toJson(response); } @Test public void testApiReturnsResult() throws IOException { MockWebServer server = new MockWebServer(); Retrofit retrofit = new Retrofit.Builder() .client(OkHttpUtil.getClient(context)) .baseUrl(server.url("/")) .addConverterFactory(GsonConverterFactory.create()) .build(); server.enqueue(new MockResponse().setBody(this.getTestBadgeString())); UserService service = retrofit.create(UserService.class); Response<Page<BadgeAssertion>> response = service.getBadges("user", 1).execute(); assertTrue(response.isSuccessful()); Page<BadgeAssertion> badges = response.body(); assertEquals(badges.getResults().size(), 1); } }