Merge branch 'master' into dependency-injection

This commit is contained in:
Paul Hawke 2017-11-30 21:41:38 -06:00
commit fb30a34478
41 changed files with 339 additions and 50 deletions

View file

@ -1,6 +1,19 @@
# Wikimedia Commons for Android # Wikimedia Commons for Android
## v2.5.0 beta ## v2.6.0 beta
- Multiple bugfixes for location updates and list/map loading in Nearby
- Multiple fixes for various crashes and memory leaks
- Added several unit tests
- Modified About page to include WMF disclaimer and modified Privacy Policy link to point to our individual privacy policy
- Added option for users to send logs to developers (has to be manually activated by user)
- Converted PNGs to WebPs
- Improved login screen with new design and privacy policy link
- Improved category display, if a category has an exact name entered, it will be shown first
- New UI for Nearby list
- Added product flavors for production and the beta-cluster Wikimedia servers
- Various improvements to navigation flow and backstack
## v2.5.0 beta
- Added one-time popup for beta users to provide feedback on IEG renewal proposal - Added one-time popup for beta users to provide feedback on IEG renewal proposal
- Added link to Commons policies in ShareActivity - Added link to Commons policies in ShareActivity
- Various string fixes - Various string fixes

View file

@ -58,6 +58,7 @@ dependencies {
testImplementation 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
testImplementation 'org.robolectric:robolectric:3.4' testImplementation 'org.robolectric:robolectric:3.4'
testImplementation 'org.mockito:mockito-all:1.10.19'
testImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1' testImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1'
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1' androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1'
@ -82,9 +83,11 @@ android {
defaultConfig { defaultConfig {
applicationId 'fr.free.nrw.commons' applicationId 'fr.free.nrw.commons'
versionCode 74
versionName '2.5.0' versionCode 76
versionName '2.6.1'
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName()) setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
minSdkVersion project.minSdkVersion minSdkVersion project.minSdkVersion
targetSdkVersion project.targetSdkVersion targetSdkVersion project.targetSdkVersion
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@ -150,6 +153,8 @@ android {
//FIXME: Temporary fix for https://github.com/commons-app/apps-android-commons/issues/709 //FIXME: Temporary fix for https://github.com/commons-app/apps-android-commons/issues/709
configurations.all { configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:25.2.0' resolutionStrategy.force 'com.android.support:support-annotations:25.2.0'
exclude module: 'httpclient'
exclude module: 'commons-logging'
} }
buildToolsVersion buildToolsVersion buildToolsVersion buildToolsVersion
} }

View file

@ -1,30 +0,0 @@
package fr.free.nrw.commons;
import android.support.test.espresso.assertion.ViewAssertions;
import android.support.test.filters.LargeTest;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import fr.free.nrw.commons.nearby.NearbyActivity;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
@LargeTest
@RunWith(AndroidJUnit4.class)
public class NearbyActivityTest {
@Rule
public final ActivityTestRule<NearbyActivity> nearby =
new ActivityTestRule<>(NearbyActivity.class);
@Test
public void testActivityLaunch() {
onView(withText(R.string.title_activity_nearby))
.check(ViewAssertions.matches(isDisplayed()));
}
}

View file

@ -0,0 +1,28 @@
package fr.free.nrw.commons.upload;
import android.net.Uri;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(AndroidJUnit4.class)
public class FileUtilsTest {
@Test
public void isSelfOwned() throws Exception {
Uri uri = Uri.parse("content://fr.free.nrw.commons.provider/document/1");
boolean selfOwned = FileUtils.isSelfOwned(InstrumentationRegistry.getTargetContext(), uri);
assertThat(selfOwned, is(true));
}
@Test
public void isNotSelfOwned() throws Exception {
Uri uri = Uri.parse("content://com.android.providers.media.documents/document/1");
boolean selfOwned = FileUtils.isSelfOwned(InstrumentationRegistry.getTargetContext(), uri);
assertThat(selfOwned, is(false));
}
}

View file

@ -333,7 +333,7 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
Fragment fragment = new NearbyMapFragment(); Fragment fragment = new NearbyMapFragment();
fragment.setArguments(bundle); fragment.setArguments(bundle);
fragmentTransaction.replace(R.id.container, fragment); fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getSimpleName());
fragmentTransaction.commitAllowingStateLoss(); fragmentTransaction.commitAllowingStateLoss();
} }
@ -344,7 +344,7 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
Fragment fragment = new NearbyListFragment(); Fragment fragment = new NearbyListFragment();
fragment.setArguments(bundle); fragment.setArguments(bundle);
fragmentTransaction.replace(R.id.container, fragment); fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getSimpleName());
fragmentTransaction.commitAllowingStateLoss(); fragmentTransaction.commitAllowingStateLoss();
} }

View file

