From 97756c0a86f5e62e879240840d78946bc0b0ec24 Mon Sep 17 00:00:00 2001 From: norangebit Date: Mon, 11 Nov 2019 21:35:40 +0100 Subject: [PATCH] add getAllSwimlanes and newSwimlane --- .../wekan/wrapper/api/SwimlanesService.java | 16 ++++ .../java/wekan/wrapper/entity/Swimlane.java | 25 +++++ .../wrapper/api/SwimlanesServiceTest.java | 91 +++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 wrapper/src/main/java/wekan/wrapper/api/SwimlanesService.java create mode 100644 wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java create mode 100644 wrapper/src/test/java/wekan/wrapper/api/SwimlanesServiceTest.java diff --git a/wrapper/src/main/java/wekan/wrapper/api/SwimlanesService.java b/wrapper/src/main/java/wekan/wrapper/api/SwimlanesService.java new file mode 100644 index 0000000..6600066 --- /dev/null +++ b/wrapper/src/main/java/wekan/wrapper/api/SwimlanesService.java @@ -0,0 +1,16 @@ +package wekan.wrapper.api; + +import retrofit2.Call; +import retrofit2.http.*; +import wekan.wrapper.entity.Swimlane; + +import java.util.List; + +public interface SwimlanesService { + @GET("/api/boards/{boardId}/swimlanes") + Call> getAllSwimlanes(@Path("boardId") String boardId); + + @FormUrlEncoded + @POST("/api/boards/{boardId}/swimlanes") + Call newSwimlane(@Path("boardId") String boardId, @Field("title") String SwimlaneTitle); +} diff --git a/wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java b/wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java new file mode 100644 index 0000000..9e3703e --- /dev/null +++ b/wrapper/src/main/java/wekan/wrapper/entity/Swimlane.java @@ -0,0 +1,25 @@ +package wekan.wrapper.entity; + +import com.google.gson.annotations.SerializedName; + +public class Swimlane { + @SerializedName("_id") + private String id; + private String title; + + public String getId() { + return id; + } + + public String getTitle() { + return title; + } + + @Override + public String toString() { + return "Swimlane{" + + "id='" + id + '\'' + + ", title='" + title + '\'' + + '}'; + } +} diff --git a/wrapper/src/test/java/wekan/wrapper/api/SwimlanesServiceTest.java b/wrapper/src/test/java/wekan/wrapper/api/SwimlanesServiceTest.java new file mode 100644 index 0000000..e90ce9e --- /dev/null +++ b/wrapper/src/test/java/wekan/wrapper/api/SwimlanesServiceTest.java @@ -0,0 +1,91 @@ +package wekan.wrapper.api; + +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; +import wekan.wrapper.entity.Swimlane; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.util.List; + +import static org.junit.Assert.*; + +public class SwimlanesServiceTest { + private MockWebServer mockWebServer = new MockWebServer(); + private SwimlanesService service = null; + + @Before + public void setUp() { + try { + mockWebServer.start(); + service = new Retrofit.Builder() + .baseUrl(mockWebServer.url("/")) + .addConverterFactory(GsonConverterFactory.create()) + .build() + .create(SwimlanesService.class); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @After + public void teardown() { + try { + mockWebServer.shutdown(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void getAllSwimlanes() { + MockResponse response = new MockResponse() + .setResponseCode(HttpURLConnection.HTTP_OK) + .setBody( + "[ " + SWIMLANE_1 + ", " + SWIMLANE_2 + " ]" + ); + + mockWebServer.enqueue(response); + + try { + List lists = service.getAllSwimlanes("board id").execute().body(); + + assertNotNull(lists); + + assertEquals(2, lists.size()); + + for (int i = 0; i < 2; i++) + assertEquals("title " + (i + 1), lists.get(i).getTitle()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void newSwimlane() { + MockResponse response = new MockResponse() + .setResponseCode(HttpURLConnection.HTTP_OK) + .setBody( + "{\"_id\":\"ixM8fvtBMuNPqGRSX\"}" + ); + + mockWebServer.enqueue(response); + + try { + Swimlane sl = service.newSwimlane("board id", "new swimlane").execute().body(); + + assertNotNull(sl); + assertEquals("ixM8fvtBMuNPqGRSX", sl.getId()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + final static String SWIMLANE_1 = "{\n\"_id\": \"BS4AA79YABBCpDDau\",\n\"title\": \"title 1\"\n}"; + final static String SWIMLANE_2 = "{\n\"_id\": \"QxKYvz7ZW6pcDTwAq\",\n\"title\": \"title 2\"\n}"; +}