diff --git a/configuration/buildAndUpdateProduct.sh b/configuration/buildAndUpdateProduct.sh index 9ad52b5af9f..a95e255c363 100755 --- a/configuration/buildAndUpdateProduct.sh +++ b/configuration/buildAndUpdateProduct.sh @@ -650,7 +650,7 @@ if [[ "$@" == "build" ]] || [[ "$@" == "all" ]]; then echo yes | "$ANDROID" update sdk $ANDROID_OPTIONS --filter extra-android-m2repository --no-ui --force --all > /dev/null echo "Updating Android SDK (extra-google-m2repository)..." | tee -a $START_DIR/build.log echo yes | "$ANDROID" update sdk $ANDROID_OPTIONS --filter extra-google-m2repository --no-ui --force --all > /dev/null - ./gradlew clean build | tee -a $START_DIR/build.log + ./gradlew clean build -xtest | tee -a $START_DIR/build.log if [[ ${PIPESTATUS[0]} != 0 ]]; then exit 100 fi diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 8ebab6c5c0d..0741c690479 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -3128,7 +3128,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S leaderboardGroup.getDisplayName(), leaderboardGroup.getDescription()); groupDTO.displayLeaderboardsInReverseOrder = leaderboardGroup.isDisplayGroupsInReverseOrder(); for (Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) { - groupDTO.leaderboards.add(createStrippedLeaderboardDTO(leaderboard, withGeoLocationData, withStatisticalData)); + try { + StrippedLeaderboardDTO leaderboardDTO = createStrippedLeaderboardDTO(leaderboard, withGeoLocationData, withStatisticalData); + groupDTO.leaderboards.add(leaderboardDTO); + } catch (Exception e) { + logger.log(Level.SEVERE, "Catched exception while reading data for leaderboard " + leaderboard.getName(), e); + } } Leaderboard overallLeaderboard = leaderboardGroup.getOverallLeaderboard(); if (overallLeaderboard != null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventViewAction.java index aca16fc0cb7..831bb9dc61a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventViewAction.java @@ -6,6 +6,8 @@ import java.util.Comparator; import java.util.List; import java.util.Locale; import java.util.UUID; +import java.util.logging.Level; +import java.util.logging.Logger; import com.google.gwt.core.shared.GwtIncompatible; import com.sap.sailing.domain.base.Event; @@ -26,6 +28,8 @@ import com.sap.sse.common.media.ImageDescriptor; import com.sap.sse.common.media.MediaTagConstants; public class GetEventViewAction implements Action { + private static final Logger logger = Logger.getLogger(GetEventViewAction.class.getName()); + private UUID eventId; public GetEventViewAction() { @@ -57,25 +61,29 @@ public class GetEventViewAction implements Action { for (LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) { for (Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) { - if(leaderboard instanceof RegattaLeaderboard) { - Regatta regatta = context.getRacingEventService().getRegattaByName(leaderboard.getName()); - if(isFakeSeries && !HomeServiceUtil.isPartOfEvent(event, regatta)) { - continue; + try { + if(leaderboard instanceof RegattaLeaderboard) { + Regatta regatta = context.getRacingEventService().getRegattaByName(leaderboard.getName()); + if(isFakeSeries && !HomeServiceUtil.isPartOfEvent(event, regatta)) { + continue; + } + + RegattaMetadataDTO regattaDTO = createRegattaMetadataDTO(leaderboardGroup, leaderboard); + regattaDTO.setStartDate(regatta.getStartDate() != null ? regatta.getStartDate().asDate() : null); + regattaDTO.setEndDate(regatta.getEndDate() != null ? regatta.getEndDate().asDate() : null); + regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO)); + dto.getRegattas().add(regattaDTO); + + } else if(leaderboard instanceof FlexibleLeaderboard) { + RegattaMetadataDTO regattaDTO = createRegattaMetadataDTO(leaderboardGroup, leaderboard); + + regattaDTO.setStartDate(null); + regattaDTO.setEndDate(null); + regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO)); + dto.getRegattas().add(regattaDTO); } - - RegattaMetadataDTO regattaDTO = createRegattaMetadataDTO(leaderboardGroup, leaderboard); - regattaDTO.setStartDate(regatta.getStartDate() != null ? regatta.getStartDate().asDate() : null); - regattaDTO.setEndDate(regatta.getEndDate() != null ? regatta.getEndDate().asDate() : null); - regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO)); - dto.getRegattas().add(regattaDTO); - - } else if(leaderboard instanceof FlexibleLeaderboard) { - RegattaMetadataDTO regattaDTO = createRegattaMetadataDTO(leaderboardGroup, leaderboard); - - regattaDTO.setStartDate(null); - regattaDTO.setEndDate(null); - regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO)); - dto.getRegattas().add(regattaDTO); + } catch (Exception e) { + logger.log(Level.SEVERE, "Catched exception while reading data for leaderboard " + leaderboard.getName(), e); } } } diff --git a/mobile/com.sap.sailing.android.shared/build.gradle b/mobile/com.sap.sailing.android.shared/build.gradle index 7533d30a04c..e66fa9ea8df 100644 --- a/mobile/com.sap.sailing.android.shared/build.gradle +++ b/mobile/com.sap.sailing.android.shared/build.gradle @@ -15,6 +15,10 @@ android { java.srcDirs = ["src"] res.srcDirs = ["res"] } + + test { + java.srcDirs = ["tests-jvm/src"] + } } signingConfigs { @@ -46,6 +50,11 @@ dependencies { /* Google Play Services */ compile "com.google.android.gms:play-services-location:7.3.0" + /* all local jar-libs */ compile fileTree(dir: "libs", include: ["*.jar"]) + + /* JVM tests */ + testCompile 'junit:junit:4.12' + testCompile "org.mockito:mockito-core:1.9.5" } diff --git a/mobile/com.sap.sailing.android.tracking.app/build.gradle b/mobile/com.sap.sailing.android.tracking.app/build.gradle index e11c1cefff7..f788fae789f 100644 --- a/mobile/com.sap.sailing.android.tracking.app/build.gradle +++ b/mobile/com.sap.sailing.android.tracking.app/build.gradle @@ -26,9 +26,13 @@ android { } androidTest { - java.srcDirs = ["tests/src"] - res.srcDirs = ["tests/res"] - assets.srcDirs = ["tests/assets"] + java.srcDirs = ["tests-ui/src"] + res.srcDirs = ["tests-ui/res"] + assets.srcDirs = ["tests-ui/assets"] + } + + test { + java.srcDirs = ["tests-jvm/src"] } } @@ -64,7 +68,6 @@ android { } dependencies { - /* support libraries */ compile "com.android.support:appcompat-v7:22.1.1" @@ -75,8 +78,20 @@ dependencies { /* local dependencies */ compile project(":mobile:com.sap.sailing.android.shared") - /* all local jar-libs */ -// compile fileTree(dir: "libs", include: ["*.jar"]) + /* JVM tests */ + testCompile 'junit:junit:4.12' + testCompile "org.mockito:mockito-core:1.9.5" + + /* UI testing with espresso */ + androidTestCompile "com.android.support:support-annotations:22.1.1" + androidTestCompile "com.android.support.test:runner:0.2" + androidTestCompile "com.android.support.test:rules:0.2" + androidTestCompile "com.android.support.test.espresso:espresso-core:2.1" + androidTestCompile ("com.android.support.test.espresso:espresso-contrib:2.1") { + exclude group: "com.android.support", module: "appcompat" + exclude group: "com.android.support", module: "support-v4" + exclude module: "recyclerview-v7" + } } // Custom tasks diff --git a/mobile/com.sap.sailing.android.tracking.app/tests-jvm/src/com/sap/sailing/android/tracking/app/utils/ServiceHelperTest.java b/mobile/com.sap.sailing.android.tracking.app/tests-jvm/src/com/sap/sailing/android/tracking/app/utils/ServiceHelperTest.java new file mode 100644 index 00000000000..3c9eb51fc24 --- /dev/null +++ b/mobile/com.sap.sailing.android.tracking.app/tests-jvm/src/com/sap/sailing/android/tracking/app/utils/ServiceHelperTest.java @@ -0,0 +1,14 @@ +package com.sap.sailing.android.tracking.app.utils; + +import org.junit.Test; + +import static org.junit.Assert.assertNotNull; + +public class ServiceHelperTest { + + @Test + public void testServiceHelperConstructor() { + ServiceHelper serviceHelper = ServiceHelper.getInstance(); + assertNotNull(serviceHelper); + } +} diff --git a/mobile/com.sap.sailing.android.tracking.app/tests/src/com/sap/sailing/android/tracking/app/ApplicationTest.java b/mobile/com.sap.sailing.android.tracking.app/tests-ui/src/com/sap/sailing/android/tracking/app/ApplicationTest.java similarity index 100% rename from mobile/com.sap.sailing.android.tracking.app/tests/src/com/sap/sailing/android/tracking/app/ApplicationTest.java rename to mobile/com.sap.sailing.android.tracking.app/tests-ui/src/com/sap/sailing/android/tracking/app/ApplicationTest.java diff --git a/mobile/com.sap.sailing.android.tracking.app/tests/src/com/sap/sailing/android/tracking/app/ui/activities/StartActivityTest.java b/mobile/com.sap.sailing.android.tracking.app/tests-ui/src/com/sap/sailing/android/tracking/app/ui/activities/StartActivityTest.java similarity index 100% rename from mobile/com.sap.sailing.android.tracking.app/tests/src/com/sap/sailing/android/tracking/app/ui/activities/StartActivityTest.java rename to mobile/com.sap.sailing.android.tracking.app/tests-ui/src/com/sap/sailing/android/tracking/app/ui/activities/StartActivityTest.java diff --git a/mobile/com.sap.sailing.buoy.positioning/build.gradle b/mobile/com.sap.sailing.buoy.positioning/build.gradle index 05b66d7ed46..346097a44ba 100644 --- a/mobile/com.sap.sailing.buoy.positioning/build.gradle +++ b/mobile/com.sap.sailing.buoy.positioning/build.gradle @@ -26,9 +26,13 @@ android { } androidTest { - java.srcDirs = ["tests/src"] - res.srcDirs = ["tests/res"] - assets.srcDirs = ["tests/assets"] + java.srcDirs = ["tests-ui/src"] + res.srcDirs = ["tests-ui/res"] + assets.srcDirs = ["tests-ui/assets"] + } + + test { + java.srcDirs = ["tests-jvm/src"] } } @@ -73,8 +77,20 @@ dependencies { /* local dependencies */ compile project(":mobile:com.sap.sailing.android.shared") - /* all local jar-libs */ -// compile fileTree(dir: "libs", include: ["*.jar"]) + /* JVM tests */ + testCompile 'junit:junit:4.12' + testCompile "org.mockito:mockito-core:1.9.5" + + /* UI testing with espresso */ + androidTestCompile "com.android.support:support-annotations:22.1.1" + androidTestCompile "com.android.support.test:runner:0.2" + androidTestCompile "com.android.support.test:rules:0.2" + androidTestCompile "com.android.support.test.espresso:espresso-core:2.1" + androidTestCompile ("com.android.support.test.espresso:espresso-contrib:2.1") { + exclude group: "com.android.support", module: "appcompat" + exclude group: "com.android.support", module: "support-v4" + exclude module: "recyclerview-v7" + } } // Custom tasks diff --git a/mobile/com.sap.sailing.buoy.positioning/tests-jvm/src/com/sap/sailing/android/buoy/positioning/app/valueobjects/MarkInfoTest.java b/mobile/com.sap.sailing.buoy.positioning/tests-jvm/src/com/sap/sailing/android/buoy/positioning/app/valueobjects/MarkInfoTest.java new file mode 100644 index 00000000000..e4dcaba5adc --- /dev/null +++ b/mobile/com.sap.sailing.buoy.positioning/tests-jvm/src/com/sap/sailing/android/buoy/positioning/app/valueobjects/MarkInfoTest.java @@ -0,0 +1,16 @@ +package com.sap.sailing.android.buoy.positioning.app.valueobjects; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class MarkInfoTest { + + @Test + public void testMarkInfoName() { + MarkInfo markInfo = new MarkInfo(); + String name = "test"; + markInfo.setName(name); + assertEquals(markInfo.getName(), name); + } +} diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_create_yellow_36dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_create_yellow_36dp.png new file mode 100644 index 00000000000..6e511151905 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_create_yellow_36dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_menu_info_details.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_menu_info_details.png deleted file mode 100644 index 6a7a1e94a73..00000000000 Binary files a/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_menu_info_details.png and /dev/null differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_power_settings_new_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_power_settings_new_white_48dp.png new file mode 100644 index 00000000000..95a2b7e73a4 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_power_settings_new_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_refresh_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_refresh_white_48dp.png new file mode 100644 index 00000000000..a2ae1a3ac4c Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-hdpi/ic_refresh_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_create_yellow_36dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_create_yellow_36dp.png new file mode 100644 index 00000000000..4e1ec401d53 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_create_yellow_36dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_menu_info_details.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_menu_info_details.png deleted file mode 100644 index 18b15b5adda..00000000000 Binary files a/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_menu_info_details.png and /dev/null differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_power_settings_new_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_power_settings_new_white_48dp.png new file mode 100644 index 00000000000..6ea9162ab26 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_power_settings_new_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_refresh_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_refresh_white_48dp.png new file mode 100644 index 00000000000..c11b6b94813 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-mdpi/ic_refresh_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_create_yellow_36dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_create_yellow_36dp.png new file mode 100644 index 00000000000..a80ef9c9468 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_create_yellow_36dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_menu_info_details.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_menu_info_details.png deleted file mode 100644 index 24ea5437337..00000000000 Binary files a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_menu_info_details.png and /dev/null differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_power_settings_new_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_power_settings_new_white_48dp.png new file mode 100644 index 00000000000..191836bc4f8 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_power_settings_new_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_refresh_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_refresh_white_48dp.png new file mode 100644 index 00000000000..4a4c70f687a Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xhdpi/ic_refresh_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_create_yellow_36dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_create_yellow_36dp.png new file mode 100644 index 00000000000..c849c917cce Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_create_yellow_36dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_power_settings_new_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_power_settings_new_white_48dp.png new file mode 100644 index 00000000000..0b95e724ba5 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_power_settings_new_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_refresh_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_refresh_white_48dp.png new file mode 100644 index 00000000000..7db8234b4f5 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxhdpi/ic_refresh_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_create_yellow_36dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_create_yellow_36dp.png new file mode 100644 index 00000000000..239230660dd Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_create_yellow_36dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_power_settings_new_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_power_settings_new_white_48dp.png new file mode 100644 index 00000000000..4e42d065f6e Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_power_settings_new_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_refresh_white_48dp.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_refresh_white_48dp.png new file mode 100644 index 00000000000..d28d0f75be9 Binary files /dev/null and b/mobile/com.sap.sailing.racecommittee.app/res/drawable-xxxhdpi/ic_refresh_white_48dp.png differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_create_dark.xml b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_create_dark.xml new file mode 100644 index 00000000000..830d51fa736 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_create_dark.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_create_light.xml b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_create_light.xml new file mode 100644 index 00000000000..7a500e0f012 --- /dev/null +++ b/mobile/com.sap.sailing.racecommittee.app/res/drawable/ic_create_light.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/res/drawable/settings_grey.png b/mobile/com.sap.sailing.racecommittee.app/res/drawable/settings_grey.png deleted file mode 100644 index a5ab5969c03..00000000000 Binary files a/mobile/com.sap.sailing.racecommittee.app/res/drawable/settings_grey.png and /dev/null differ diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/login_backdrop.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/login_backdrop.xml index cab2c22859d..cec42d09f47 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/layout/login_backdrop.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/layout/login_backdrop.xml @@ -86,6 +86,20 @@ android:src="@drawable/ic_info_outline_white_48dp" tools:alpha="1"/> + + - + - + + + + + + + + diff --git a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_list_header.xml b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_list_header.xml index 35b3666633d..cc121ae9a7e 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/layout/race_list_header.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/layout/race_list_header.xml @@ -27,7 +27,7 @@ android:layout_margin="@dimen/default_margin" android:background="@drawable/round_button" android:padding="10dp" - android:src="@drawable/ic_assignment_white_48dp" /> + android:src="@drawable/ic_power_settings_new_white_48dp" /> - - - - - - - - - -