Repository: incubator-taverna-mobile
Updated Branches:
  refs/heads/master 05ec2999f -> 5d8a40a5a


Added announce. and favWorkflow presenter Tests and Bug Fixes in Announcements


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/5d8a40a5
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/5d8a40a5
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/5d8a40a5

Branch: refs/heads/master
Commit: 5d8a40a5a9c899b2ae0e25076ab56ea5ebb3a061
Parents: 05ec299
Author: Hitesh Gautam <[email protected]>
Authored: Fri Jun 15 16:04:47 2018 +0530
Committer: Hitesh Gautam <[email protected]>
Committed: Fri Jun 15 16:04:47 2018 +0530

----------------------------------------------------------------------
 .../taverna/mobile/data/model/Announcement.java |   2 +
 .../taverna/mobile/data/remote/APIEndPoint.java |   1 -
 .../mobile/data/remote/TavernaService.java      |   2 -
 .../ui/anouncements/AnnouncementFragment.java   |   1 +
 .../ui/anouncements/AnnouncementPresenter.java  |   1 -
 .../anouncements/AnnouncementPresenterTest.java | 148 +++++++++++++++++++
 .../FavouriteWorkflowsPresenterTest.java        | 119 +++++++++++++++
 7 files changed, 270 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/5d8a40a5/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java 
b/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java
index be91c6c..b9ab3cf 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java
@@ -83,6 +83,8 @@ public class Announcement implements Parcelable {
         dest.writeString(this.content);
     }
 
