Search in sources :

Example 6 with Note

use of it.niedermann.owncloud.notes.persistence.entity.Note in project nextcloud-notes by stefan-niedermann.

the class NotesDaoTest method getRemoteIdAndId.

@Test
public void getRemoteIdAndId() {
    db.getNoteDao().addNote(new Note(815, 4711L, Calendar.getInstance(), "T", "C", "", false, "1", VOID, account.getId(), "", 0));
    db.getNoteDao().addNote(new Note(666, 1234L, Calendar.getInstance(), "T", "C", "", false, "1", LOCAL_EDITED, account.getId(), "", 0));
    db.getNoteDao().addNote(new Note(987, 6969L, Calendar.getInstance(), "T", "C", "", false, "1", LOCAL_DELETED, account.getId(), "", 0));
    final var pair = db.getNoteDao().getRemoteIdAndId(account.getId());
    assertEquals(2, pair.size());
    assertTrue(pair.stream().anyMatch(note -> 815 == note.getId() && Long.valueOf(4711).equals(note.getRemoteId())));
    assertTrue(pair.stream().anyMatch(note -> 666 == note.getId() && Long.valueOf(1234).equals(note.getRemoteId())));
    assertFalse("Result must not contain deleted note", pair.stream().anyMatch(note -> 987 == note.getId()));
    assertFalse("Result must not contain deleted note", pair.stream().anyMatch(note -> Long.valueOf(6969).equals(note.getRemoteId())));
}
Also used : Note(it.niedermann.owncloud.notes.persistence.entity.Note) DBStatus(it.niedermann.owncloud.notes.shared.model.DBStatus) NonNull(androidx.annotation.NonNull) RunWith(org.junit.runner.RunWith) LOCAL_EDITED(it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_EDITED) ApplicationProvider(androidx.test.core.app.ApplicationProvider) CategoryWithNotesCount(it.niedermann.owncloud.notes.persistence.entity.CategoryWithNotesCount) InstantTaskExecutorRule(androidx.arch.core.executor.testing.InstantTaskExecutorRule) Calendar(java.util.Calendar) After(org.junit.After) Before(org.junit.Before) LOCAL_DELETED(it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_DELETED) Capabilities(it.niedermann.owncloud.notes.shared.model.Capabilities) Assert.assertTrue(org.junit.Assert.assertTrue) Test(org.junit.Test) Room(androidx.room.Room) VOID(it.niedermann.owncloud.notes.shared.model.DBStatus.VOID) Assert.assertNotEquals(org.junit.Assert.assertNotEquals) RobolectricTestRunner(org.robolectric.RobolectricTestRunner) List(java.util.List) Rule(org.junit.Rule) Assert.assertNull(org.junit.Assert.assertNull) Assert.assertFalse(org.junit.Assert.assertFalse) SQLiteConstraintException(android.database.sqlite.SQLiteConstraintException) Account(it.niedermann.owncloud.notes.persistence.entity.Account) Assert.assertEquals(org.junit.Assert.assertEquals) Note(it.niedermann.owncloud.notes.persistence.entity.Note) Test(org.junit.Test)

Example 7 with Note

use of it.niedermann.owncloud.notes.persistence.entity.Note in project nextcloud-notes by stefan-niedermann.

the class NotesRepositoryTest method testAddNote.

@Test
public void testAddNote() {
    final var localNote = new Note(null, Calendar.getInstance(), "Fancy Title", "MyContent", "Samples", false, "123");
    localNote.setId(99);
    localNote.setStatus(LOCAL_EDITED);
    final var createdNoteFromLocal = repo.addNote(account.getId(), localNote);
    assertEquals(LOCAL_EDITED, createdNoteFromLocal.getStatus());
    assertEquals("MyContent", createdNoteFromLocal.getExcerpt());
    final var createdNoteFromRemote = repo.addNote(account.getId(), new Note(null, Calendar.getInstance(), "Fancy Title", "MyContent", "Samples", false, "123"));
    assertEquals(VOID, createdNoteFromRemote.getStatus());
    assertEquals("MyContent", createdNoteFromRemote.getExcerpt());
}
Also used : Note(it.niedermann.owncloud.notes.persistence.entity.Note) Test(org.junit.Test)

Example 8 with Note

use of it.niedermann.owncloud.notes.persistence.entity.Note in project nextcloud-notes by stefan-niedermann.

the class NotesRepositoryTest method setupDB.

@Before
public void setupDB() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, IOException {
    final var context = ApplicationProvider.getApplicationContext();
    db = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), NotesDatabase.class).allowMainThreadQueries().build();
    final var constructor = NotesRepository.class.getDeclaredConstructor(Context.class, NotesDatabase.class, ExecutorService.class, ExecutorService.class, ExecutorService.class, ApiProvider.class);
    constructor.setAccessible(true);
    final var executor = MoreExecutors.newDirectExecutorService();
    final var apiProviderSpy = mock(ApiProvider.class);
    final var notesApiSpy = mock(NotesAPI.class);
    repo = constructor.newInstance(context, db, executor, executor, executor, apiProviderSpy);
    doReturn(notesApiSpy).when(apiProviderSpy).getNotesAPI(any(), any(), any());
    when(notesApiSpy.getNotesIDs()).thenReturn(Observable.just(Collections.emptyList()));
    when(notesApiSpy.getNote(anyLong())).thenReturn(Observable.just(ParsedResponse.of(new Note())));
    NotesTestingUtil.mockSingleSignOn(new SingleSignOnAccount("彼得@äöüß.example.com", "彼得", "1337", "https://äöüß.example.com", ""));
    repo.addAccount("https://äöüß.example.com", "彼得", "彼得@äöüß.example.com", new Capabilities(), null, new IResponseCallback<>() {

        @Override
        public void onSuccess(Account result) {
        }

        @Override
        public void onError(@NonNull Throwable t) {
            fail(t.getMessage());
        }
    });
    account = repo.getAccountByName("彼得@äöüß.example.com");
    NotesTestingUtil.mockSingleSignOn(new SingleSignOnAccount("test@example.org", "test", "1337", "https://example.org", ""));
    repo.addAccount("https://example.org", "test", "test@example.org", new Capabilities(), "Herbert", new IResponseCallback<>() {

        @Override
        public void onSuccess(Account result) {
        }

        @Override
        public void onError(@NonNull Throwable t) {
            fail(t.getMessage());
        }
    });
    secondAccount = repo.getAccountByName("test@example.org");
    Arrays.stream(new Note[] { new Note(1, 1001L, Calendar.getInstance(), "美好的一天", "C", "Movies", false, null, VOID, account.getId(), "", 0), new Note(2, null, Calendar.getInstance(), "T", "C", "Movies", false, null, LOCAL_EDITED, account.getId(), "", 0), new Note(3, 1003L, Calendar.getInstance(), "美好的一天", "C", "Movies", false, null, LOCAL_EDITED, account.getId(), "", 0), new Note(4, null, Calendar.getInstance(), "T", "C", "Music", false, null, VOID, account.getId(), "", 0), new Note(5, 1005L, Calendar.getInstance(), "美好的一天", "C", " 兄弟,这真是美好的一天。", false, null, LOCAL_EDITED, account.getId(), "", 0), new Note(6, 1006L, Calendar.getInstance(), "美好的一天", "C", " 兄弟,这真是美好的一天。", false, null, LOCAL_DELETED, account.getId(), "", 0), new Note(7, null, Calendar.getInstance(), "T", "C", "Music", true, null, LOCAL_EDITED, secondAccount.getId(), "", 0), new Note(8, 1008L, Calendar.getInstance(), "美好的一天", "C", "ToDo", true, null, LOCAL_EDITED, secondAccount.getId(), "", 0), new Note(9, 1009L, Calendar.getInstance(), "美好的一天", "C", "ToDo", true, null, LOCAL_DELETED, secondAccount.getId(), "", 0) }).forEach(note -> db.getNoteDao().addNote(note));
}
Also used : SingleSignOnAccount(com.nextcloud.android.sso.model.SingleSignOnAccount) SingleSignOnAccount(com.nextcloud.android.sso.model.SingleSignOnAccount) Account(it.niedermann.owncloud.notes.persistence.entity.Account) Capabilities(it.niedermann.owncloud.notes.shared.model.Capabilities) Note(it.niedermann.owncloud.notes.persistence.entity.Note) Before(org.junit.Before)

Example 9 with Note

use of it.niedermann.owncloud.notes.persistence.entity.Note in project nextcloud-notes by stefan-niedermann.

the class NotesDaoTest method getLocalModifiedNotes.

@Test
public void getLocalModifiedNotes() {
    final var secondAccount = setupSecondAccountAndTestNotes();
    final var accountNotes = db.getNoteDao().getLocalModifiedNotes(account.getId());
    assertEquals(6, accountNotes.size());
    for (Note note : accountNotes) {
        assertNotEquals(VOID, note.getStatus());
    }
    final var secondAccountNotes = db.getNoteDao().getLocalModifiedNotes(secondAccount.getId());
    assertEquals(7, secondAccountNotes.size());
    for (Note note : secondAccountNotes) {
        assertNotEquals(VOID, note.getStatus());
    }
}
Also used : Note(it.niedermann.owncloud.notes.persistence.entity.Note) Test(org.junit.Test)

Example 10 with Note

use of it.niedermann.owncloud.notes.persistence.entity.Note in project nextcloud-notes by stefan-niedermann.

the class NotesDaoTest method updateStatus.

@Test
public void updateStatus() {
    db.getNoteDao().addNote(new Note(1, 1L, Calendar.getInstance(), "T", "C", "", false, "1", LOCAL_DELETED, account.getId(), "", 0));
    db.getNoteDao().updateStatus(1, LOCAL_EDITED);
    assertEquals(LOCAL_EDITED, db.getNoteDao().getNoteById(1).getStatus());
}
Also used : Note(it.niedermann.owncloud.notes.persistence.entity.Note) Test(org.junit.Test)

Aggregations

Note (it.niedermann.owncloud.notes.persistence.entity.Note)21 Test (org.junit.Test)13 Account (it.niedermann.owncloud.notes.persistence.entity.Account)5 Intent (android.content.Intent)3 NonNull (androidx.annotation.NonNull)3 NextcloudFilesAppAccountNotFoundException (com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException)3 Capabilities (it.niedermann.owncloud.notes.shared.model.Capabilities)3 NavigationCategory (it.niedermann.owncloud.notes.shared.model.NavigationCategory)3 Before (org.junit.Before)3 SQLiteConstraintException (android.database.sqlite.SQLiteConstraintException)2 Bundle (android.os.Bundle)2 InstantTaskExecutorRule (androidx.arch.core.executor.testing.InstantTaskExecutorRule)2 Room (androidx.room.Room)2 ApplicationProvider (androidx.test.core.app.ApplicationProvider)2 NextcloudHttpRequestFailedException (com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException)2 TokenMismatchException (com.nextcloud.android.sso.exceptions.TokenMismatchException)2 CategoryWithNotesCount (it.niedermann.owncloud.notes.persistence.entity.CategoryWithNotesCount)2 DBStatus (it.niedermann.owncloud.notes.shared.model.DBStatus)2 LOCAL_DELETED (it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_DELETED)2 LOCAL_EDITED (it.niedermann.owncloud.notes.shared.model.DBStatus.LOCAL_EDITED)2