@ -201,4 +201,6 @@
<string name="send_log_file">লগ ফাইল পাঠান</string> <string name="send_log_file">লগ ফাইল পাঠান</string>
<string name="send_log_file_description">ইমেইলের মাধ্যমে উন্নয়নকারীর কাছে লগ ফাইল পাঠান</string> <string name="send_log_file_description">ইমেইলের মাধ্যমে উন্নয়নকারীর কাছে লগ ফাইল পাঠান</string>
<string name="login_to_your_account">আপনার অ্যাকাউন্টে প্রবেশ করুন</string> <string name="login_to_your_account">আপনার অ্যাকাউন্টে প্রবেশ করুন</string>
<string name="nearby_location_has_not_changed">অবস্থান পরিবর্তন হয়নি।</string>
<string name="nearby_location_not_available">অবস্থান বোধগম্য নয়।</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Send logfil</string> <string name="send_log_file">Send logfil</string>
<string name="send_log_file_description">Send logfil til udviklerne via e-post</string> <string name="send_log_file_description">Send logfil til udviklerne via e-post</string>
<string name="login_to_your_account">Log ind på din konto</string> <string name="login_to_your_account">Log ind på din konto</string>
<string name="nearby_location_has_not_changed">Sted er ikke ændret.</string>
<string name="nearby_location_not_available">Sted ikke tilgængeligt.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Logdatei senden</string> <string name="send_log_file">Logdatei senden</string>
<string name="send_log_file_description">Logdatei an die Entwickler per E-Mail senden</string> <string name="send_log_file_description">Logdatei an die Entwickler per E-Mail senden</string>
<string name="login_to_your_account">Bei deinem Benutzerkonto anmelden</string> <string name="login_to_your_account">Bei deinem Benutzerkonto anmelden</string>
<string name="nearby_location_has_not_changed">Der Standort hat sich nicht geändert.</string>
<string name="nearby_location_not_available">Der Standort ist nicht verfügbar.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Enviar archivo de registro</string> <string name="send_log_file">Enviar archivo de registro</string>
<string name="send_log_file_description">Enviar archivo de registro a los desarrolladores por correo electrónico</string> <string name="send_log_file_description">Enviar archivo de registro a los desarrolladores por correo electrónico</string>
<string name="login_to_your_account">Accede a tu cuenta</string> <string name="login_to_your_account">Accede a tu cuenta</string>
<string name="nearby_location_has_not_changed">La ubicación no ha cambiado.</string>
<string name="nearby_location_not_available">La ubicación no está disponible.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Envoyer le journal</string> <string name="send_log_file">Envoyer le journal</string>
<string name="send_log_file_description">Envoyer le journal aux développeurs par courriel</string> <string name="send_log_file_description">Envoyer le journal aux développeurs par courriel</string>
<string name="login_to_your_account">Connectez-vous à votre compte</string> <string name="login_to_your_account">Connectez-vous à votre compte</string>
<string name="nearby_location_has_not_changed">L\'emplacement n\'a pas changé.</string>
<string name="nearby_location_not_available">Emplacement non disponible.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Enviar ficheiro de rexistro</string> <string name="send_log_file">Enviar ficheiro de rexistro</string>
<string name="send_log_file_description">Enviar ficheiro de rexistro ós desenvolvedores por correo electrónico</string> <string name="send_log_file_description">Enviar ficheiro de rexistro ós desenvolvedores por correo electrónico</string>
<string name="login_to_your_account">Comezar sesión na súa conta</string> <string name="login_to_your_account">Comezar sesión na súa conta</string>
<string name="nearby_location_has_not_changed">A localización non cambiou.</string>
<string name="nearby_location_not_available">A localización non está dispoñible.</string>
</resources> </resources>

View file

