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
