/**
*
*/
package name.webdizz.clt.crx.client.translation.medeniye;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import name.webdizz.clt.crx.client.translation.ITranslationHandler;
import name.webdizz.clt.crx.client.translation.TranslationResult;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
/**
* @author webdizz
*
*/
public class MedeniyeRequestBuilderTest {
private static final String RESPONSE_WITH_TRANS = "<dl>"
+ "<div>Crimean Tatar - Russian</div>"
+ "<dt><b>cik</b></dt>"
+ "<dd style=\"margin:0 0 0 .5em\"><div style=\"\">1) пробор</div><div style=\"margin-left:.5em;color:#666;\">doğru cik - прямой пробор (посередине)</div><div style=\"margin-left:.5em;color:#666;\">qıya cik - косой пробор (боковой)</div>"
+ "<div style=\"\">2) мн. стрелки на брюках</div></dd>" + "</dl>";
private MedeniyeRequestBuilder medeniyeRequestBuilder;
@Mock
private Response response;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
medeniyeRequestBuilder = new MedeniyeRequestBuilder();
}
@Test(expected = UnsatisfiedLinkError.class)
public void shouldCreateDefaultRequestBuilder() throws Exception {
medeniyeRequestBuilder.send("some data", null);
}
@Test
public void shouldUseAssignedRequestBuilder() throws Exception {
ITranslationHandler handler = mock(ITranslationHandler.class);
RequestBuilder requestBuilder = mock(RequestBuilder.class);
medeniyeRequestBuilder.setRequestBuilder(requestBuilder);
medeniyeRequestBuilder.send("some data", handler);
verify(requestBuilder).send();
}
@Test
public void shouldCallTranslationHandle() throws Exception {
ITranslationHandler handler = mock(ITranslationHandler.class);
RequestBuilder requestBuilder = new JustCallOnResponseReceivedRequestBuilder("URL");
medeniyeRequestBuilder.setRequestBuilder(requestBuilder);
when(response.getText()).thenReturn(RESPONSE_WITH_TRANS);
medeniyeRequestBuilder.send("some data", handler);
TranslationResult result = new TranslationResultCreator().parse(RESPONSE_WITH_TRANS);
verify(handler).onTranslate(result);
}
@Test
public void shouldHandleTranslationRequestError() throws Exception {
ITranslationHandler handler = mock(ITranslationHandler.class);
RequestBuilder requestBuilder = new JustCallOnErrorRequestBuilder("URL");
medeniyeRequestBuilder.setRequestBuilder(requestBuilder);
medeniyeRequestBuilder.send("some data", handler);
verify(handler, never()).onTranslate(null);
}
class JustCallOnResponseReceivedRequestBuilder extends RequestBuilder {
public JustCallOnResponseReceivedRequestBuilder(String url) {
super(RequestBuilder.GET, url);
}
@Override
public Request send() throws RequestException {
Request request = null;
getCallback().onResponseReceived(request, response);
return null;
}
}
class JustCallOnErrorRequestBuilder extends JustCallOnResponseReceivedRequestBuilder {
public JustCallOnErrorRequestBuilder(String url) {
super(url);
}
@Override
public Request send() throws RequestException {
Request request = null;
getCallback().onError(request, new RequestException("error"));
return null;
}
}
}