@ -11,9 +11,9 @@
<string name="login_success">Sikeres bejelentkezés</string> <string name="login_success">Sikeres bejelentkezés</string>
<string name="login_failed">A bejelentkezés nem sikerült.</string> <string name="login_failed">A bejelentkezés nem sikerült.</string>
<string name="upload_failed">A fájl nem található. Próbálkozz másik fájllal.</string> <string name="upload_failed">A fájl nem található. Próbálkozz másik fájllal.</string>
<string name="authentication_failed">Sikertelen azonosítás.</string> <string name="authentication_failed">Sikertelen hitelesítés.</string>
<string name="uploading_started">Feltöltés indul.</string> <string name="uploading_started">Feltöltés elindult.</string>
<string name="upload_completed_notification_title">%1$s feltöltve!</string> <string name="upload_completed_notification_title">%1$s feltöltve.</string>
<string name="upload_completed_notification_text">Feltöltés megtekintése</string> <string name="upload_completed_notification_text">Feltöltés megtekintése</string>
<string name="upload_progress_notification_title_start">Feltöltés indul: %1$s</string> <string name="upload_progress_notification_title_start">Feltöltés indul: %1$s</string>
<string name="upload_progress_notification_title_in_progress">%1$s feltöltése</string> <string name="upload_progress_notification_title_in_progress">%1$s feltöltése</string>
@ -105,7 +105,7 @@
<string name="license_name_cc_by_sa_3_0_ee">CC BY-SA 3.0 (Észtország)</string> <string name="license_name_cc_by_sa_3_0_ee">CC BY-SA 3.0 (Észtország)</string>
<string name="license_name_cc_by_sa_3_0_es">CC BY-SA 3.0 (Spanyolország)</string> <string name="license_name_cc_by_sa_3_0_es">CC BY-SA 3.0 (Spanyolország)</string>
<string name="license_name_cc_by_sa_3_0_hr">CC BY-SA 3.0 (Horvátország)</string> <string name="license_name_cc_by_sa_3_0_hr">CC BY-SA 3.0 (Horvátország)</string>
<string name="license_name_cc_by_sa_3_0_lu">CC BY-SA 3.0 (Luxembourg)</string> <string name="license_name_cc_by_sa_3_0_lu">CC BY-SA 3.0 (Luxemburg)</string>
<string name="license_name_cc_by_sa_3_0_nl">CC BY-SA 3.0 (Hollandia)</string> <string name="license_name_cc_by_sa_3_0_nl">CC BY-SA 3.0 (Hollandia)</string>
<string name="license_name_cc_by_sa_3_0_no">CC BY-SA 3.0 (Norvégia)</string> <string name="license_name_cc_by_sa_3_0_no">CC BY-SA 3.0 (Norvégia)</string>
<string name="license_name_cc_by_sa_3_0_pl">CC BY-SA 3.0 (Lengyelország)</string> <string name="license_name_cc_by_sa_3_0_pl">CC BY-SA 3.0 (Lengyelország)</string>
@ -190,9 +190,15 @@
<string name="no_description_found">nincs leírás</string> <string name="no_description_found">nincs leírás</string>
<string name="nearby_info_menu_commons_article">Commons leírólap</string> <string name="nearby_info_menu_commons_article">Commons leírólap</string>
<string name="nearby_info_menu_wikidata_article">Wikidata-elem</string> <string name="nearby_info_menu_wikidata_article">Wikidata-elem</string>
<string name="error_while_cache">Hiba a képek gyorsítótárazásakor</string>
<string name="title_info">Egy egyedi, leíró cím a fájlnak, ami fájlnévként fog szolgálni. Egyszerű nyelvezetet használhatsz szóközökkel. Ne tedd bele a kiterjesztést.</string> <string name="title_info">Egy egyedi, leíró cím a fájlnak, ami fájlnévként fog szolgálni. Egyszerű nyelvezetet használhatsz szóközökkel. Ne tedd bele a kiterjesztést.</string>
<string name="description_info">Kérlek a lehető legteljesebb módon írd le a fájlt: hol készült, mit ábrázol, mi a kontextus? Kérlek add meg az objektumokat vagy személyeket a képen, valamint a nehezen kitalálható információkat (például a kép készítésének dátumát, ha az egy tájkép). Amennyiben a média valami szokatlant ábrázol, kérlek fejtsd ki, hogy mi teszi szokatlanná.</string> <string name="description_info">Kérlek a lehető legteljesebb módon írd le a fájlt: hol készült, mit ábrázol, mi a kontextus? Kérlek add meg az objektumokat vagy személyeket a képen, valamint a nehezen kitalálható információkat (például a kép készítésének dátumát, ha az egy tájkép). Amennyiben a média valami szokatlant ábrázol, kérlek fejtsd ki, hogy mi teszi szokatlanná.</string>
<string name="give_permission">Engedély adása</string> <string name="give_permission">Engedély adása</string>
<string name="use_external_storage">Külső tárhely használata</string> <string name="use_external_storage">Külső tárhely használata</string>
<string name="use_external_storage_summary">Az alkalmazáson belüli kamerával készült képek mentése az eszközre</string>
<string name="send_log_file">Naplófájlok küldése</string>
<string name="send_log_file_description">Naplófájlok küldése e-mailben a fejlesztőknek</string>
<string name="login_to_your_account">Bejelentkezés a fiókodba</string> <string name="login_to_your_account">Bejelentkezés a fiókodba</string>
<string name="nearby_location_has_not_changed">A hely nem változott.</string>
<string name="nearby_location_not_available">A hely nem érhető el.</string>
</resources> </resources>

View file

@ -167,4 +167,6 @@
<string name="nearby_info_menu_commons_article">Pagina di Commons del file</string> <string name="nearby_info_menu_commons_article">Pagina di Commons del file</string>
<string name="nearby_info_menu_wikidata_article">Elemento Wikidata</string> <string name="nearby_info_menu_wikidata_article">Elemento Wikidata</string>
<string name="login_to_your_account">Accedi alla tua utenza</string> <string name="login_to_your_account">Accedi alla tua utenza</string>
<string name="nearby_location_has_not_changed">La posizione non è cambiata.</string>
<string name="nearby_location_not_available">Posizione non disponibile.</string>
</resources> </resources>

View file

