diff --git a/CHANGELOG.md b/CHANGELOG.md index 1de06a4e3..f0f5ac6d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ # 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 link to Commons policies in ShareActivity - Various string fixes diff --git a/app/build.gradle b/app/build.gradle index 540c17b42..7cc5fc676 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -58,6 +58,7 @@ dependencies { testImplementation 'junit:junit:4.12' testImplementation 'org.robolectric:robolectric:3.4' + testImplementation 'org.mockito:mockito-all:1.10.19' testImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1' androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.8.1' @@ -82,9 +83,11 @@ android { defaultConfig { applicationId 'fr.free.nrw.commons' - versionCode 74 - versionName '2.5.0' + + versionCode 76 + versionName '2.6.1' setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName()) + minSdkVersion project.minSdkVersion targetSdkVersion project.targetSdkVersion 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 configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:25.2.0' + exclude module: 'httpclient' + exclude module: 'commons-logging' } buildToolsVersion buildToolsVersion } diff --git a/app/src/androidTest/java/fr/free/nrw/commons/NearbyActivityTest.java b/app/src/androidTest/java/fr/free/nrw/commons/NearbyActivityTest.java deleted file mode 100644 index f9ec72569..000000000 --- a/app/src/androidTest/java/fr/free/nrw/commons/NearbyActivityTest.java +++ /dev/null @@ -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 nearby = - new ActivityTestRule<>(NearbyActivity.class); - - @Test - public void testActivityLaunch() { - onView(withText(R.string.title_activity_nearby)) - .check(ViewAssertions.matches(isDisplayed())); - } -} diff --git a/app/src/androidTest/java/fr/free/nrw/commons/upload/FileUtilsTest.java b/app/src/androidTest/java/fr/free/nrw/commons/upload/FileUtilsTest.java new file mode 100644 index 000000000..9ca8c67a9 --- /dev/null +++ b/app/src/androidTest/java/fr/free/nrw/commons/upload/FileUtilsTest.java @@ -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)); + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 28cd9820b..3997cc7b2 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -333,7 +333,7 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); Fragment fragment = new NearbyMapFragment(); fragment.setArguments(bundle); - fragmentTransaction.replace(R.id.container, fragment); + fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getSimpleName()); fragmentTransaction.commitAllowingStateLoss(); } @@ -344,7 +344,7 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); Fragment fragment = new NearbyListFragment(); fragment.setArguments(bundle); - fragmentTransaction.replace(R.id.container, fragment); + fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getSimpleName()); fragmentTransaction.commitAllowingStateLoss(); } diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 4aaa0bcba..1ea21ab75 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -201,4 +201,6 @@ লগ ফাইল পাঠান ইমেইলের মাধ্যমে উন্নয়নকারীর কাছে লগ ফাইল পাঠান আপনার অ্যাকাউন্টে প্রবেশ করুন + অবস্থান পরিবর্তন হয়নি। + অবস্থান বোধগম্য নয়। diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 49b2e9d2c..0c6f86597 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -201,4 +201,6 @@ Send logfil Send logfil til udviklerne via e-post Log ind på din konto + Sted er ikke ændret. + Sted ikke tilgængeligt. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0147104d0..37f9ad097 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -201,4 +201,6 @@ Logdatei senden Logdatei an die Entwickler per E-Mail senden Bei deinem Benutzerkonto anmelden + Der Standort hat sich nicht geändert. + Der Standort ist nicht verfügbar. diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index d802b28bd..5bad13094 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -201,4 +201,6 @@ Enviar archivo de registro Enviar archivo de registro a los desarrolladores por correo electrónico Accede a tu cuenta + La ubicación no ha cambiado. + La ubicación no está disponible. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 209478949..1fcd4cbeb 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -201,4 +201,6 @@ Envoyer le journal Envoyer le journal aux développeurs par courriel Connectez-vous à votre compte + L\'emplacement n\'a pas changé. + Emplacement non disponible. diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 1c2063f2c..8dd2411a1 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -201,4 +201,6 @@ Enviar ficheiro de rexistro Enviar ficheiro de rexistro ós desenvolvedores por correo electrónico Comezar sesión na súa conta + A localización non cambiou. + A localización non está dispoñible. diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 721ed066a..a571ba193 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -11,9 +11,9 @@ Sikeres bejelentkezés A bejelentkezés nem sikerült. A fájl nem található. Próbálkozz másik fájllal. - Sikertelen azonosítás. - Feltöltés indul. - %1$s feltöltve! + Sikertelen hitelesítés. + Feltöltés elindult. + %1$s feltöltve. Feltöltés megtekintése Feltöltés indul: %1$s %1$s feltöltése @@ -105,7 +105,7 @@ CC BY-SA 3.0 (Észtország) CC BY-SA 3.0 (Spanyolország) CC BY-SA 3.0 (Horvátország) - CC BY-SA 3.0 (Luxembourg) + CC BY-SA 3.0 (Luxemburg) CC BY-SA 3.0 (Hollandia) CC BY-SA 3.0 (Norvégia) CC BY-SA 3.0 (Lengyelország) @@ -190,9 +190,15 @@ nincs leírás Commons leírólap Wikidata-elem + Hiba a képek gyorsítótárazásakor 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. 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á. Engedély adása Külső tárhely használata + Az alkalmazáson belüli kamerával készült képek mentése az eszközre + Naplófájlok küldése + Naplófájlok küldése e-mailben a fejlesztőknek Bejelentkezés a fiókodba + A hely nem változott. + A hely nem érhető el. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 464461aa3..a19e95b57 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -167,4 +167,6 @@ Pagina di Commons del file Elemento Wikidata Accedi alla tua utenza + La posizione non è cambiata. + Posizione non disponibile. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 08e243703..1750cfc03 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -168,4 +168,5 @@ 説明がありません ウィキデータ項目 外部ストレージを使用 + 位置が無効です。 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index cc2794d5f..7bd28c56d 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -198,4 +198,6 @@ 로그 파일 보내기 이메일로 개발자에게 로그 파일 보내기 자신의 계정으로 로그인 + 위치가 변경되지 않았습니다. + 위치를 사용할 수 없습니다. diff --git a/app/src/main/res/values-lb/strings.xml b/app/src/main/res/values-lb/strings.xml index 1937a880e..b4895cf95 100644 --- a/app/src/main/res/values-lb/strings.xml +++ b/app/src/main/res/values-lb/strings.xml @@ -191,4 +191,6 @@ Log-Fichier schécken Log-Fichier per E-Mail un d\'Entwéckler schécken An Äre Benotzerkont aloggen + De Plaz huet net geännert. + Plaz ass net disponibel. diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 000d94051..f17d4a59f 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -17,7 +17,7 @@ Допрете за да го погледате подигањето Почнувам со подигањето на „%1$s“ Подигање на „%1$s“ - Заврпувам со подигање на „%1$s“ + Завршувам со подигање на „%1$s“ Подигањето на „%1$s“ не успеа Допрете за да погледате @@ -73,7 +73,7 @@ Нагодувања Регистрација За извршникот - Прилогот на Ризницата има отворен код. Негови творци и оддржувачи се примателите на наменските средства од Викимедиината заедница како и членовите на заедницата. Фондацијата Викимедија нема учество во нејзиното создавање, разработка и одржување. + Прилогот на Ризницата има отворен код. Негови творци и одржувачи се примателите на наменските средства од Викимедиината заедница како и членовите на заедницата. Фондацијата Викимедија нема учество во нејзиното создавање, разработка и одржување. <a href=\"https://github.com/commons-app/apps-android-commons\">Извор</a> и <a href=\"https://commons-app.github.io/\">мреж. место</a> на GitHub</a>. Создајте нов <a href=\"https://github.com/commons-app/apps-android-commons/issues\">случај на GitHub</a> за пријавување грешки и давање предлози. <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Заштита на личните податоци</a> <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Заслуги</a> @@ -201,4 +201,6 @@ Испрати дневничка податотека Испрати дневничка податотека на разработувачите по е-пошта Најавете се со вашата сметка + Местоположбата не е сменета. + Местоположбата е недостапна. diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 1c7bcc54a..c7a37357e 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -201,4 +201,6 @@ Send loggfil Send loggfil til utviklerne via epost Logg inn med kontoen din + Stedet har ikke blitt endret. + Sted ikke tilgjengelig. diff --git a/app/src/main/res/values-pms/strings.xml b/app/src/main/res/values-pms/strings.xml index 890f688e8..729e92794 100644 --- a/app/src/main/res/values-pms/strings.xml +++ b/app/src/main/res/values-pms/strings.xml @@ -201,4 +201,6 @@ Mandé l\'archivi d\'argistr Mandé l\'archivi d\'argistr ai dësvlupator për pòsta eletrònica Ch\'as colega a sò cont + Ël leu a l\'é nen cangià. + Leu nen disponìbil. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 02d794372..07a9a758b 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -201,4 +201,6 @@ Enviar arquivo de registro Enviar arquivo de log para desenvolvedores por e-mail Faça login na sua conta + O local não mudou. + Localização não disponível. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index d5e906937..8ae8ec263 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -10,6 +10,7 @@ Aguarde, por favor… Inicio de sessão bem sucedido O início de sessão falhou! + Ficheiro não encontrado. Por favor, tente outro ficheiro. Falha de autenticação! Iniciado o carregamento! %1$s enviado! @@ -19,11 +20,11 @@ A terminar o carregamento de %1$s O carregamento de %1$s falhou Toque para ver - - A carregar um ficheiro - A carregar %d ficheiros + + %d a carregar um ficheiro + a carregar %d ficheiros - Meus carregamentos + Meus carregamentos recentes Em espera Falhou %1$d%% concluído @@ -39,8 +40,9 @@ Não foi possível iniciar sessão - falha de rede Não foi possível iniciar sessão - verifique o seu nome de utilizador(a) Não foi possível iniciar sessão - verifique a sua palavra-passe - Demasiadas tentativas mal sucedidas. Por favor, tente de novo dentro de alguns minutos + Demasiadas tentativas malsucedidas. Por favor, tente de novo dentro de alguns minutos. Desculpe, este utilizador foi bloqueado no Commons + Precisa fornecer o seu código de ativação de dois fatores. Falha ao iniciar sessão Carregar Nomeie este conjunto @@ -48,9 +50,13 @@ Enviar Pesquisar categorias Gravar - - Sem carregamentos ainda - 1 carregamento + Atualizar + O GPS está desativado no seu dispositivo. Gostarias de ativá-lo? + Ativar GPS + Ainda não foram enviados ficheiros + + \@string/contributions_subtitle_zero + %d carregamento %d carregamentos @@ -65,12 +71,14 @@ 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 Categorias Configurações + Registar-se Sobre Software em código aberto distribuído sob <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Apache License v2</a>. 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. Código no <a href=\"https://github.com/commons-app/android-commons\">GitHub</a>. Erros no <a href=\" https://github.com/commons-app/apps-android-commons/issues\">Github</a>. <a href=\"https://wikimediafoundation.org/wiki/Privacy_policy\">Política de privacidade</a> Sobre Enviar comentários (por e-mail) + Não foi instalado nenhum cliente de correio eletrónico Categorias usadas recentemente A aguardar pela primeira sincronização… Não carregou ainda nenhuma foto. @@ -118,4 +126,12 @@ Locais Próximos Sim Não + Título + Título do ficheiro multimédia + Descrição + Data de carregamento + Licença + Coordenadas + Não fornecido + Utilizar o Wikidata diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 918c760b7..2cb4df27c 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -205,4 +205,6 @@ Выслать лог-файл Выслать лог-файл разработчикам по е-мейлу Войдите в свою учётную запись + Местоположение не изменено. + Местоположение недоступно. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index a77c2ade6..2d6c8e864 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -201,4 +201,6 @@ Skicka loggfil Skicka loggfilen till utvecklarna via e-post Logga in på ditt konto + Platsen har inte ändrats. + Platsen är inte tillgänglig. diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0d2d5a958..4e17c0fbf 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -201,4 +201,6 @@ 寄送日誌檔案 經由電子郵件寄送日誌檔案給開發人員 登入您的帳號 + 位置無法更改。 + 位置無效。 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 01b8c4511..984f3e688 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -201,4 +201,6 @@ 发送日志文件 通过电子邮件将日志文件发送给开发人员 登录您的账户 + 位置没有更新。 + 位置不可用。 diff --git a/app/src/test/java/fr/free/nrw/commons/TestCommonsApplication.java b/app/src/test/java/fr/free/nrw/commons/TestCommonsApplication.java index af4d50a91..d6c35ab02 100644 --- a/app/src/test/java/fr/free/nrw/commons/TestCommonsApplication.java +++ b/app/src/test/java/fr/free/nrw/commons/TestCommonsApplication.java @@ -1,12 +1,182 @@ package fr.free.nrw.commons; +import android.content.SharedPreferences; +import android.support.v4.util.LruCache; + 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 { + + 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 lruCache; + + @Override + public void onCreate() { + MockitoAnnotations.initMocks(this); + super.onCreate(); + } + @Override protected RefWatcher setupLeakCanary() { // No leakcanary in unit tests. 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 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 getLruCache() { + return lruCache; + } } diff --git a/app/src/test/java/fr/free/nrw/commons/nearby/NearbyActivityTest.java b/app/src/test/java/fr/free/nrw/commons/nearby/NearbyActivityTest.java new file mode 100644 index 000000000..1255df1c3 --- /dev/null +++ b/app/src/test/java/fr/free/nrw/commons/nearby/NearbyActivityTest.java @@ -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 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")); + } + +} \ No newline at end of file diff --git a/design/screenshots/Chinese (Traditional) zh-TW/car-categories.png b/design/screenshots/Chinese (Traditional) zh-TW/car-categories.png new file mode 100644 index 000000000..ac7e15836 Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/car-categories.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/car-description.png b/design/screenshots/Chinese (Traditional) zh-TW/car-description.png new file mode 100644 index 000000000..b87788e7e Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/car-description.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/car-details.png b/design/screenshots/Chinese (Traditional) zh-TW/car-details.png new file mode 100644 index 000000000..d0522d129 Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/car-details.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/drawer.png b/design/screenshots/Chinese (Traditional) zh-TW/drawer.png new file mode 100644 index 000000000..df757a5f8 Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/drawer.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/gallery.png b/design/screenshots/Chinese (Traditional) zh-TW/gallery.png new file mode 100644 index 000000000..1052557c2 Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/gallery.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/nearby-list.png b/design/screenshots/Chinese (Traditional) zh-TW/nearby-list.png new file mode 100644 index 000000000..9dbf7697d Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/nearby-list.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/nearby-map.png b/design/screenshots/Chinese (Traditional) zh-TW/nearby-map.png new file mode 100644 index 000000000..0bce625bf Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/nearby-map.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/restaurant-categories.png b/design/screenshots/Chinese (Traditional) zh-TW/restaurant-categories.png new file mode 100644 index 000000000..bc1edfdbb Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/restaurant-categories.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/restaurant-description.png b/design/screenshots/Chinese (Traditional) zh-TW/restaurant-description.png new file mode 100644 index 000000000..aab0ee1a2 Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/restaurant-description.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/restaurant-details.png b/design/screenshots/Chinese (Traditional) zh-TW/restaurant-details.png new file mode 100644 index 000000000..ca0f1811e Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/restaurant-details.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/school-categories.png b/design/screenshots/Chinese (Traditional) zh-TW/school-categories.png new file mode 100644 index 000000000..0546ff5f4 Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/school-categories.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/school-description.png b/design/screenshots/Chinese (Traditional) zh-TW/school-description.png new file mode 100644 index 000000000..945f00e19 Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/school-description.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/school-details.png b/design/screenshots/Chinese (Traditional) zh-TW/school-details.png new file mode 100644 index 000000000..84430f21d Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/school-details.png differ diff --git a/design/screenshots/Chinese (Traditional) zh-TW/taking-picture.png b/design/screenshots/Chinese (Traditional) zh-TW/taking-picture.png new file mode 100644 index 000000000..0c4445f5f Binary files /dev/null and b/design/screenshots/Chinese (Traditional) zh-TW/taking-picture.png differ