package ua.kpi.ecampus.api.service;
import com.squareup.okhttp.HttpUrl;
import com.squareup.okhttp.mockwebserver.Dispatcher;
import com.squareup.okhttp.mockwebserver.MockResponse;
import com.squareup.okhttp.mockwebserver.MockWebServer;
import com.squareup.okhttp.mockwebserver.RecordedRequest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import rx.observers.TestSubscriber;
import ua.kpi.ecampus.model.pojo.User;
import static org.junit.Assert.assertEquals;
/**
* Created by Admin on 18.05.2016.
*/
public class UserServiceTest extends BaseServiceTest {
private MockWebServer server;
private UserService service;
@Before
public void setUp() throws Exception {
super.setUp();
server = new MockWebServer();
server.start();
final Dispatcher dispatcher = new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws
InterruptedException {
if (request.getPath().equals("/account/info")) {
return new MockResponse().setResponseCode(200)
.setBody(jsonReader.readString("json/user.json"));
}
return new MockResponse().setResponseCode(404);
}
};
server.setDispatcher(dispatcher);
HttpUrl baseUrl = server.url("/");
service = ServiceCreator.createTestService(baseUrl.toString(),
UserService.class);
}
@Test
public void getUser() throws Exception {
TestSubscriber<User> testSubscriber = new TestSubscriber<>();
service.getUser(getToken()).subscribe(testSubscriber);
testSubscriber.assertNoErrors();
testSubscriber.assertValueCount(1);
User actual = testSubscriber.getOnNextEvents().get(0);
assertEquals("1001", actual.id);
assertEquals("Test account", actual.name);
assertEquals(Integer.valueOf(300), actual.position.get(0).getId());
assertEquals("KPI", actual.subdivision.get(0).getName());
}
@After
public void tearDown() throws Exception {
server.shutdown();
}
}