@ -168,4 +168,5 @@
<string name="no_description_found">説明がありません</string> <string name="no_description_found">説明がありません</string>
<string name="nearby_info_menu_wikidata_article">ウィキデータ項目</string> <string name="nearby_info_menu_wikidata_article">ウィキデータ項目</string>
<string name="use_external_storage">外部ストレージを使用</string> <string name="use_external_storage">外部ストレージを使用</string>
<string name="nearby_location_not_available">位置が無効です。</string>
</resources> </resources>

View file

@ -198,4 +198,6 @@
<string name="send_log_file">로그 파일 보내기</string> <string name="send_log_file">로그 파일 보내기</string>
<string name="send_log_file_description">이메일로 개발자에게 로그 파일 보내기</string> <string name="send_log_file_description">이메일로 개발자에게 로그 파일 보내기</string>
<string name="login_to_your_account">자신의 계정으로 로그인</string> <string name="login_to_your_account">자신의 계정으로 로그인</string>
<string name="nearby_location_has_not_changed">위치가 변경되지 않았습니다.</string>
<string name="nearby_location_not_available">위치를 사용할 수 없습니다.</string>
</resources> </resources>

View file

@ -191,4 +191,6 @@
<string name="send_log_file">Log-Fichier schécken</string> <string name="send_log_file">Log-Fichier schécken</string>
<string name="send_log_file_description">Log-Fichier per E-Mail un d\'Entwéckler schécken</string> <string name="send_log_file_description">Log-Fichier per E-Mail un d\'Entwéckler schécken</string>
<string name="login_to_your_account">An Äre Benotzerkont aloggen</string> <string name="login_to_your_account">An Äre Benotzerkont aloggen</string>
<string name="nearby_location_has_not_changed">De Plaz huet net geännert.</string>
<string name="nearby_location_not_available">Plaz ass net disponibel.</string>
</resources> </resources>

View file

@ -17,7 +17,7 @@
<string name="upload_completed_notification_text">Допрете за да го погледате подигањето</string> <string name="upload_completed_notification_text">Допрете за да го погледате подигањето</string>
<string name="upload_progress_notification_title_start">Почнувам со подигањето на „%1$s“</string> <string name="upload_progress_notification_title_start">Почнувам со подигањето на „%1$s“</string>
<string name="upload_progress_notification_title_in_progress">Подигање на „%1$s“</string> <string name="upload_progress_notification_title_in_progress">Подигање на „%1$s“</string>
<string name="upload_progress_notification_title_finishing">Заврпувам со подигање на „%1$s“</string> <string name="upload_progress_notification_title_finishing">Завршувам со подигање на „%1$s“</string>
<string name="upload_failed_notification_title">Подигањето на „%1$s“ не успеа</string> <string name="upload_failed_notification_title">Подигањето на „%1$s“ не успеа</string>
<string name="upload_failed_notification_subtitle">Допрете за да погледате</string> <string name="upload_failed_notification_subtitle">Допрете за да погледате</string>
<plurals name="uploads_pending_notification_indicator"> <plurals name="uploads_pending_notification_indicator">
@ -73,7 +73,7 @@
<string name="title_activity_settings">Нагодувања</string> <string name="title_activity_settings">Нагодувања</string>
<string name="title_activity_signup">Регистрација</string> <string name="title_activity_signup">Регистрација</string>
<string name="menu_about">За извршникот</string> <string name="menu_about">За извршникот</string>
<string name="about_license">Прилогот на Ризницата има отворен код. Негови творци и оддржувачи се примателите на наменските средства од Викимедиината заедница како и членовите на заедницата. Фондацијата Викимедија нема учество во нејзиното создавање, разработка и одржување.</string> <string name="about_license">Прилогот на Ризницата има отворен код. Негови творци и одржувачи се примателите на наменските средства од Викимедиината заедница како и членовите на заедницата. Фондацијата Викимедија нема учество во нејзиното создавање, разработка и одржување.</string>
<string name="about_improve">&lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Извор&lt;/a&gt; и &lt;a href=\"https://commons-app.github.io/\"&gt;мреж. место&lt;/a&gt; на GitHub&lt;/a&gt;. Создајте нов &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;случај на GitHub&lt;/a&gt; за пријавување грешки и давање предлози.</string> <string name="about_improve">&lt;a href=\"https://github.com/commons-app/apps-android-commons\"&gt;Извор&lt;/a&gt; и &lt;a href=\"https://commons-app.github.io/\"&gt;мреж. место&lt;/a&gt; на GitHub&lt;/a&gt;. Создајте нов &lt;a href=\"https://github.com/commons-app/apps-android-commons/issues\"&gt;случај на GitHub&lt;/a&gt; за пријавување грешки и давање предлози.</string>
<string name="about_privacy_policy">&lt;a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\"&gt;Заштита на личните податоци&lt;/a&gt;</string> <string name="about_privacy_policy">&lt;a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\"&gt;Заштита на личните податоци&lt;/a&gt;</string>
<string name="about_credits">&lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\"&gt;Заслуги&lt;/a&gt;</string> <string name="about_credits">&lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\"&gt;Заслуги&lt;/a&gt;</string>
@ -201,4 +201,6 @@
<string name="send_log_file">Испрати дневничка податотека</string> <string name="send_log_file">Испрати дневничка податотека</string>
<string name="send_log_file_description">Испрати дневничка податотека на разработувачите по е-пошта</string> <string name="send_log_file_description">Испрати дневничка податотека на разработувачите по е-пошта</string>
<string name="login_to_your_account">Најавете се со вашата сметка</string> <string name="login_to_your_account">Најавете се со вашата сметка</string>
<string name="nearby_location_has_not_changed">Местоположбата не е сменета.</string>
<string name="nearby_location_not_available">Местоположбата е недостапна.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Send loggfil</string> <string name="send_log_file">Send loggfil</string>
<string name="send_log_file_description">Send loggfil til utviklerne via epost</string> <string name="send_log_file_description">Send loggfil til utviklerne via epost</string>
<string name="login_to_your_account">Logg inn med kontoen din</string> <string name="login_to_your_account">Logg inn med kontoen din</string>
<string name="nearby_location_has_not_changed">Stedet har ikke blitt endret.</string>
<string name="nearby_location_not_available">Sted ikke tilgjengelig.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Mandé l\'archivi d\'argistr</string> <string name="send_log_file">Mandé l\'archivi d\'argistr</string>
<string name="send_log_file_description">Mandé l\'archivi d\'argistr ai dësvlupator për pòsta eletrònica</string> <string name="send_log_file_description">Mandé l\'archivi d\'argistr ai dësvlupator për pòsta eletrònica</string>
<string name="login_to_your_account">Ch\'as colega a sò cont</string> <string name="login_to_your_account">Ch\'as colega a sò cont</string>
<string name="nearby_location_has_not_changed">Ël leu a l\'é nen cangià.</string>
<string name="nearby_location_not_available">Leu nen disponìbil.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Enviar arquivo de registro</string> <string name="send_log_file">Enviar arquivo de registro</string>
<string name="send_log_file_description">Enviar arquivo de log para desenvolvedores por e-mail</string> <string name="send_log_file_description">Enviar arquivo de log para desenvolvedores por e-mail</string>
<string name="login_to_your_account">Faça login na sua conta</string> <string name="login_to_your_account">Faça login na sua conta</string>
<string name="nearby_location_has_not_changed">O local não mudou.</string>
<string name="nearby_location_not_available">Localização não disponível.</string>
</resources> </resources>

