Skip to content

Commit 379a263

Browse files
committed
WIP: add transaction.test.ts
1 parent 9e08172 commit 379a263

File tree

5 files changed

+1274
-6
lines changed

5 files changed

+1274
-6
lines changed

src/database.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,12 @@ declare module './app/firebase_app' {
6060
interface FirebaseNamespace {
6161
database?: {
6262
(app?: FirebaseApp): Database,
63-
Reference,
64-
Query,
6563
Database,
6664
enableLogging,
6765
INTERNAL,
66+
Query,
67+
Reference,
68+
ServerValue,
6869
}
6970
}
7071
}

tests/database/helpers/events.ts

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@ function rawPath(firebaseRef) {
3232
* @return {{waiter: waiter, watchesInitializedWaiter: watchesInitializedWaiter, unregister: unregister, addExpectedEvents: addExpectedEvents}}
3333
*/
3434
export function eventTestHelper(pathAndEvents, helperName?) {
35+
let resolve, reject;
36+
let promise = new Promise((pResolve, pReject) => {
37+
resolve = pResolve;
38+
reject = pReject;
39+
});
40+
let initResolve, initReject;
41+
const initPromise = new Promise((pResolve, pReject) => {
42+
initResolve = pResolve;
43+
initReject = pReject;
44+
});
3545
var expectedPathAndEvents = [];
3646
var actualPathAndEvents = [];
3747
var pathEventListeners = {};
@@ -58,6 +68,14 @@ export function eventTestHelper(pathAndEvents, helperName?) {
5868
// test framework is calling the waiter... makes for easier debugging.
5969
waiter();
6070
}
71+
72+
// We want to trigger the promise resolution if valid, so try to call waiter as events
73+
// are coming back.
74+
try {
75+
if (waiter()) {
76+
resolve();
77+
}
78+
} catch(e) {}
6179
};
6280
};
6381

@@ -152,6 +170,11 @@ export function eventTestHelper(pathAndEvents, helperName?) {
152170
pathEventListeners[path.toString()].unlisten = listenOnPath(path);
153171
}
154172
}
173+
174+
promise = new Promise((pResolve, pReject) => {
175+
resolve = pResolve;
176+
reject = pReject;
177+
});
155178
};
156179

157180
addExpectedEvents(pathAndEvents);
@@ -166,6 +189,7 @@ export function eventTestHelper(pathAndEvents, helperName?) {
166189
actualPathAndEvents.splice(actualPathAndEvents.length - initializationEvents, initializationEvents);
167190
initializationEvents = 0;
168191

192+
initResolve();
169193
return true;
170194
};
171195

@@ -179,9 +203,11 @@ export function eventTestHelper(pathAndEvents, helperName?) {
179203

180204
eventCleanupHandlers.push(unregister);
181205
return {
182-
waiter: waiter,
183-
watchesInitializedWaiter: watchesInitializedWaiter,
184-
unregister: unregister,
206+
promise,
207+
initPromise,
208+
waiter,
209+
watchesInitializedWaiter,
210+
unregister,
185211

186212
addExpectedEvents: function(moreEvents) {
187213
addExpectedEvents(moreEvents);

tests/database/info.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ declare var TEST_ALT_NAMESPACE;
2020
declare var TEST_NAMESPACE;
2121

2222
describe(".info Tests", function () {
23+
this.timeout(3000);
2324
it("Can get a reference to .info nodes.", function() {
2425
var f = (getRootNode() as Reference);
2526
expect(getPath(f.child('.info'))).to.equal('/.info');

0 commit comments

Comments
 (0)