Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile
diff --git a/.travis.yml b/.travis.yml
index 6846264..4463448 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -24,10 +24,10 @@
- extra-google-google_play_services
- extra-android-m2repository
- extra-google-m2repository
- - build-tools-27.0.3
- - android-27
+ - build-tools-28.0.3
+ - android-28
before_install:
- - yes | sdkmanager "platforms;android-27"
+ - yes | sdkmanager "platforms;android-28"
script: "./gradlew build --stacktrace"
diff --git a/app/build.gradle b/app/build.gradle
index dfdbd44..145d2af 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -32,10 +32,13 @@
androidTest {
java.srcDirs = ['src/androidTest/java/']
java.srcDir commonTestDir
+ resources.srcDirs += 'src/commonTest/resources'
+
}
test {
java.srcDirs = ['src/test/java/']
java.srcDir commonTestDir
+ resources.srcDirs += 'src/commonTest/resources'
}
}
@@ -56,6 +59,10 @@
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
buildToolsVersion rootProject.ext.buildToolsVersion
}
diff --git a/app/src/androidTest/java/org/apache/taverna/mobile/announcement/AnnouncementActivityTest.java b/app/src/androidTest/java/org/apache/taverna/mobile/announcement/AnnouncementActivityTest.java
new file mode 100644
index 0000000..f918d77
--- /dev/null
+++ b/app/src/androidTest/java/org/apache/taverna/mobile/announcement/AnnouncementActivityTest.java
@@ -0,0 +1,86 @@
+package org.apache.taverna.mobile.announcement;
+
+import org.apache.taverna.mobile.FakeRemoteDataSource;
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.SingleFragmentActivity;
+import org.apache.taverna.mobile.TestComponentRule;
+import org.apache.taverna.mobile.data.model.Announcements;
+import org.apache.taverna.mobile.ui.anouncements.AnnouncementFragment;
+import org.apache.taverna.mobile.utils.RecyclerViewItemCountAssertion;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+
+import android.content.Intent;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.rule.ActivityTestRule;
+import android.support.test.runner.AndroidJUnit4;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import io.reactivex.Observable;
+
+import static android.os.SystemClock.sleep;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+
+@RunWith(AndroidJUnit4.class)
+public class AnnouncementActivityTest {
+
+ private Announcements announcements;
+ private Map<String, String> option;
+
+ private final TestComponentRule component =
+ new TestComponentRule(InstrumentationRegistry.getTargetContext());
+ private final ActivityTestRule<SingleFragmentActivity> mAnnouncementActivityTestRule =
+ new ActivityTestRule<SingleFragmentActivity>(SingleFragmentActivity.class,
+ false, false) {
+ @Override
+ protected Intent getActivityIntent() {
+
+ return new Intent(InstrumentationRegistry.getTargetContext(),
+ SingleFragmentActivity.class);
+ }
+ };
+
+ /**
+ * TestComponentRule needs to go first to make sure the Dagger ApplicationTestComponent is set
+ * in the Application before any Activity is launched.
+ */
+ @Rule
+ public final TestRule chain = RuleChain.outerRule(component)
+ .around(mAnnouncementActivityTestRule);
+
+
+ @Before
+ public void setUp() {
+ announcements = FakeRemoteDataSource.getAnnouncements();
+ option = new HashMap<>();
+ option.put("order", "reverse");
+ option.put("page", String.valueOf(1));
+ }
+
+ @Test
+ public void CheckIfRecyclerViewIsLoaded() {
+
+
+ Mockito.when(component.getMockDataManager().getAllAnnouncement(option))
+ .thenReturn(Observable.just(announcements));
+ mAnnouncementActivityTestRule.launchActivity(null);
+ mAnnouncementActivityTestRule.getActivity().setFragment(new AnnouncementFragment());
+
+ onView(withId(R.id.rv_movies)).check(new RecyclerViewItemCountAssertion(5));
+
+
+
+ }
+
+
+}
diff --git a/app/src/androidTest/java/org/apache/taverna/mobile/login/LoginActivityTest.java b/app/src/androidTest/java/org/apache/taverna/mobile/login/LoginActivityTest.java
index ba52fb8..b94a5e7 100644
--- a/app/src/androidTest/java/org/apache/taverna/mobile/login/LoginActivityTest.java
+++ b/app/src/androidTest/java/org/apache/taverna/mobile/login/LoginActivityTest.java
@@ -40,13 +40,11 @@
import android.support.test.runner.AndroidJUnit4;
import io.reactivex.Observable;
-import retrofit2.HttpException;
import static android.os.SystemClock.sleep;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;
-import static android.support.test.espresso.action.ViewActions.scrollTo;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
diff --git a/app/src/androidTest/java/org/apache/taverna/mobile/utils/RecyclerViewItemCountAssertion.java b/app/src/androidTest/java/org/apache/taverna/mobile/utils/RecyclerViewItemCountAssertion.java
new file mode 100644
index 0000000..27cfcc3
--- /dev/null
+++ b/app/src/androidTest/java/org/apache/taverna/mobile/utils/RecyclerViewItemCountAssertion.java
@@ -0,0 +1,28 @@
+package org.apache.taverna.mobile.utils;
+
+import android.support.test.espresso.NoMatchingViewException;
+import android.support.test.espresso.ViewAssertion;
+import android.support.test.espresso.matcher.ViewMatchers;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import static org.hamcrest.Matchers.equalTo;
+
+
+public class RecyclerViewItemCountAssertion implements ViewAssertion {
+ private final int expectedCount;
+
+ public RecyclerViewItemCountAssertion(int expectedCount) {
+ this.expectedCount = expectedCount;
+ }
+
+ @Override
+ public void check(View view, NoMatchingViewException noViewFoundException) {
+ if (noViewFoundException != null) {
+ throw noViewFoundException;
+ }
+
+ RecyclerView recyclerView = (RecyclerView) view;
+ RecyclerView.Adapter adapter = recyclerView.getAdapter();
+ ViewMatchers.assertThat(adapter.getItemCount(), equalTo(5));
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/resources/announcement.xml b/app/src/commonTest/resources/announcement.xml
similarity index 100%
rename from app/src/test/resources/announcement.xml
rename to app/src/commonTest/resources/announcement.xml
diff --git a/app/src/test/resources/announcements.xml b/app/src/commonTest/resources/announcements.xml
similarity index 100%
rename from app/src/test/resources/announcements.xml
rename to app/src/commonTest/resources/announcements.xml
diff --git a/app/src/test/resources/user.xml b/app/src/commonTest/resources/user.xml
similarity index 100%
rename from app/src/test/resources/user.xml
rename to app/src/commonTest/resources/user.xml
diff --git a/app/src/test/resources/workflows.xml b/app/src/commonTest/resources/workflows.xml
similarity index 100%
rename from app/src/test/resources/workflows.xml
rename to app/src/commonTest/resources/workflows.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cdf5e28..75ea3a4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -107,6 +107,7 @@
<activity android:name=".ui.userprofile.UserProfileActivity"/>
<activity android:name=".ui.favouriteworkflow.FavouriteWorkflowsActivity"/>
<activity android:name=".ui.myworkflows.MyWorkflowActivity"/>
+ <activity android:name=".SingleFragmentActivity"/>
</application>
</manifest>
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/taverna/mobile/SingleFragmentActivity.java b/app/src/main/java/org/apache/taverna/mobile/SingleFragmentActivity.java
new file mode 100644
index 0000000..7f8e536
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/SingleFragmentActivity.java
@@ -0,0 +1,36 @@
+package org.apache.taverna.mobile;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import org.apache.taverna.mobile.ui.base.BaseActivity;
+
+public class SingleFragmentActivity extends BaseActivity {
+ FrameLayout content;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ content = new FrameLayout(this);
+ content.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT));
+ content.setId(R.id.container1);
+ setContentView(content);
+ }
+
+ public void setFragment(Fragment fragment) {
+
+ getSupportFragmentManager().beginTransaction()
+ .add(R.id.container1, fragment, "TEST")
+ .commit();
+ }
+
+ public void replaceFragment(Fragment fragment) {
+ getSupportFragmentManager().beginTransaction()
+ .replace(R.id.container1, fragment).commit();
+ }
+
+}
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 ba56eaa..fc54d8d 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
@@ -54,6 +54,8 @@
import butterknife.BindView;
import butterknife.ButterKnife;
+import static android.support.design.widget.Snackbar.make;
+
public class AnnouncementFragment extends Fragment implements RecyclerItemClickListner
.OnItemClickListener, AnnouncementMvpView {
@@ -245,7 +247,8 @@
@Override
public void showSnackBar(int message) {
- final Snackbar snackbar = Snackbar.make(mRecyclerView, message, Snackbar.LENGTH_LONG);
+ final Snackbar snackbar = make(getActivity().findViewById(android.R.id.content),
+ message, Snackbar.LENGTH_LONG);
snackbar.setAction(getResources().getString(R.string.ok), new View.OnClickListener() {
@Override
public void onClick(View view) {
diff --git a/app/src/main/res/values-v21/ids.xml b/app/src/main/res/values-v21/ids.xml
new file mode 100644
index 0000000..b7f8939
--- /dev/null
+++ b/app/src/main/res/values-v21/ids.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <item type="id" name="container1"></item>
+</resources>
\ No newline at end of file