View file

@ -10,6 +10,7 @@
<string name="logging_in_message">Aguarde, por favor…</string> <string name="logging_in_message">Aguarde, por favor…</string>
<string name="login_success">Inicio de sessão bem sucedido</string> <string name="login_success">Inicio de sessão bem sucedido</string>
<string name="login_failed">O início de sessão falhou!</string> <string name="login_failed">O início de sessão falhou!</string>
<string name="upload_failed">Ficheiro não encontrado. Por favor, tente outro ficheiro.</string>
<string name="authentication_failed">Falha de autenticação!</string> <string name="authentication_failed">Falha de autenticação!</string>
<string name="uploading_started">Iniciado o carregamento!</string> <string name="uploading_started">Iniciado o carregamento!</string>
<string name="upload_completed_notification_title">%1$s enviado!</string> <string name="upload_completed_notification_title">%1$s enviado!</string>
@ -19,11 +20,11 @@
<string name="upload_progress_notification_title_finishing">A terminar o carregamento de %1$s</string> <string name="upload_progress_notification_title_finishing">A terminar o carregamento de %1$s</string>
<string name="upload_failed_notification_title">O carregamento de %1$s falhou</string> <string name="upload_failed_notification_title">O carregamento de %1$s falhou</string>
<string name="upload_failed_notification_subtitle">Toque para ver</string> <string name="upload_failed_notification_subtitle">Toque para ver</string>
<plurals name="uploads_pending_notification_indicator" fuzzy="true"> <plurals name="uploads_pending_notification_indicator">
<item quantity="one">A carregar um ficheiro</item> <item quantity="one">%d a carregar um ficheiro</item>
<item quantity="other">A carregar %d ficheiros</item> <item quantity="other">a carregar %d ficheiros</item>
</plurals> </plurals>
<string name="title_activity_contributions" fuzzy="true">Meus carregamentos</string> <string name="title_activity_contributions">Meus carregamentos recentes</string>
<string name="contribution_state_queued">Em espera</string> <string name="contribution_state_queued">Em espera</string>
<string name="contribution_state_failed">Falhou</string> <string name="contribution_state_failed">Falhou</string>
<string name="contribution_state_in_progress">%1$d%% concluído</string> <string name="contribution_state_in_progress">%1$d%% concluído</string>
@ -39,8 +40,9 @@
<string name="login_failed_network">Não foi possível iniciar sessão - falha de rede</string> <string name="login_failed_network">Não foi possível iniciar sessão - falha de rede</string>
<string name="login_failed_username">Não foi possível iniciar sessão - verifique o seu nome de utilizador(a)</string> <string name="login_failed_username">Não foi possível iniciar sessão - verifique o seu nome de utilizador(a)</string>
<string name="login_failed_password">Não foi possível iniciar sessão - verifique a sua palavra-passe</string> <string name="login_failed_password">Não foi possível iniciar sessão - verifique a sua palavra-passe</string>
<string name="login_failed_throttled" fuzzy="true">Demasiadas tentativas mal sucedidas. Por favor, tente de novo dentro de alguns minutos</string> <string name="login_failed_throttled">Demasiadas tentativas malsucedidas. Por favor, tente de novo dentro de alguns minutos.</string>
<string name="login_failed_blocked">Desculpe, este utilizador foi bloqueado no Commons</string> <string name="login_failed_blocked">Desculpe, este utilizador foi bloqueado no Commons</string>
<string name="login_failed_2fa_needed">Precisa fornecer o seu código de ativação de dois fatores.</string>
<string name="login_failed_generic">Falha ao iniciar sessão</string> <string name="login_failed_generic">Falha ao iniciar sessão</string>
<string name="share_upload_button">Carregar</string> <string name="share_upload_button">Carregar</string>
<string name="multiple_share_base_title">Nomeie este conjunto</string> <string name="multiple_share_base_title">Nomeie este conjunto</string>
@ -48,9 +50,13 @@
<string name="menu_upload_single">Enviar</string> <string name="menu_upload_single">Enviar</string>
<string name="categories_search_text_hint">Pesquisar categorias</string> <string name="categories_search_text_hint">Pesquisar categorias</string>
<string name="menu_save_categories">Gravar</string> <string name="menu_save_categories">Gravar</string>
<plurals name="contributions_subtitle" fuzzy="true"> <string name="refresh_button">Atualizar</string>
<item quantity="zero">Sem carregamentos ainda</item> <string name="gps_disabled">O GPS está desativado no seu dispositivo. Gostarias de ativá-lo?</string>
<item quantity="one">1 carregamento</item> <string name="enable_gps">Ativar GPS</string>
<string name="contributions_subtitle_zero">Ainda não foram enviados ficheiros</string>
<plurals name="contributions_subtitle">
<item quantity="zero">\@string/contributions_subtitle_zero</item>
<item quantity="one">%d carregamento</item>
<item quantity="other">%d carregamentos</item> <item quantity="other">%d carregamentos</item>
</plurals> </plurals>
<plurals name="starting_multiple_uploads" fuzzy="true"> <plurals name="starting_multiple_uploads" fuzzy="true">
@ -65,12 +71,14 @@
<string name="categories_skip_explanation">Adicione categorias para tornar as suas imagens mais fáceis de encontrar no Wikimedia Commons. \n\nComece a digitar para adicionar categorias.\nCarregue nesta mensagem (ou carregue para voltar) para saltar este passo</string> <string name="categories_skip_explanation">Adicione categorias para tornar as suas imagens mais fáceis de encontrar no Wikimedia Commons. \n\nComece a digitar para adicionar categorias.\nCarregue nesta mensagem (ou carregue para voltar) para saltar este passo</string>
<string name="categories_activity_title">Categorias</string> <string name="categories_activity_title">Categorias</string>
<string name="title_activity_settings">Configurações</string> <string name="title_activity_settings">Configurações</string>
<string name="title_activity_signup">Registar-se</string>
<string name="menu_about">Sobre</string> <string name="menu_about">Sobre</string>
<string name="about_license" fuzzy="true">Software em código aberto distribuído sob &lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\"&gt;Apache License v2&lt;/a&gt;. O Wikimedia Commons e o seu logótipo são marcas registadas da Wikimedia Foundation e são usadas com permissão da Wikimedia Foundation. Não somos endossados ou afiliados à Wikimedia Foundation.</string> <string name="about_license" fuzzy="true">Software em código aberto distribuído sob &lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\"&gt;Apache License v2&lt;/a&gt;. O Wikimedia Commons e o seu logótipo são marcas registadas da Wikimedia Foundation e são usadas com permissão da Wikimedia Foundation. Não somos endossados ou afiliados à Wikimedia Foundation.</string>
<string name="about_improve" fuzzy="true">Código no &lt;a href=\"https://github.com/commons-app/android-commons\"&gt;GitHub&lt;/a&gt;. Erros no &lt;a href=\" https://github.com/commons-app/apps-android-commons/issues\"&gt;Github&lt;/a&gt;.</string> <string name="about_improve" fuzzy="true">Código no &lt;a href=\"https://github.com/commons-app/android-commons\"&gt;GitHub&lt;/a&gt;. Erros no &lt;a href=\" https://github.com/commons-app/apps-android-commons/issues\"&gt;Github&lt;/a&gt;.</string>
<string name="about_privacy_policy" fuzzy="true">&lt;a href=\"https://wikimediafoundation.org/wiki/Privacy_policy\"&gt;Política de privacidade&lt;/a&gt;</string> <string name="about_privacy_policy" fuzzy="true">&lt;a href=\"https://wikimediafoundation.org/wiki/Privacy_policy\"&gt;Política de privacidade&lt;/a&gt;</string>
<string name="title_activity_about">Sobre</string> <string name="title_activity_about">Sobre</string>
<string name="menu_feedback">Enviar comentários (por e-mail)</string> <string name="menu_feedback">Enviar comentários (por e-mail)</string>
<string name="no_email_client">Não foi instalado nenhum cliente de correio eletrónico</string>
<string name="provider_categories">Categorias usadas recentemente</string> <string name="provider_categories">Categorias usadas recentemente</string>
<string name="waiting_first_sync">A aguardar pela primeira sincronização…</string> <string name="waiting_first_sync">A aguardar pela primeira sincronização…</string>
<string name="no_uploads_yet">Não carregou ainda nenhuma foto.</string> <string name="no_uploads_yet">Não carregou ainda nenhuma foto.</string>
@ -118,4 +126,12 @@
<string name="title_activity_nearby">Locais Próximos</string> <string name="title_activity_nearby">Locais Próximos</string>
<string name="yes">Sim</string> <string name="yes">Sim</string>
<string name="no">Não</string> <string name="no">Não</string>
<string name="media_detail_title">Título</string>
<string name="media_detail_media_title">Título do ficheiro multimédia</string>
<string name="media_detail_description">Descrição</string>
<string name="media_detail_uploaded_date">Data de carregamento</string>
<string name="media_detail_license">Licença</string>
<string name="media_detail_coordinates">Coordenadas</string>
<string name="media_detail_coordinates_empty">Não fornecido</string>
<string name="use_wikidata">Utilizar o Wikidata</string>
</resources> </resources>

