Skip to content

Commit ac5c849

Browse files
SUPERCILEXsamtstern
authored andcommitted
The Big Kahuna of firebase-ui-database (#544)
1 parent ab778be commit ac5c849

21 files changed

+1115
-551
lines changed

app/src/main/java/com/firebase/uidemo/database/ChatActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public void populateViewHolder(ChatHolder holder, Chat chat, int position) {
148148
}
149149

150150
@Override
151-
protected void onDataChanged() {
151+
public void onDataChanged() {
152152
// If there are no chat messages, show a view that invites the user to add a message.
153153
mEmptyListMessage.setVisibility(mAdapter.getItemCount() == 0 ? View.VISIBLE : View.GONE);
154154
}

database/src/androidTest/java/com/firebase/ui/database/Bean.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,16 @@ public String getText() {
3030
public boolean isBool() {
3131
return mBool;
3232
}
33+
34+
public void setNumber(int number) {
35+
mNumber = number;
36+
}
37+
38+
public void setText(String text) {
39+
mText = text;
40+
}
41+
42+
public void setBool(boolean bool) {
43+
mBool = bool;
44+
}
3345
}

database/src/androidTest/java/com/firebase/ui/database/FirebaseArrayOfObjectsTest.java

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@
2929
import java.util.concurrent.Callable;
3030

3131
import static com.firebase.ui.database.TestUtils.getAppInstance;
32-
import static com.firebase.ui.database.TestUtils.getBean;
3332
import static com.firebase.ui.database.TestUtils.runAndWaitUntil;
3433

3534
@RunWith(AndroidJUnit4.class)
3635
public class FirebaseArrayOfObjectsTest {
3736
private static final int INITIAL_SIZE = 3;
3837

3938
private DatabaseReference mRef;
40-
private FirebaseArray mArray;
39+
private FirebaseArray<Bean> mArray;
40+
private ChangeEventListener mListener;
4141

4242
@Before
4343
public void setUp() throws Exception {
@@ -46,9 +46,9 @@ public void setUp() throws Exception {
4646
.getReference()
4747
.child("firebasearray")
4848
.child("objects");
49-
mArray = new FirebaseArray(mRef);
49+
mArray = new FirebaseArray<>(mRef, Bean.class);
5050
mRef.removeValue();
51-
runAndWaitUntil(mArray, new Runnable() {
51+
mListener = runAndWaitUntil(mArray, new Runnable() {
5252
@Override
5353
public void run() {
5454
for (int i = 1; i <= INITIAL_SIZE; i++) {
@@ -58,14 +58,14 @@ public void run() {
5858
}, new Callable<Boolean>() {
5959
@Override
6060
public Boolean call() throws Exception {
61-
return mArray.getCount() == INITIAL_SIZE;
61+
return mArray.size() == INITIAL_SIZE;
6262
}
6363
});
6464
}
6565

6666
@After
6767
public void tearDown() throws Exception {
68-
mArray.cleanup();
68+
mArray.removeChangeEventListener(mListener);
6969
mRef.getRoot().removeValue();
7070
}
7171

@@ -79,7 +79,7 @@ public void run() {
7979
}, new Callable<Boolean>() {
8080
@Override
8181
public Boolean call() throws Exception {
82-
return mArray.getCount() == 4;
82+
return mArray.size() == 4;
8383
}
8484
});
8585
}
@@ -94,7 +94,7 @@ public void run() {
9494
}, new Callable<Boolean>() {
9595
@Override
9696
public Boolean call() throws Exception {
97-
return mArray.getItem(3).getValue(Bean.class).getNumber() == 4;
97+
return mArray.getObject(3).getNumber() == 4;
9898
}
9999
});
100100
}
@@ -109,9 +109,8 @@ public void run() {
109109
}, new Callable<Boolean>() {
110110
@Override
111111
public Boolean call() throws Exception {
112-
return mArray.getItem(3).getValue(Bean.class).getNumber() == 3 && mArray.getItem(0)
113-
.getValue(Bean.class)
114-
.getNumber() == 4;
112+
return mArray.getObject(3).getNumber() == 3
113+
&& mArray.getObject(0).getNumber() == 4;
115114
}
116115
});
117116
}
@@ -121,16 +120,47 @@ public void testChangePriorities() throws Exception {
121120
runAndWaitUntil(mArray, new Runnable() {
122121
@Override
123122
public void run() {
124-
mArray.getItem(2).getRef().setPriority(0.5);
123+
mArray.get(2).getRef().setPriority(0.5);
125124
}
126125
}, new Callable<Boolean>() {
127126
@Override
128127
public Boolean call() throws Exception {
129-
return getBean(mArray, 0).getNumber() == 3
130-
&& getBean(mArray, 1).getNumber() == 1
131-
&& getBean(mArray, 2).getNumber() == 2;
128+
return mArray.getObject(0).getNumber() == 3
129+
&& mArray.getObject(1).getNumber() == 1
130+
&& mArray.getObject(2).getNumber() == 2;
132131
//return isValuesEqual(mArray, new int[]{3, 1, 2});
133132
}
134133
});
135134
}
135+
136+
@Test
137+
public void testCacheInvalidates() throws Exception {
138+
final DatabaseReference pushRef = mRef.push();
139+
140+
// Set initial value to "5"
141+
runAndWaitUntil(mArray, new Runnable() {
142+
@Override
143+
public void run() {
144+
pushRef.setValue(new Bean(5), 100);
145+
}
146+
}, new Callable<Boolean>() {
147+
@Override
148+
public Boolean call() throws Exception {
149+
return mArray.getObject(3).getNumber() == 5;
150+
}
151+
});
152+
153+
// Change the value to "6" and ensure that the change is propagated
154+
runAndWaitUntil(mArray, new Runnable() {
155+
@Override
156+
public void run() {
157+
pushRef.setValue(new Bean(6), 100);
158+
}
159+
}, new Callable<Boolean>() {
160+
@Override
161+
public Boolean call() throws Exception {
162+
return mArray.getObject(3).getNumber() == 6;
163+
}
164+
});
165+
}
136166
}

database/src/androidTest/java/com/firebase/ui/database/FirebaseArrayTest.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,15 @@ public class FirebaseArrayTest {
3737
private static final int INITIAL_SIZE = 3;
3838
private DatabaseReference mRef;
3939
private FirebaseArray mArray;
40+
private ChangeEventListener mListener;
4041

4142
@Before
4243
public void setUp() throws Exception {
4344
FirebaseApp app = getAppInstance(InstrumentationRegistry.getContext());
4445
mRef = FirebaseDatabase.getInstance(app).getReference().child("firebasearray");
4546
mArray = new FirebaseArray(mRef);
4647
mRef.removeValue();
47-
runAndWaitUntil(mArray, new Runnable() {
48+
mListener = runAndWaitUntil(mArray, new Runnable() {
4849
@Override
4950
public void run() {
5051
for (int i = 1; i <= INITIAL_SIZE; i++) {
@@ -54,14 +55,14 @@ public void run() {
5455
}, new Callable<Boolean>() {
5556
@Override
5657
public Boolean call() throws Exception {
57-
return mArray.getCount() == INITIAL_SIZE;
58+
return mArray.size() == INITIAL_SIZE;
5859
}
5960
});
6061
}
6162

6263
@After
6364
public void tearDown() throws Exception {
64-
mArray.cleanup();
65+
mArray.removeChangeEventListener(mListener);
6566
mRef.getRoot().removeValue();
6667
}
6768

@@ -75,7 +76,7 @@ public void run() {
7576
}, new Callable<Boolean>() {
7677
@Override
7778
public Boolean call() throws Exception {
78-
return mArray.getCount() == 4;
79+
return mArray.size() == 4;
7980
}
8081
});
8182
}
@@ -90,7 +91,7 @@ public void run() {
9091
}, new Callable<Boolean>() {
9192
@Override
9293
public Boolean call() throws Exception {
93-
return mArray.getItem(3).getValue(Integer.class).equals(4);
94+
return mArray.get(3).getValue(Integer.class).equals(4);
9495
}
9596
});
9697
}
@@ -105,8 +106,8 @@ public void run() {
105106
}, new Callable<Boolean>() {
106107
@Override
107108
public Boolean call() throws Exception {
108-
return mArray.getItem(3).getValue(Integer.class).equals(3)
109-
&& mArray.getItem(0).getValue(Integer.class).equals(4);
109+
return mArray.get(3).getValue(Integer.class).equals(3)
110+
&& mArray.get(0).getValue(Integer.class).equals(4);
110111
}
111112
});
112113
}
@@ -116,7 +117,7 @@ public void testChangePriorityBackToFront() throws Exception {
116117
runAndWaitUntil(mArray, new Runnable() {
117118
@Override
118119
public void run() {
119-
mArray.getItem(2).getRef().setPriority(0.5);
120+
mArray.get(2).getRef().setPriority(0.5);
120121
}
121122
}, new Callable<Boolean>() {
122123
@Override
@@ -131,7 +132,7 @@ public void testChangePriorityFrontToBack() throws Exception {
131132
runAndWaitUntil(mArray, new Runnable() {
132133
@Override
133134
public void run() {
134-
mArray.getItem(0).getRef().setPriority(4);
135+
mArray.get(0).getRef().setPriority(4);
135136
}
136137
}, new Callable<Boolean>() {
137138
@Override

database/src/androidTest/java/com/firebase/ui/database/FirebaseIndexArrayOfObjectsTest.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.util.concurrent.Callable;
2929

3030
import static com.firebase.ui.database.TestUtils.getAppInstance;
31-
import static com.firebase.ui.database.TestUtils.getBean;
3231
import static com.firebase.ui.database.TestUtils.runAndWaitUntil;
3332

3433
@RunWith(AndroidJUnit4.class)
@@ -37,7 +36,8 @@ public class FirebaseIndexArrayOfObjectsTest {
3736

3837
private DatabaseReference mRef;
3938
private DatabaseReference mKeyRef;
40-
private FirebaseArray mArray;
39+
private ObservableSnapshotArray<Bean> mArray;
40+
private ChangeEventListener mListener;
4141

4242
@Before
4343
public void setUp() throws Exception {
@@ -46,11 +46,11 @@ public void setUp() throws Exception {
4646
mRef = databaseInstance.getReference().child("firebasearray").child("objects");
4747
mKeyRef = databaseInstance.getReference().child("firebaseindexarray").child("objects");
4848

49-
mArray = new FirebaseIndexArray(mKeyRef, mRef);
49+
mArray = new FirebaseIndexArray<>(mKeyRef, mRef, Bean.class);
5050
mRef.removeValue();
5151
mKeyRef.removeValue();
5252

53-
runAndWaitUntil(mArray, new Runnable() {
53+
mListener = runAndWaitUntil(mArray, new Runnable() {
5454
@Override
5555
public void run() {
5656
for (int i = 1; i <= INITIAL_SIZE; i++) {
@@ -60,14 +60,14 @@ public void run() {
6060
}, new Callable<Boolean>() {
6161
@Override
6262
public Boolean call() throws Exception {
63-
return mArray.getCount() == INITIAL_SIZE;
63+
return mArray.size() == INITIAL_SIZE;
6464
}
6565
});
6666
}
6767

6868
@After
6969
public void tearDown() throws Exception {
70-
mArray.cleanup();
70+
mArray.removeChangeEventListener(mListener);
7171
mRef.getRoot().removeValue();
7272
}
7373

@@ -81,7 +81,7 @@ public void run() {
8181
}, new Callable<Boolean>() {
8282
@Override
8383
public Boolean call() throws Exception {
84-
return mArray.getCount() == 4;
84+
return mArray.size() == 4;
8585
}
8686
});
8787
}
@@ -96,7 +96,7 @@ public void run() {
9696
}, new Callable<Boolean>() {
9797
@Override
9898
public Boolean call() throws Exception {
99-
return mArray.getItem(3).getValue(Bean.class).getNumber() == 4;
99+
return mArray.getObject(3).getNumber() == 4;
100100
}
101101
});
102102
}
@@ -111,9 +111,8 @@ public void run() {
111111
}, new Callable<Boolean>() {
112112
@Override
113113
public Boolean call() throws Exception {
114-
return mArray.getItem(3).getValue(Bean.class).getNumber() == 3 && mArray.getItem(0)
115-
.getValue(Bean.class)
116-
.getNumber() == 4;
114+
return mArray.getObject(3).getNumber() == 3
115+
&& mArray.getObject(0).getNumber() == 4;
117116
}
118117
});
119118
}
@@ -123,14 +122,14 @@ public void testChangePriorities() throws Exception {
123122
runAndWaitUntil(mArray, new Runnable() {
124123
@Override
125124
public void run() {
126-
mKeyRef.child(mArray.getItem(2).getKey()).setPriority(0.5);
125+
mKeyRef.child(mArray.get(2).getKey()).setPriority(0.5);
127126
}
128127
}, new Callable<Boolean>() {
129128
@Override
130129
public Boolean call() throws Exception {
131-
return getBean(mArray, 0).getNumber() == 3
132-
&& getBean(mArray, 1).getNumber() == 1
133-
&& getBean(mArray, 2).getNumber() == 2;
130+
return mArray.getObject(0).getNumber() == 3
131+
&& mArray.getObject(1).getNumber() == 1
132+
&& mArray.getObject(2).getNumber() == 2;
134133
//return isValuesEqual(mArray, new int[]{3, 1, 2});
135134
}
136135
});

0 commit comments

Comments
 (0)