+    public Announcement() {
+    }
 
     public Announcement(Parcel in) {
         this.resource = in.readString();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/5d8a40a5/app/src/main/java/org/apache/taverna/mobile/data/remote/APIEndPoint.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/data/remote/APIEndPoint.java 
b/app/src/main/java/org/apache/taverna/mobile/data/remote/APIEndPoint.java
index 5e45e0f..a64ffd7 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/remote/APIEndPoint.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/remote/APIEndPoint.java
@@ -31,7 +31,6 @@ public class APIEndPoint {
     public static final String WHOAMI = "whoami.xml";
     public static final String SEARCH = "search.xml";
 
-
     public static final String XML_ACCEPT_HEADER = "Accept: application/xml";
     public static final String JSON_ACCEPT_HEADER = "Accept: application/json";
     public static final String JSON_CONTENT_HEADER = "Content-Type: 
application/json";

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/5d8a40a5/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java 
b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
index 050a352..a505b0e 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
@@ -64,7 +64,6 @@ public interface TavernaService {
     @GET(APIEndPoint.WHOAMI)
     Observable<User> getLoginUserDetail(@Header("Authorization") String 
credentials);
 
-
     @GET
     @Headers(APIEndPoint.XML_ACCEPT_HEADER)
     Observable<ResponseBody> downloadWorkflowContent(@Url String 
workflowContentUrl);
@@ -74,7 +73,6 @@ public interface TavernaService {
     Observable<Workflows> getMyWorkflows(@Query("id") String id,
                                          @QueryMap Map<String, String> 
options);
 
-
     @GET(APIEndPoint.SEARCH)
     Observable<Search> getSearchWorkflowResult(@QueryMap Map<String, String> 
options);
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/5d8a40a5/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
 
b/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
index 0037af0..ba56eaa 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
@@ -61,6 +61,7 @@ public class AnnouncementFragment extends Fragment implements 
RecyclerItemClickL
 
     @Inject
     DataManager dataManager;
+
     @Inject
     AnnouncementPresenter mAnnouncementPresenter;
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/5d8a40a5/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
 
b/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
index 6045e82..66791ed 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
@@ -62,7 +62,6 @@ public class AnnouncementPresenter extends 
BasePresenter<AnnouncementMvpView> {
 
     public void loadAllAnnouncement(int pageNumber) {
         checkViewAttached();
-        getMvpView().showProgressbar(true);
         compositeDisposable.add(mDataManager.getAllAnnouncement(
                 getAnnouncementQueryOptions(pageNumber))
                 .observeOn(AndroidSchedulers.mainThread())

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/5d8a40a5/app/src/test/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenterTest.java
----------------------------------------------------------------------
diff --git 
a/app/src/test/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenterTest.java
 
b/app/src/test/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenterTest.java
new file mode 100644
index 0000000..0f08d18
--- /dev/null
+++ 
b/app/src/test/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenterTest.java
@@ -0,0 +1,148 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.taverna.mobile.ui.anouncements;
+
+import org.apache.taverna.mobile.FakeRemoteDataSource;
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.data.DataManager;
+import org.apache.taverna.mobile.data.model.Announcements;
+import org.apache.taverna.mobile.data.model.DetailAnnouncement;
+import org.apache.taverna.mobile.utils.RxSchedulersOverrideRule;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import io.reactivex.Observable;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class AnnouncementPresenterTest {
+
+    @Rule
+    public final RxSchedulersOverrideRule rxSchedulersOverrideRule = new
+            RxSchedulersOverrideRule();
+    @Mock
+    DataManager dataManager;
+
+    @Mock
+    AnnouncementMvpView announcementMvpView;
+
+    Announcements announcements;
+    DetailAnnouncement announcement;
+    private AnnouncementPresenter announcementPresenter;
+    private Map<String, String> option;
+
+    @Before
+    public void setUp() {
+
+        announcementPresenter = new AnnouncementPresenter(dataManager);
+        announcementPresenter.attachView(announcementMvpView);
+        announcements = FakeRemoteDataSource.getAnnouncements();
+        announcement = FakeRemoteDataSource.getAnnouncement();
+
+        option = new HashMap<>();
+        option.put("order", "reverse");
+        option.put("page", String.valueOf(1));
+    }
+
+    @After
+    public void tearDown() {
+        announcementPresenter.detachView();
+    }
+
+    @Test
+    public void loadAllAnnouncement_validAnnouncementsData_ReturnsResults() {
+
+        when(dataManager.getAllAnnouncement(option)).thenReturn(
+                Observable.just(announcements));
+
+        announcementPresenter.loadAllAnnouncement(1);
+
+        verify(announcementMvpView, 
never()).showSnackBar(R.string.no_more_announcement_available);
+        verify(announcementMvpView, never()).removeLoadMoreProgressBar();
+        verify(announcementMvpView).showAllAnnouncement(announcements);
+        verify(announcementMvpView, 
never()).showSnackBar(R.string.failed_to_fetch_announcement);
+    }
+
+    @Test
+    public void loadAllAnnouncement_NULLAnnouncementsData_RemoveLoadMore() {
+
+        Announcements announcements = new Announcements();
+        when(dataManager.getAllAnnouncement(option)).thenReturn(
+                Observable.just(announcements));
+
+        announcementPresenter.loadAllAnnouncement(1);
+
+        
verify(announcementMvpView).showSnackBar(R.string.no_more_announcement_available);
+        verify(announcementMvpView).removeLoadMoreProgressBar();
+        verify(announcementMvpView, 
never()).showAllAnnouncement(announcements);
+        verify(announcementMvpView, 
never()).showSnackBar(R.string.failed_to_fetch_announcement);
+    }
+
+    @Test
+    public void loadAllAnnouncement_RuntimeError_ShowError() {
+
+
+        when(dataManager.getAllAnnouncement(option)).thenReturn(
+                Observable.<Announcements>error(new RuntimeException()));
+
+        announcementPresenter.loadAllAnnouncement(1);
+
+        verify(announcementMvpView, 
never()).showSnackBar(R.string.no_more_announcement_available);
+        verify(announcementMvpView, never()).removeLoadMoreProgressBar();
+        verify(announcementMvpView, 
never()).showAllAnnouncement(announcements);
+        
verify(announcementMvpView).showSnackBar(R.string.failed_to_fetch_announcement);
+    }
+
+    @Test
+    public void loadAnnouncementDetails_validAnnouncementData_ReturnsResults() 
{
+
+        
when(dataManager.getAnnouncementDetail("1")).thenReturn(Observable.just(announcement));
+        announcementPresenter.loadAnnouncementDetails("1");
+
+        verify(announcementMvpView).showAnnouncementDetail(announcement);
+        verify(announcementMvpView, 
never()).showSnackBar(R.string.failed_to_fetch_announcement);
+
+    }
+
+    @Test
+    public void loadAnnouncementDetails_RuntimeError_ShowError() {
+
+        DetailAnnouncement detailAnnouncement = new DetailAnnouncement();
+
+        when(dataManager.getAnnouncementDetail("1")).thenReturn(Observable
+                .<DetailAnnouncement>error(new RuntimeException()));
+
+        announcementPresenter.loadAnnouncementDetails("1");
+
+        verify(announcementMvpView, 
never()).showAnnouncementDetail(detailAnnouncement);
+        
verify(announcementMvpView).showSnackBar(R.string.failed_to_fetch_announcement);
+
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/5d8a40a5/app/src/test/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenterTest.java
----------------------------------------------------------------------
diff --git 
a/app/src/test/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenterTest.java
 
b/app/src/test/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenterTest.java
new file mode 100644
index 0000000..1d58bdc
--- /dev/null
+++ 
b/app/src/test/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenterTest.java
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.taverna.mobile.ui.favouriteworkflow;
+
+import org.apache.taverna.mobile.FakeRemoteDataSource;
+import org.apache.taverna.mobile.data.DataManager;
+import org.apache.taverna.mobile.data.model.Workflow;
+import org.apache.taverna.mobile.data.model.Workflows;
+import org.apache.taverna.mobile.utils.RxSchedulersOverrideRule;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import io.reactivex.Observable;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class FavouriteWorkflowsPresenterTest {
+
+    @Rule
+    public final RxSchedulersOverrideRule rxSchedulersOverrideRule = new
+            RxSchedulersOverrideRule();
+    @Mock
+    DataManager dataManager;
+
+    @Mock
+    FavouriteWorkflowsMvpView favouriteWorkflowsMvpView;
+
+    private Workflows workflows;
+
+    private FavouriteWorkflowsPresenter favouriteWorkflowsPresenter;
+
+    @Before
+    public void setUp() {
+
+        favouriteWorkflowsPresenter = new 
FavouriteWorkflowsPresenter(dataManager);
+        favouriteWorkflowsPresenter.attachView(favouriteWorkflowsMvpView);
+        workflows = FakeRemoteDataSource.getWorkflowList();
+    }
+
+    @After
+    public void tearDown() {
+
+        favouriteWorkflowsPresenter.detachView();
+    }
+
+    @Test
+    public void loadAllWorkflow_validWorkflowList_ReturnsResults() {
+
+        when(dataManager.getFavoriteWorkflowList()).thenReturn(
+                Observable.just(workflows.getWorkflowList()));
+
+        favouriteWorkflowsPresenter.loadAllWorkflow();
+
+        
verify(favouriteWorkflowsMvpView).showWorkflows(workflows.getWorkflowList());
+        verify(favouriteWorkflowsMvpView, never()).showEmptyWorkflow();
+        verify(favouriteWorkflowsMvpView, never()).showErrorSnackBar();
+
+    }
+
+    @Test
+    public void loadAllWorkflow_EmptyWorkflowList_ReturnsNoWorkflowResults() {
+
+        Workflows workflows = new Workflows();
+        workflows.setWorkflowList(new ArrayList<Workflow>());
+
+        when(dataManager.getFavoriteWorkflowList()).thenReturn(
+                Observable.just(workflows.getWorkflowList()));
+
+        favouriteWorkflowsPresenter.loadAllWorkflow();
+
+        verify(favouriteWorkflowsMvpView, 
never()).showWorkflows(workflows.getWorkflowList());
+        verify(favouriteWorkflowsMvpView).showEmptyWorkflow();
+        verify(favouriteWorkflowsMvpView, never()).showErrorSnackBar();
+
+    }
+
+    @Test
+    public void loadAllWorkflow_RuntimeError_ShowError() {
+
+        when(dataManager.getFavoriteWorkflowList()).thenReturn(
+                Observable.<List<Workflow>>error(new RuntimeException()));
+
+        favouriteWorkflowsPresenter.loadAllWorkflow();
+
+        verify(favouriteWorkflowsMvpView, 
never()).showWorkflows(workflows.getWorkflowList());
+        verify(favouriteWorkflowsMvpView, never()).showEmptyWorkflow();
+        verify(favouriteWorkflowsMvpView).showErrorSnackBar();
+
+    }
+
+
+}
\ No newline at end of file

Reply via email to