View file

@ -205,4 +205,6 @@
<string name="send_log_file">Выслать лог-файл</string> <string name="send_log_file">Выслать лог-файл</string>
<string name="send_log_file_description">Выслать лог-файл разработчикам по е-мейлу</string> <string name="send_log_file_description">Выслать лог-файл разработчикам по е-мейлу</string>
<string name="login_to_your_account">Войдите в свою учётную запись</string> <string name="login_to_your_account">Войдите в свою учётную запись</string>
<string name="nearby_location_has_not_changed">Местоположение не изменено.</string>
<string name="nearby_location_not_available">Местоположение недоступно.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">Skicka loggfil</string> <string name="send_log_file">Skicka loggfil</string>
<string name="send_log_file_description">Skicka loggfilen till utvecklarna via e-post</string> <string name="send_log_file_description">Skicka loggfilen till utvecklarna via e-post</string>
<string name="login_to_your_account">Logga in på ditt konto</string> <string name="login_to_your_account">Logga in på ditt konto</string>
<string name="nearby_location_has_not_changed">Platsen har inte ändrats.</string>
<string name="nearby_location_not_available">Platsen är inte tillgänglig.</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">寄送日誌檔案</string> <string name="send_log_file">寄送日誌檔案</string>
<string name="send_log_file_description">經由電子郵件寄送日誌檔案給開發人員</string> <string name="send_log_file_description">經由電子郵件寄送日誌檔案給開發人員</string>
<string name="login_to_your_account">登入您的帳號</string> <string name="login_to_your_account">登入您的帳號</string>
<string name="nearby_location_has_not_changed">位置無法更改。</string>
<string name="nearby_location_not_available">位置無效。</string>
</resources> </resources>

