package io.kaif.mobile.retrofit.processor;
import static com.google.common.truth.Truth.ASSERT;
import static com.google.common.truth.Truth.assert_;
import static com.google.testing.compile.JavaSourcesSubjectFactory.javaSources;
import javax.tools.JavaFileObject;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
import com.google.testing.compile.JavaFileObjects;
public class RetrofitServiceProcessorTest {
@Test
public void process_non_Observable() {
String input = "package test;\n"
+ "import retrofit.http.GET;\n"
+ "import retrofit.http.Query;\n"
+ "interface Foo {\n"
+ " @GET(\"/foo\")\n"
+ " String foo1(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @GET(\"/foo\")\n"
+ " String foo2(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @GET(\"/foo\")\n"
+ " String foo3(@Query(\"bar\") String bar);\n"
+ " }";
String output = "package test;\n"
+ "\n"
+ "import java.lang.String;\n"
+ "import retrofit.http.GET;\n"
+ "import retrofit.http.Query;\n"
+ "\n"
+ "public interface Foo$$RetryStale {\n"
+ " @GET(\"/foo\")\n"
+ " String foo1(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @GET(\"/foo\")\n"
+ " String foo2(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @GET(\"/foo\")\n"
+ " String foo3(@Query(\"bar\") String bar);\n"
+ "}";
JavaFileObject inputFile = JavaFileObjects.forSourceString("test.Foo", input);
JavaFileObject outputFile = JavaFileObjects.forSourceString("test.Foo$$RetryStale", output);
assert_().about(javaSources())
.that(ImmutableList.of(inputFile))
.processedWith(new io.kaif.mobile.retrofit.processor.RetrofitServiceProcessor())
.compilesWithoutError()
.and()
.generatesSources(outputFile);
}
@Test
public void process_with_stage_header() {
String input = "package test;\n"
+ "import rx.Observable;\n"
+ "import retrofit.http.Headers;\n"
+ "import retrofit.http.GET;\n"
+ "import retrofit.http.Query;\n"
+ "import retrofit.http.POST;\n"
+ "interface Foo {\n"
+ " @GET(\"/foo\")\n"
+ " Observable<String> foo1(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @POST(\"/foo\")\n"
+ " Observable<String> foo2(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @Headers(\"Cache-Control: max-age=640000\")\n"
+ " @GET(\"/foo\")\n"
+ " Observable<String> foo3(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @Headers({\n"
+ " \"Accept: application/vnd.github.v3.full+json\",\n"
+ " \"User-Agent: Retrofit-Sample-App\"\n"
+ " })\n"
+ " @GET(\"/foo\")\n"
+ " Observable<String> foo4(@Query(\"bar\") String bar);\n"
+ " }";
String output = "package test;\n"
+ "\n"
+ "import java.lang.String;\n"
+ "import retrofit.http.GET;\n"
+ "import retrofit.http.Headers;\n"
+ "import retrofit.http.POST;\n"
+ "import retrofit.http.Query;\n"
+ "import rx.Observable;\n"
+ "\n"
+ "public interface Foo$$RetryStale {\n"
+ " @GET(\"/foo\")\n"
+ " Observable<String> foo1(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @GET(\"/foo\")\n"
+ " @Headers(\"Cache-Control: max-stale=86400\")\n"
+ " Observable<String> foo1$$RetryStale(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @POST(\"/foo\")\n"
+ " Observable<String> foo2(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @Headers(\"Cache-Control: max-age=640000\")\n"
+ " @GET(\"/foo\")\n"
+ " Observable<String> foo3(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @Headers({\n"
+ " \"Cache-Control: max-age=640000\",\n"
+ " \"Cache-Control: max-stale=86400\"\n"
+ " })\n"
+ " @GET(\"/foo\")\n"
+ " Observable<String> foo3$$RetryStale(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @Headers({\n"
+ " \"Accept: application/vnd.github.v3.full+json\",\n"
+ " \"User-Agent: Retrofit-Sample-App\"\n"
+ " })\n"
+ " @GET(\"/foo\")\n"
+ " Observable<String> foo4(@Query(\"bar\") String bar);\n"
+ "\n"
+ " @Headers({\n"
+ " \"Accept: application/vnd.github.v3.full+json\",\n"
+ " \"User-Agent: Retrofit-Sample-App\",\n"
+ " \"Cache-Control: max-stale=86400\"\n"
+ " })\n"
+ " @GET(\"/foo\")\n"
+ " Observable<String> foo4$$RetryStale(@Query(\"bar\") String bar);\n"
+ "}";
JavaFileObject inputFile = JavaFileObjects.forSourceString("test.Foo", input);
JavaFileObject outputFile = JavaFileObjects.forSourceString("test.Foo$$RetryStale", output);
ASSERT.about(javaSources())
.that(ImmutableList.of(inputFile))
.processedWith(new io.kaif.mobile.retrofit.processor.RetrofitServiceProcessor())
.compilesWithoutError()
.and()
.generatesSources(outputFile);
}
}