public Completable once(){ return Completable.create(e -> { final DatabaseReference ref = ref(); ref.addListenerForSingleValueEvent(new FirebaseEventListener().onValue((snapshot, hasValue) -> { if(hasValue) { deserialize((Map<String, Object>) snapshot.getValue()); } e.onComplete(); })); }).subscribeOn(Schedulers.single()); }
public void goOnline() { super.goOnline(); FirebasePaths.firebaseRawRef().child(".info/connected").addListenerForSingleValueEvent(new FirebaseEventListener().onValue((snapshot, hasValue) -> { if (hasValue) { Timber.v("Already online!"); } else { DatabaseReference.goOnline(); } setUserOnline().subscribe(new CrashReportingCompletableObserver(disposableList)); })); }
public void onDataChange(final DataSnapshot topPostsSnapshot) { allUsersRef.addListenerForSingleValueEvent(new ValueEventListener() { public void onDataChange(DataSnapshot allUsersSnapshot) { // Get users and posts as lists Map<String,User> users = allUsersSnapshot.getValue(new GenericTypeIndicator<Map<String, User>>() {}); List<Post> posts = topPostsSnapshot.getValue(new GenericTypeIndicator<List<Post>>() {}); // Send email to all users about the top 5 posts MyEmailer.sendWeeklyEmail(users, posts); } public void onCancelled(DatabaseError databaseError) { System.out.println("WeeklyEmailJob: could not get all users"); System.out.println("WeeklyEmailJob: " + databaseError.getMessage()); } }); }
/** * Get the date when the thread was deleted * @return Single On success return the date or -1 if the thread hasn't been deleted **/ private Single<Long> threadDeletedDate() { return Single.create((SingleOnSubscribe<Long>) e -> { User user = ChatSDK.currentUser(); DatabaseReference currentThreadUser = FirebasePaths.threadRef(model.getEntityID()) .child(FirebasePaths.UsersPath) .child(user.getEntityID()) .child(Keys.Deleted); currentThreadUser.addListenerForSingleValueEvent(new FirebaseEventListener().onValue((snapshot, hasValue) -> { if(hasValue) { e.onSuccess((Long) snapshot.getValue()); } else { e.onSuccess(Long.valueOf(-1)); } })); }).subscribeOn(Schedulers.single()); }
private void verifyDataReferenceAddListenerForSingleValueEvent() { verify(mockDatabaseReference) .addListenerForSingleValueEvent(valueEventListener.capture()); }
@Test public void testMultipleSingleValueEvent() { TestSubscriber<DataSnapshot> testObserver = RxFirebaseDatabase .observeMultipleSingleValueEvent(databaseReference, databaseReferenceTwo) .test(); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(databaseReference).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(dataSnapshot); verify(databaseReferenceTwo).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(dataSnapshotTwo); testObserver.assertNoErrors() .assertValueCount(2) .assertComplete() .dispose(); }
@Test public void testObserveSingleNoData() { DataSnapshot mockFirebaseDataSnapshotNoData = mock(DataSnapshot.class); when(mockFirebaseDataSnapshotNoData.exists()).thenReturn(false); TestObserver<ChildData> testObserver = RxFirebaseDatabase .observeSingleValueEvent(databaseReference, ChildData.class) .test(); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(databaseReference).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(mockFirebaseDataSnapshotNoData); testObserver.assertValueCount(0) .assertComplete() .dispose(); }
@Test public void testObserveSingleWrongType() { TestSubscriber<WrongType> testSubscriber = new TestSubscriber<>(); RxFirebaseDatabase.observeSingleValueEvent(mockDatabase, WrongType.class) .subscribeOn(Schedulers.immediate()) .subscribe(testSubscriber); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(mockDatabase).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(mockFirebaseDataSnapshot); testSubscriber.assertError(RuntimeException.class); testSubscriber.assertNotCompleted(); testSubscriber.unsubscribe(); }
@Test public void testObserveSingleValue_Disconnected() { TestSubscriber<TestData> testSubscriber = new TestSubscriber<>(); RxFirebaseDatabase.observeSingleValueEvent(mockDatabase, TestData.class) .subscribeOn(Schedulers.immediate()) .subscribe(testSubscriber); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(mockDatabase).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onCancelled(DatabaseError.fromCode(DatabaseError.DISCONNECTED)); testSubscriber.assertError(RxFirebaseDataException.class); testSubscriber.assertNotCompleted(); testSubscriber.unsubscribe(); }
@Test public void testObserveSingleWrongType() { TestObserver<WrongType> testObserver = RxFirebaseDatabase .observeSingleValueEvent(databaseReference, WrongType.class) .test(); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(databaseReference).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(dataSnapshot); testObserver.assertError(RuntimeException.class) .assertNotComplete() .dispose(); }
@Test public void testObserveSingleValueDisconnected() { TestObserver<ChildData> testObserver = RxFirebaseDatabase .observeSingleValueEvent(databaseReference, ChildData.class) .test(); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(databaseReference).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onCancelled(DatabaseError.fromCode(DatabaseError.DISCONNECTED)); testObserver.assertError(RxFirebaseDataException.class) .assertNotComplete() .dispose(); }
@Test public void testObserveSingleValue() { TestSubscriber<TestData> testSubscriber = new TestSubscriber<>(); RxFirebaseDatabase.observeSingleValueEvent(mockDatabase, TestData.class) .subscribeOn(Schedulers.immediate()) .subscribe(testSubscriber); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(mockDatabase).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(mockFirebaseDataSnapshot); testSubscriber.assertNoErrors(); testSubscriber.assertValueCount(1); testSubscriber.assertReceivedOnNext(Collections.singletonList(testData)); testSubscriber.assertCompleted(); testSubscriber.unsubscribe(); }
@Test public void testObserveSingleNoData() { DataSnapshot mockFirebaseDataSnapshotNoData = mock(DataSnapshot.class); when(mockFirebaseDataSnapshotNoData.exists()).thenReturn(false); TestSubscriber<TestData> testSubscriber = new TestSubscriber<>(); RxFirebaseDatabase.observeSingleValueEvent(mockDatabase, TestData.class) .subscribeOn(Schedulers.immediate()) .subscribe(testSubscriber); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(mockDatabase).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(mockFirebaseDataSnapshotNoData); testSubscriber.assertNoErrors(); testSubscriber.assertValueCount(1); testSubscriber.assertCompleted(); testSubscriber.unsubscribe(); }
@Test public void testObserveSingleValueEventFailed() { TestObserver<ChildData> testObserver = RxFirebaseDatabase .observeSingleValueEvent(databaseReference, ChildData.class) .test(); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(databaseReference).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onCancelled(DatabaseError.fromCode(DatabaseError.OPERATION_FAILED)); testObserver.assertError(RxFirebaseDataException.class) .assertNotComplete() .dispose(); }
@Test public void testObserveSingleValue() { TestObserver<ChildData> testObserver = RxFirebaseDatabase .observeSingleValueEvent(databaseReference, ChildData.class) .test(); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(databaseReference).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(dataSnapshot); testObserver.assertNoErrors() .assertValueCount(1) .assertValueSet(Collections.singletonList(childData)) .assertComplete() .dispose(); }
@Test public void testObserveValueEventList() { TestObserver<ChildData> testObserver = RxFirebaseDatabase .observeSingleValueEvent(databaseReference, ChildData.class) .test(); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(databaseReference).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(dataSnapshot); testObserver.assertNoErrors() .assertValueCount(1) .assertComplete() .dispose(); }
@Test public void testSingleValueEvent() { TestSubscriber<TestData> testSubscriber = new TestSubscriber<>(); RxFirebaseDatabase.observeSingleValueEvent(mockDatabase, TestData.class) .subscribeOn(Schedulers.immediate()) .subscribe(testSubscriber); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(mockDatabase).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(mockFirebaseDataSnapshot); testSubscriber.assertNoErrors(); testSubscriber.assertValueCount(1); testSubscriber.assertReceivedOnNext(Collections.singletonList(testData)); testSubscriber.assertCompleted(); testSubscriber.unsubscribe(); }
@Test public void testObserveSingleValueEvent_Failed() { TestSubscriber<List<TestData>> testSubscriber = new TestSubscriber<>(); RxFirebaseDatabase.observeSingleValueEvent(mockDatabase, TestData.class) .subscribeOn(Schedulers.immediate()) .toList() .subscribe(testSubscriber); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(mockDatabase).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onCancelled(DatabaseError.fromCode(DatabaseError.OPERATION_FAILED)); testSubscriber.assertError(RxFirebaseDataException.class); testSubscriber.assertNotCompleted(); testSubscriber.unsubscribe(); }
@Test public void testSingleValueEvent() { TestObserver<ChildData> testObserver = RxFirebaseDatabase .observeSingleValueEvent(databaseReference, ChildData.class) .test(); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(databaseReference).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(dataSnapshot); testObserver.assertNoErrors() .assertValueCount(1) .assertValueSet(Collections.singletonList(childData)) .assertComplete() .dispose(); }
@Test public void testObserveValueEventList() { TestSubscriber<List<TestData>> testSubscriber = new TestSubscriber<>(); RxFirebaseDatabase.observeSingleValueEvent(mockDatabase, TestData.class) .subscribeOn(Schedulers.immediate()) .toList() .subscribe(testSubscriber); ArgumentCaptor<ValueEventListener> argument = ArgumentCaptor.forClass(ValueEventListener.class); verify(mockDatabase).addListenerForSingleValueEvent(argument.capture()); argument.getValue().onDataChange(mockFirebaseDataSnapshot); testSubscriber.assertNoErrors(); testSubscriber.assertValueCount(1); testSubscriber.assertReceivedOnNext(Collections.singletonList(testDataList)); testSubscriber.assertCompleted(); testSubscriber.unsubscribe(); }