View file

@ -201,4 +201,6 @@
<string name="send_log_file">发送日志文件</string> <string name="send_log_file">发送日志文件</string>
<string name="send_log_file_description">通过电子邮件将日志文件发送给开发人员</string> <string name="send_log_file_description">通过电子邮件将日志文件发送给开发人员</string>
<string name="login_to_your_account">登录您的账户</string> <string name="login_to_your_account">登录您的账户</string>
<string name="nearby_location_has_not_changed">位置没有更新。</string>
<string name="nearby_location_not_available">位置不可用。</string>
</resources> </resources>

View file

@ -1,12 +1,182 @@
package fr.free.nrw.commons; package fr.free.nrw.commons;
import android.content.SharedPreferences;
import android.support.v4.util.LruCache;
import com.squareup.leakcanary.RefWatcher; import com.squareup.leakcanary.RefWatcher;
// This class is automatically discovered by Robolectric import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import fr.free.nrw.commons.auth.AccountUtil;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.caching.CacheController;
import fr.free.nrw.commons.data.DBOpenHelper;
import fr.free.nrw.commons.di.CommonsApplicationComponent;
import fr.free.nrw.commons.di.CommonsApplicationModule;
import fr.free.nrw.commons.di.DaggerCommonsApplicationComponent;
import fr.free.nrw.commons.location.LocationServiceManager;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.nearby.NearbyPlaces;
import fr.free.nrw.commons.upload.UploadController;
public class TestCommonsApplication extends CommonsApplication { public class TestCommonsApplication extends CommonsApplication {
CommonsApplicationComponent mockApplicationComponent;
@Mock
CommonsApplicationModule commonsApplicationModule;
@Mock
AccountUtil accountUtil;
@Mock
SharedPreferences appSharedPreferences;
@Mock
SharedPreferences defaultSharedPreferences;
@Mock
SharedPreferences otherSharedPreferences;
@Mock
UploadController uploadController;
@Mock
SessionManager sessionManager;
@Mock
MediaWikiApi mediaWikiApi;
@Mock
LocationServiceManager locationServiceManager;
@Mock
CacheController cacheController;
@Mock
DBOpenHelper dbOpenHelper;
@Mock
NearbyPlaces nearbyPlaces;
@Mock
LruCache<String, String> lruCache;
@Override
public void onCreate() {
MockitoAnnotations.initMocks(this);
super.onCreate();
}
@Override @Override
protected RefWatcher setupLeakCanary() { protected RefWatcher setupLeakCanary() {
// No leakcanary in unit tests. // No leakcanary in unit tests.
return RefWatcher.DISABLED; return RefWatcher.DISABLED;
} }
@Override
public CommonsApplicationComponent injector() {
if (mockApplicationComponent == null) {
mockApplicationComponent = DaggerCommonsApplicationComponent.builder()
.appModule(new CommonsApplicationModule(this) {
@Override
public AccountUtil providesAccountUtil() {
return accountUtil;
}
@Override
public SharedPreferences providesApplicationSharedPreferences() {
return appSharedPreferences;
}
@Override
public SharedPreferences providesDefaultSharedPreferences() {
return defaultSharedPreferences;
}
@Override
public SharedPreferences providesOtherSharedPreferences() {
return otherSharedPreferences;
}
@Override
public UploadController providesUploadController(SessionManager sessionManager, SharedPreferences sharedPreferences) {
return uploadController;
}
@Override
public SessionManager providesSessionManager(MediaWikiApi mediaWikiApi) {
return sessionManager;
}
@Override
public MediaWikiApi provideMediaWikiApi() {
return mediaWikiApi;
}
@Override
public LocationServiceManager provideLocationServiceManager() {
return locationServiceManager;
}
@Override
public CacheController provideCacheController() {
return cacheController;
}
@Override
public DBOpenHelper provideDBOpenHelper() {
return dbOpenHelper;
}
@Override
public NearbyPlaces provideNearbyPlaces() {
return nearbyPlaces;
}
@Override
public LruCache<String, String> provideLruCache() {
return lruCache;
}
}).build();
}
return mockApplicationComponent;
}
public AccountUtil getAccountUtil() {
return accountUtil;
}
public SharedPreferences getAppSharedPreferences() {
return appSharedPreferences;
}
public SharedPreferences getDefaultSharedPreferences() {
return defaultSharedPreferences;
}
public SharedPreferences getOtherSharedPreferences() {
return otherSharedPreferences;
}
public UploadController getUploadController() {
return uploadController;
}
public SessionManager getSessionManager() {
return sessionManager;
}
public MediaWikiApi getMediaWikiApi() {
return mediaWikiApi;
}
public LocationServiceManager getLocationServiceManager() {
return locationServiceManager;
}
public CacheController getCacheController() {
return cacheController;
}
public DBOpenHelper getDbOpenHelper() {
return dbOpenHelper;
}
public NearbyPlaces getNearbyPlaces() {
return nearbyPlaces;
}
public LruCache<String, String> getLruCache() {
return lruCache;
}
} }

View file

@ -0,0 +1,46 @@
package fr.free.nrw.commons.nearby;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config;
import fr.free.nrw.commons.BuildConfig;
import fr.free.nrw.commons.TestCommonsApplication;
import fr.free.nrw.commons.location.LatLng;
import static junit.framework.Assert.assertNotNull;
import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21, application = TestCommonsApplication.class)
public class NearbyActivityTest {
private static final LatLng ST_LOUIS_MO_LAT_LNG = new LatLng(38.627003, -90.199402, 0);
private ActivityController<NearbyActivity> activityController;
private NearbyActivity nearbyActivity;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
TestCommonsApplication application = (TestCommonsApplication) RuntimeEnvironment.application;
when(application.getLocationServiceManager().getLastLocation()).thenReturn(ST_LOUIS_MO_LAT_LNG);
activityController = Robolectric.buildActivity(NearbyActivity.class);
nearbyActivity = activityController.get();
}
@Test
public void activityLaunchesAndShowsList() {
activityController.create().resume().visible();
assertNotNull(nearbyActivity.getSupportFragmentManager().findFragmentByTag("NearbyListFragment"));
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB