jonart

Untitled

Mar 30th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.55 KB | None | 0 0
  1. package com.softdesign.mvpauth.data.manager;
  2.  
  3. import com.softdesign.mvpauth.data.network.RestService;
  4. import com.softdesign.mvpauth.data.network.error.AccessError;
  5. import com.softdesign.mvpauth.data.network.req.UserLoginReq;
  6. import com.softdesign.mvpauth.data.network.res.UserRes;
  7. import com.softdesign.mvpauth.resources.MockResponses;
  8. import com.softdesign.mvpauth.utils.ConstantManager;
  9. import com.squareup.moshi.Moshi;
  10.  
  11. import org.junit.After;
  12. import org.junit.Assert;
  13. import org.junit.Before;
  14. import org.junit.Test;
  15.  
  16. import okhttp3.OkHttpClient;
  17. import okhttp3.mockwebserver.MockResponse;
  18. import okhttp3.mockwebserver.MockWebServer;
  19. import retrofit2.Retrofit;
  20. import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
  21. import retrofit2.converter.moshi.MoshiConverterFactory;
  22. import rx.observers.TestSubscriber;
  23.  
  24. import static org.junit.Assert.*;
  25.  
  26. /**
  27.  * Created by root on 30.03.2017.
  28.  */
  29. public class DataManagerTest {
  30.  
  31.     private Retrofit testRetrofit;
  32.     private RestService testRestService;
  33.     private MockWebServer testMockWebServer;
  34.     private DataManager testDataManager;
  35.     private TestSubscriber<UserRes> testSubscriber;
  36.  
  37.     @Before
  38.     public void setUp() throws Exception {
  39.         testMockWebServer = new MockWebServer();
  40.         testRetrofit = new Retrofit.Builder()
  41.                 .baseUrl(testMockWebServer.url("").toString())
  42.                 .addConverterFactory(MoshiConverterFactory.create(new Moshi.Builder()
  43.                         // Для того чтобы тестировать разбор ответа от сервера, тут могут быть ваши кастомные адаптеры
  44.                         .build()))
  45.                 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // для поддержки RX
  46.                 .client(new OkHttpClient.Builder()
  47.                         // тут конфигурируем тестовый клиент (при необходимости)
  48.                         .build())
  49.                 .build();
  50.         testRestService = testRetrofit.create(RestService.class);
  51.         testDataManager = new DataManager(testRestService);
  52.  
  53.  
  54.         testSubscriber = new TestSubscriber<>();
  55.     }
  56.  
  57.     @After
  58.     public void tearDown() throws Exception {
  59.         testMockWebServer.shutdown();
  60.         testSubscriber.unsubscribe();
  61.     }
  62.  
  63.     @Test
  64.     public void loginUser_200_OK() throws Exception {
  65.  
  66.         MockResponse mockResponse = new MockResponse()
  67.                 .setHeader(ConstantManager.LAST_MODIFIED_HEADER, "Wed, 15 Nov 1995 04:58:08 GMT")
  68.                 .setBody(MockResponses.USER_RES_200);
  69.  
  70.         testMockWebServer.enqueue(mockResponse);
  71.  
  72.         testDataManager.loginUser(new UserLoginReq("anyemail@mail.ru", "password"))
  73.                 .subscribe(userRes -> {
  74.                     assertNotNull(userRes);
  75.                     assertEquals("Вася",userRes.getFullName());
  76.                 }, throwable -> {
  77.                     Assert.fail();});
  78.     }
  79.  
  80.     @Test
  81.     public void loginUser_200_RX_COMPLETED() throws Exception {
  82.  
  83.         MockResponse mockResponse = new MockResponse()
  84.                 .setHeader(ConstantManager.LAST_MODIFIED_HEADER, "Wed, 15 Nov 1995 04:58:08 GMT")
  85.                 .setBody(MockResponses.USER_RES_200);
  86.  
  87.         testMockWebServer.enqueue(mockResponse);
  88.  
  89.         testDataManager.loginUser(new UserLoginReq("anyemail@mail.ru", "password"))
  90.                 .subscribe(testSubscriber);
  91.  
  92.         testSubscriber.assertCompleted();
  93.         testSubscriber.assertNoErrors();
  94.     }
  95.  
  96.     @Test
  97.     public void loginUser_403_FORBIDDEN() throws Exception {
  98.  
  99.         MockResponse mockResponse = new MockResponse()
  100.                 .setResponseCode(403);
  101.  
  102.         testMockWebServer.enqueue(mockResponse);
  103.  
  104.         testDataManager.loginUser(new UserLoginReq("anyemail@mail.ru", "password"))
  105.                 .subscribe(userRes -> {
  106.                     Assert.fail();
  107.                 }, throwable -> {
  108.                     assertNotNull(throwable);
  109.                     assertEquals("Неверный логин или пароль", throwable.getMessage());
  110.                 });
  111.     }
  112.  
  113.     @Test
  114.     public void loginUser_403_RX_THROWABLE() throws Exception {
  115.  
  116.         MockResponse mockResponse = new MockResponse()
  117.                 .setResponseCode(403);
  118.  
  119.         testMockWebServer.enqueue(mockResponse);
  120.  
  121.         testDataManager.loginUser(new UserLoginReq("anyemail@mail.ru", "password"))
  122.                 .subscribe(testSubscriber);
  123.  
  124.         testSubscriber.assertError(AccessError.class);
  125.  
  126.     }
  127.  
  128. }
Add Comment
Please, Sign In to add comment