diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-04-08 21:13:28 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-04-08 21:13:28 +0300 |
commit | 556a48b1ca5ceb9c0ed88a54d1249e863ec180d8 (patch) | |
tree | 4376f725b461339d957d26d8924149d666532797 | |
parent | b497c6b24d612d4d6cdf5e8157da77b9c7af5485 (diff) | |
parent | 25c6c44297e97aeb73ab99ee5d01c6680cd70360 (diff) |
Merge remote-tracking branch 'origin/831-room' into 831-room
-rw-r--r-- | .github/workflows/android.yml | 12 | ||||
-rw-r--r-- | app/build.gradle | 22 | ||||
-rw-r--r-- | app/src/test/java/android/text/TextUtils.java | 0 | ||||
-rw-r--r-- | app/src/test/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragmentTest.java (renamed from app/src/androidTest/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragmentTest.java) | 0 | ||||
-rw-r--r-- | app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDaoTest.java (renamed from app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDaoTest.java) | 54 | ||||
-rw-r--r-- | app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java (renamed from app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java) | 15 | ||||
-rw-r--r-- | app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTestUtil.java (renamed from app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTestUtil.java) | 0 | ||||
-rw-r--r-- | app/src/test/java/it/niedermann/owncloud/notes/persistence/util/NotesColorUtilTest.java (renamed from app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/util/NotesColorUtilTest.java) | 7 | ||||
-rw-r--r-- | app/src/test/java/it/niedermann/owncloud/notes/shared/model/CapabilitiesTest.java (renamed from app/src/androidTest/java/it/niedermann/owncloud/notes/shared/model/CapabilitiesTest.java) | 10 | ||||
-rw-r--r-- | app/src/test/java/it/niedermann/owncloud/notes/shared/util/NoteUtilTest.java (renamed from app/src/androidTest/java/it/niedermann/owncloud/notes/shared/util/NoteUtilTest.java) | 13 |
10 files changed, 79 insertions, 54 deletions
diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 2a257d96..9db26418 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -21,18 +21,6 @@ jobs: - name: Unit tests run: bash ./gradlew test --stacktrace - instrumented: - name: Android instrumented tests - runs-on: macos-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Android instrumented tests - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: 29 - script: ./gradlew connectAndroidTest --stacktrace - codeql: name: CodeQL security scan runs-on: ubuntu-latest diff --git a/app/build.gradle b/app/build.gradle index c1645784..e71bd63f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -63,6 +63,12 @@ android { applicationIdSuffix ".pfungstadt" } } + + testOptions { + unitTests { + includeAndroidResources true + } + } } dependencies { @@ -98,12 +104,16 @@ dependencies { // Testing testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'com.android.support:support-annotations:28.0.0' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation "androidx.arch.core:core-testing:2.1.0" - androidTestImplementation 'androidx.test:runner:1.3.0' - androidTestImplementation 'androidx.test.ext:junit:1.1.2' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + testImplementation 'org.robolectric:robolectric:4.5.1' + testImplementation 'androidx.test:core:1.3.0' + testImplementation 'androidx.test.ext:junit:1.1.2' + testImplementation 'androidx.arch.core:core-testing:2.1.0' +// androidTestImplementation 'com.android.support:support-annotations:28.0.0' +// androidTestImplementation 'com.android.support.test:runner:1.0.2' +// androidTestImplementation "androidx.arch.core:core-testing:2.1.0" +// androidTestImplementation 'androidx.test:runner:1.3.0' +// androidTestImplementation 'androidx.test.ext:junit:1.1.2' +// androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' implementation fileTree(dir: 'libs', include: ['*.jar']) } diff --git a/app/src/test/java/android/text/TextUtils.java b/app/src/test/java/android/text/TextUtils.java deleted file mode 100644 index e69de29b..00000000 --- a/app/src/test/java/android/text/TextUtils.java +++ /dev/null diff --git a/app/src/androidTest/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragmentTest.java b/app/src/test/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragmentTest.java index 95a62cc0..95a62cc0 100644 --- a/app/src/androidTest/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragmentTest.java +++ b/app/src/test/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragmentTest.java diff --git a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDaoTest.java b/app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDaoTest.java index 08b1ad14..8b38c7fd 100644 --- a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDaoTest.java +++ b/app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDaoTest.java @@ -1,12 +1,12 @@ package it.niedermann.owncloud.notes.persistence; import android.database.sqlite.SQLiteConstraintException; +import android.os.Build; import androidx.annotation.NonNull; import androidx.arch.core.executor.testing.InstantTaskExecutorRule; import androidx.room.Room; import androidx.test.core.app.ApplicationProvider; -import androidx.test.ext.junit.runners.AndroidJUnit4; import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException; @@ -15,6 +15,8 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; import java.util.Calendar; import java.util.List; @@ -24,7 +26,6 @@ import it.niedermann.owncloud.notes.persistence.entity.CategoryWithNotesCount; import it.niedermann.owncloud.notes.persistence.entity.Note; import it.niedermann.owncloud.notes.shared.model.Capabilities; -import static it.niedermann.owncloud.notes.persistence.NotesDatabaseTestUtil.getOrAwaitValue; import static it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_DELETED; import static it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_EDITED; import static it.niedermann.owncloud.notes.shared.model.DBStatus.VOID; @@ -34,8 +35,8 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -@SuppressWarnings("ConstantConditions") -@RunWith(AndroidJUnit4.class) +@RunWith(RobolectricTestRunner.class) +@Config(sdk = {Build.VERSION_CODES.P}) public class NotesDaoTest { @Rule @@ -47,8 +48,11 @@ public class NotesDaoTest { @Before public void setupDB() throws NextcloudHttpRequestFailedException { - db = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), NotesDatabase.class).build(); - db.addAccount("https://äöüß.example.com", "彼得", "彼得@äöüß.example.com", new Capabilities("", null)); + db = Room + .inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), NotesDatabase.class) + .allowMainThreadQueries() + .build(); + db.addAccount("https://äöüß.example.com", "彼得", "彼得@äöüß.example.com", new Capabilities("{ocs: {}}", null)); account = db.getAccountDao().getAccountByName("彼得@äöüß.example.com"); } @@ -62,12 +66,12 @@ public class NotesDaoTest { db.getNoteDao().addNote(new Note(1, 1L, Calendar.getInstance(), "T", "C", "", false, "1", LOCAL_DELETED, account.getId(), "", 0)); db.getNoteDao().deleteByNoteId(1, LOCAL_DELETED); assertNull(db.getNoteDao().getNoteById(1)); - assertNull(getOrAwaitValue(db.getNoteDao().getNoteById$(1))); + assertNull(NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().getNoteById$(1))); db.getNoteDao().addNote(new Note(1, 1L, Calendar.getInstance(), "T", "C", "", false, "1", LOCAL_DELETED, account.getId(), "", 0)); db.getNoteDao().deleteByNoteId(1, VOID); assertEquals(1, db.getNoteDao().getNoteById(1).getId()); - assertEquals(1, getOrAwaitValue(db.getNoteDao().getNoteById$(1)).getId()); + assertEquals(1, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().getNoteById$(1)).getId()); } @Test @@ -151,8 +155,8 @@ public class NotesDaoTest { assertEquals(Integer.valueOf(1), db.getNoteDao().countFavorites(account.getId())); assertEquals(Integer.valueOf(1), db.getNoteDao().countFavorites(secondAccount.getId())); - assertEquals(Integer.valueOf(1), getOrAwaitValue(db.getNoteDao().countFavorites$(account.getId()))); - assertEquals(Integer.valueOf(1), getOrAwaitValue(db.getNoteDao().countFavorites$(secondAccount.getId()))); + assertEquals(Integer.valueOf(1), NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().countFavorites$(account.getId()))); + assertEquals(Integer.valueOf(1), NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().countFavorites$(secondAccount.getId()))); } @Test @@ -162,8 +166,8 @@ public class NotesDaoTest { assertEquals(Integer.valueOf(7), db.getNoteDao().count(account.getId())); assertEquals(Integer.valueOf(5), db.getNoteDao().count(secondAccount.getId())); - assertEquals(Integer.valueOf(7), getOrAwaitValue(db.getNoteDao().count$(account.getId()))); - assertEquals(Integer.valueOf(5), getOrAwaitValue(db.getNoteDao().count$(secondAccount.getId()))); + assertEquals(Integer.valueOf(7), NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().count$(account.getId()))); + assertEquals(Integer.valueOf(5), NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().count$(secondAccount.getId()))); } @Test @@ -338,16 +342,16 @@ public class NotesDaoTest { final Note note = new Note(1, 1L, Calendar.getInstance(), "My-Title", "My-Content", "", false, "1", LOCAL_DELETED, account.getId(), "", 0); db.getNoteDao().addNote(note); assertEquals("My-Content", db.getNoteDao().getContent(note.getId())); - assertEquals("My-Content", getOrAwaitValue(db.getNoteDao().getContent$(note.getId()))); + assertEquals("My-Content", NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().getContent$(note.getId()))); assertNull(db.getNoteDao().getContent(note.getId() + 1)); - assertNull(getOrAwaitValue(db.getNoteDao().getContent$(note.getId() + 1))); + assertNull(NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().getContent$(note.getId() + 1))); } @Test public void getCategoriesLiveData() throws InterruptedException, NextcloudHttpRequestFailedException { final Account secondAccount = setupSecondAccountAndTestNotes(); - final List<CategoryWithNotesCount> accountCategories = getOrAwaitValue(db.getNoteDao().getCategories$(account.getId())); + final List<CategoryWithNotesCount> accountCategories = NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().getCategories$(account.getId())); assertEquals(4, accountCategories.size()); for (CategoryWithNotesCount category : accountCategories) { assertEquals(account.getId(), category.getAccountId()); @@ -358,7 +362,7 @@ public class NotesDaoTest { assertTrue(accountCategories.stream().anyMatch(cat -> "ToDo".equals(cat.getCategory()) && Integer.valueOf(1).equals(cat.getTotalNotes()))); assertTrue(accountCategories.stream().anyMatch(cat -> "日记".equals(cat.getCategory()) && Integer.valueOf(1).equals(cat.getTotalNotes()))); - final List<CategoryWithNotesCount> secondAccountCategories = getOrAwaitValue(db.getNoteDao().getCategories$(secondAccount.getId())); + final List<CategoryWithNotesCount> secondAccountCategories = NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().getCategories$(secondAccount.getId())); assertEquals(2, secondAccountCategories.size()); for (CategoryWithNotesCount category : secondAccountCategories) { assertEquals(secondAccount.getId(), category.getAccountId()); @@ -373,18 +377,18 @@ public class NotesDaoTest { public void searchCategories() throws InterruptedException, NextcloudHttpRequestFailedException { final Account secondAccount = setupSecondAccountAndTestNotes(); - assertEquals(2, getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "M%")).size()); - assertEquals(1, getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "Mo%")).size()); - assertEquals(1, getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "MO%")).size()); - assertEquals(1, getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "movie%")).size()); - assertEquals(1, getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "T%")).size()); - assertEquals(1, getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "日记")).size()); - assertEquals(2, getOrAwaitValue(db.getNoteDao().searchCategories$(secondAccount.getId(), "M%")).size()); - assertEquals(0, getOrAwaitValue(db.getNoteDao().searchCategories$(secondAccount.getId(), "T%")).size()); + assertEquals(2, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "M%")).size()); + assertEquals(1, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "Mo%")).size()); + assertEquals(1, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "MO%")).size()); + assertEquals(1, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "movie%")).size()); + assertEquals(1, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "T%")).size()); + assertEquals(1, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().searchCategories$(account.getId(), "日记")).size()); + assertEquals(2, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().searchCategories$(secondAccount.getId(), "M%")).size()); + assertEquals(0, NotesDatabaseTestUtil.getOrAwaitValue(db.getNoteDao().searchCategories$(secondAccount.getId(), "T%")).size()); } private Account setupSecondAccount() throws NextcloudHttpRequestFailedException { - db.addAccount("https://example.org", "test", "test@example.org", new Capabilities("", null)); + db.addAccount("https://example.org", "test", "test@example.org", new Capabilities("{ocs: {}}", null)); return db.getAccountDao().getAccountByName("test@example.org"); } diff --git a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java b/app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java index 56f6841d..1178646c 100644 --- a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java +++ b/app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTest.java @@ -1,12 +1,12 @@ package it.niedermann.owncloud.notes.persistence; import android.content.Context; +import android.os.Build; import androidx.annotation.NonNull; import androidx.arch.core.executor.testing.InstantTaskExecutorRule; import androidx.room.Room; import androidx.test.core.app.ApplicationProvider; -import androidx.test.ext.junit.runners.AndroidJUnit4; import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException; @@ -14,6 +14,8 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; import java.util.Calendar; import java.util.List; @@ -27,9 +29,9 @@ import static it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_DELETED; import static it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_EDITED; import static it.niedermann.owncloud.notes.shared.model.DBStatus.VOID; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -@RunWith(AndroidJUnit4.class) +@RunWith(RobolectricTestRunner.class) +@Config(sdk = {Build.VERSION_CODES.P}) public class NotesDatabaseTest { @Rule @@ -44,12 +46,15 @@ public class NotesDatabaseTest { @Before public void setupDB() throws NextcloudHttpRequestFailedException { context = ApplicationProvider.getApplicationContext(); - db = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), NotesDatabase.class).build(); + db = Room + .inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), NotesDatabase.class) + .allowMainThreadQueries() + .build(); db.addAccount("https://äöüß.example.com", "彼得", "彼得@äöüß.example.com", new Capabilities("{\"ocs\":{\"meta\":{\"status\":\"ok\",\"statuscode\":200,\"message\":\"OK\"},\"data\":{\"version\":{\"major\":18,\"minor\":0,\"micro\":4,\"string\":\"18.0.4\",\"edition\":\"\",\"extendedSupport\":false},\"capabilities\":{\"core\":{\"pollinterval\":60,\"webdav-root\":\"remote.php\\/webdav\"},\"bruteforce\":{\"delay\":0},\"files\":{\"bigfilechunking\":true,\"blacklisted_files\":[\".htaccess\"],\"directEditing\":{\"url\":\"https:\\/\\/efss.qloud.my\\/ocs\\/v2.php\\/apps\\/files\\/api\\/v1\\/directEditing\",\"etag\":\"ed2b141af2a39b0e42666952ba60988d\"},\"versioning\":true,\"undelete\":true},\"activity\":{\"apiv2\":[\"filters\",\"filters-api\",\"previews\",\"rich-strings\"]},\"ocm\":{\"enabled\":true,\"apiVersion\":\"1.0-proposal1\",\"endPoint\":\"https:\\/\\/efss.qloud.my\\/index.php\\/ocm\",\"resourceTypes\":[{\"name\":\"file\",\"shareTypes\":[\"user\",\"group\"],\"protocols\":{\"webdav\":\"\\/public.php\\/webdav\\/\"}}]},\"deck\":{\"version\":\"0.8.2\"},\"richdocuments\":{\"mimetypes\":[\"application\\/vnd.oasis.opendocument.text\",\"application\\/vnd.oasis.opendocument.spreadsheet\",\"application\\/vnd.oasis.opendocument.graphics\",\"application\\/vnd.oasis.opendocument.presentation\",\"application\\/vnd.lotus-wordpro\",\"application\\/vnd.visio\",\"application\\/vnd.wordperfect\",\"application\\/msonenote\",\"application\\/msword\",\"application\\/rtf\",\"text\\/rtf\",\"application\\/vnd.openxmlformats-officedocument.wordprocessingml.document\",\"application\\/vnd.openxmlformats-officedocument.wordprocessingml.template\",\"application\\/vnd.ms-word.document.macroEnabled.12\",\"application\\/vnd.ms-word.template.macroEnabled.12\",\"application\\/vnd.ms-excel\",\"application\\/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\"application\\/vnd.openxmlformats-officedocument.spreadsheetml.template\",\"application\\/vnd.ms-excel.sheet.macroEnabled.12\",\"application\\/vnd.ms-excel.template.macroEnabled.12\",\"application\\/vnd.ms-excel.addin.macroEnabled.12\",\"application\\/vnd.ms-excel.sheet.binary.macroEnabled.12\",\"application\\/vnd.ms-powerpoint\",\"application\\/vnd.openxmlformats-officedocument.presentationml.presentation\",\"application\\/vnd.openxmlformats-officedocument.presentationml.template\",\"application\\/vnd.openxmlformats-officedocument.presentationml.slideshow\",\"application\\/vnd.ms-powerpoint.addin.macroEnabled.12\",\"application\\/vnd.ms-powerpoint.presentation.macroEnabled.12\",\"application\\/vnd.ms-powerpoint.template.macroEnabled.12\",\"application\\/vnd.ms-powerpoint.slideshow.macroEnabled.12\",\"text\\/csv\"],\"mimetypesNoDefaultOpen\":[\"image\\/svg+xml\",\"application\\/pdf\",\"text\\/plain\",\"text\\/spreadsheet\"],\"collabora\":[],\"direct_editing\":false,\"templates\":false,\"productName\":\"\\u5728\\u7ebf\\u534f\\u4f5c\"},\"dav\":{\"chunking\":\"1.0\"},\"files_sharing\":{\"api_enabled\":true,\"public\":{\"enabled\":true,\"password\":{\"enforced\":true,\"askForOptionalPassword\":false},\"expire_date\":{\"enabled\":true,\"days\":\"7\",\"enforced\":false},\"multiple_links\":true,\"expire_date_internal\":{\"enabled\":false},\"send_mail\":false,\"upload\":true,\"upload_files_drop\":true},\"resharing\":true,\"user\":{\"send_mail\":false,\"expire_date\":{\"enabled\":true}},\"group_sharing\":true,\"group\":{\"enabled\":true,\"expire_date\":{\"enabled\":true}},\"default_permissions\":31,\"federation\":{\"outgoing\":false,\"incoming\":false,\"expire_date\":{\"enabled\":true}},\"sharee\":{\"query_lookup_default\":false},\"sharebymail\":{\"enabled\":true,\"upload_files_drop\":{\"enabled\":true},\"password\":{\"enabled\":true},\"expire_date\":{\"enabled\":true}}},\"external\":{\"v1\":[\"sites\",\"device\",\"groups\",\"redirect\"]},\"notifications\":{\"ocs-endpoints\":[\"list\",\"get\",\"delete\",\"delete-all\",\"icons\",\"rich-strings\",\"action-web\"],\"push\":[\"devices\",\"object-data\",\"delete\"],\"admin-notifications\":[\"ocs\",\"cli\"]},\"password_policy\":{\"minLength\":8,\"enforceNonCommonPassword\":true,\"enforceNumericCharacters\":false,\"enforceSpecialCharacters\":false,\"enforceUpperLowerCase\":false,\"api\":{\"generate\":\"https:\\/\\/efss.qloud.my\\/ocs\\/v2.php\\/apps\\/password_policy\\/api\\/v1\\/generate\",\"validate\":\"https:\\/\\/efss.qloud.my\\/ocs\\/v2.php\\/apps\\/password_policy\\/api\\/v1\\/validate\"}},\"theming\":{\"name\":\"QloudData\",\"url\":\"https:\\/\\/www.qloud.my\\/qloud-data\\/\",\"slogan\":\"Powered by NextCloud\",\"color\":\"#1E4164\",\"color-text\":\"#ffffff\",\"color-element\":\"#1E4164\",\"logo\":\"https:\\/\\/efss.qloud.my\\/index.php\\/apps\\/theming\\/image\\/logo?useSvg=1&v=47\",\"background\":\"https:\\/\\/efss.qloud.my\\/core\\/img\\/background.png?v=47\",\"background-plain\":false,\"background-default\":true,\"logoheader\":\"https:\\/\\/efss.qloud.my\\/index.php\\/apps\\/theming\\/image\\/logo?useSvg=1&v=47\",\"favicon\":\"https:\\/\\/efss.qloud.my\\/index.php\\/apps\\/theming\\/image\\/logo?useSvg=1&v=47\"},\"registration\":{\"enabled\":true,\"apiRoot\":\"\\/ocs\\/v2.php\\/apps\\/registration\\/api\\/v1\\/\",\"apiLevel\":\"v1\"}}}}}", null)); account = db.getAccountDao().getAccountByName("彼得@äöüß.example.com"); - db.addAccount("https://example.org", "test", "test@example.org", new Capabilities("", null)); + db.addAccount("https://example.org", "test", "test@example.org", new Capabilities("{ocs: {}}", null)); secondAccount = db.getAccountDao().getAccountByName("test@example.org"); List.of( diff --git a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTestUtil.java b/app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTestUtil.java index 26ec47c3..26ec47c3 100644 --- a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTestUtil.java +++ b/app/src/test/java/it/niedermann/owncloud/notes/persistence/NotesDatabaseTestUtil.java diff --git a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/util/NotesColorUtilTest.java b/app/src/test/java/it/niedermann/owncloud/notes/persistence/util/NotesColorUtilTest.java index 324bc37d..8645370c 100644 --- a/app/src/androidTest/java/it/niedermann/owncloud/notes/persistence/util/NotesColorUtilTest.java +++ b/app/src/test/java/it/niedermann/owncloud/notes/persistence/util/NotesColorUtilTest.java @@ -1,12 +1,14 @@ package it.niedermann.owncloud.notes.persistence.util; import android.graphics.Color; +import android.os.Build; import androidx.core.util.Pair; -import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; import java.util.ArrayList; import java.util.List; @@ -16,7 +18,8 @@ import it.niedermann.owncloud.notes.shared.util.NotesColorUtil; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -@RunWith(AndroidJUnit4.class) +@RunWith(RobolectricTestRunner.class) +@Config(sdk = {Build.VERSION_CODES.P}) public class NotesColorUtilTest { @Test public void testContrastRatioIsSufficient() { diff --git a/app/src/androidTest/java/it/niedermann/owncloud/notes/shared/model/CapabilitiesTest.java b/app/src/test/java/it/niedermann/owncloud/notes/shared/model/CapabilitiesTest.java index 8b57e108..6415bb39 100644 --- a/app/src/androidTest/java/it/niedermann/owncloud/notes/shared/model/CapabilitiesTest.java +++ b/app/src/test/java/it/niedermann/owncloud/notes/shared/model/CapabilitiesTest.java @@ -1,18 +1,20 @@ package it.niedermann.owncloud.notes.shared.model; import android.graphics.Color; - -import androidx.test.ext.junit.runners.AndroidJUnit4; +import android.os.Build; import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; -@RunWith(AndroidJUnit4.class) +@RunWith(RobolectricTestRunner.class) +@Config(sdk = {Build.VERSION_CODES.P}) public class CapabilitiesTest { @Test @@ -90,7 +92,7 @@ public class CapabilitiesTest { @Test public void etagShouldAlwaysBeStored() throws NextcloudHttpRequestFailedException { - final Capabilities capabilities = new Capabilities("", "ed38bf28-e429-4231-84be-35d166acfb6d "); + final Capabilities capabilities = new Capabilities("{ocs: {}}", "ed38bf28-e429-4231-84be-35d166acfb6d "); assertEquals("ed38bf28-e429-4231-84be-35d166acfb6d ", capabilities.getETag()); } diff --git a/app/src/androidTest/java/it/niedermann/owncloud/notes/shared/util/NoteUtilTest.java b/app/src/test/java/it/niedermann/owncloud/notes/shared/util/NoteUtilTest.java index baa58536..a0e1f9c0 100644 --- a/app/src/androidTest/java/it/niedermann/owncloud/notes/shared/util/NoteUtilTest.java +++ b/app/src/test/java/it/niedermann/owncloud/notes/shared/util/NoteUtilTest.java @@ -1,13 +1,23 @@ package it.niedermann.owncloud.notes.shared.util; +import android.os.Build; + import junit.framework.TestCase; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; + /** * Tests the NoteUtil * Created by stefan on 06.10.15. */ +@RunWith(RobolectricTestRunner.class) +@Config(sdk = {Build.VERSION_CODES.P}) public class NoteUtilTest extends TestCase { + @Test public void testIsEmptyLine() { assertTrue(NoteUtil.isEmptyLine(" ")); assertTrue(NoteUtil.isEmptyLine("\n")); @@ -17,6 +27,7 @@ public class NoteUtilTest extends TestCase { assertFalse(NoteUtil.isEmptyLine("a \n ")); } + @Test public void testGetLineWithoutMarkdown() { assertEquals("Test", NoteUtil.getLineWithoutMarkdown("Test", 0)); assertEquals("Test", NoteUtil.getLineWithoutMarkdown("\nTest", 0)); @@ -24,6 +35,7 @@ public class NoteUtilTest extends TestCase { assertEquals("Bar", NoteUtil.getLineWithoutMarkdown("Foo\nBar", 1)); } + @Test public void testGenerateNoteTitle() { assertEquals("Test", NoteUtil.generateNoteTitle("Test")); assertEquals("Test", NoteUtil.generateNoteTitle("Test\n")); @@ -32,6 +44,7 @@ public class NoteUtilTest extends TestCase { assertEquals("Test", NoteUtil.generateNoteTitle("\n\nTest")); } + @Test public void testGenerateNoteExcerpt() { // title is different from content → return max. 200 characters starting with the first line which is not empty assertEquals("Test", NoteUtil.generateNoteExcerpt("Test", "Title")); |