105 lines
3.1 KiB
JavaScript
105 lines
3.1 KiB
JavaScript
const { setDatabaseContents } = TestHelpers.database;
|
|
|
|
// TODO use testRunId in refs to prevent multiple test instances interfering with each other
|
|
describe('database()', () => {
|
|
describe('Snapshot', () => {
|
|
before(() => setDatabaseContents());
|
|
|
|
it('should provide a functioning val() method', async () => {
|
|
const snapshot = await firebase
|
|
.database()
|
|
.ref('tests/types/array')
|
|
.once('value');
|
|
|
|
snapshot.val.should.be.a.Function();
|
|
snapshot.val().should.eql(bridge.Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]));
|
|
});
|
|
|
|
it('should provide a functioning child() method', async () => {
|
|
const snapshot = await firebase
|
|
.database()
|
|
.ref('tests/types/array')
|
|
.once('value');
|
|
|
|
snapshot.child('0').val.should.be.a.Function();
|
|
snapshot
|
|
.child('0')
|
|
.val()
|
|
.should.equal(0);
|
|
snapshot.child('0').key.should.be.a.String();
|
|
snapshot.child('0').key.should.equal('0');
|
|
});
|
|
|
|
// TODO refactor
|
|
it('should provide a functioning hasChild() method', async () => {
|
|
const snapshot = await firebase
|
|
.database()
|
|
.ref('tests/types/object')
|
|
.once('value');
|
|
|
|
snapshot.hasChild.should.be.a.Function();
|
|
snapshot.hasChild('foo').should.equal(true);
|
|
snapshot.hasChild('baz').should.equal(false);
|
|
});
|
|
|
|
it('should provide a functioning hasChildren() method', async () => {
|
|
const snapshot = await firebase
|
|
.database()
|
|
.ref('tests/types/object')
|
|
.once('value');
|
|
|
|
snapshot.hasChildren.should.be.a.Function();
|
|
snapshot.hasChildren().should.equal(true);
|
|
snapshot
|
|
.child('foo')
|
|
.hasChildren()
|
|
.should.equal(false);
|
|
});
|
|
|
|
it('should provide a functioning exists() method', async () => {
|
|
const snapshot = await firebase
|
|
.database()
|
|
.ref('tests/types/object/baz/daz')
|
|
.once('value');
|
|
|
|
snapshot.exists.should.be.a.Function();
|
|
snapshot.exists().should.equal(false);
|
|
});
|
|
|
|
it('should provide a functioning getPriority() method', async () => {
|
|
const ref = firebase.database().ref('tests/priority');
|
|
const snapshot = await ref.once('value');
|
|
snapshot.getPriority.should.be.a.Function();
|
|
snapshot.getPriority().should.equal(666);
|
|
snapshot.val().should.eql(bridge.Object({ foo: 'bar' }));
|
|
});
|
|
|
|
it('should provide a functioning forEach() method', async () => {
|
|
const snapshot = await firebase
|
|
.database()
|
|
.ref('tests/types/array')
|
|
.once('value');
|
|
|
|
let total = 0;
|
|
snapshot.forEach.should.be.a.Function();
|
|
snapshot.forEach(childSnapshot => {
|
|
const val = childSnapshot.val();
|
|
total += val;
|
|
return val === 3; // stop iteration after key 3
|
|
});
|
|
|
|
total.should.equal(6); // 0 + 1 + 2 + 3 = 6
|
|
});
|
|
|
|
it('should provide a key property', async () => {
|
|
const snapshot = await firebase
|
|
.database()
|
|
.ref('tests/types/array')
|
|
.once('value');
|
|
|
|
snapshot.key.should.be.a.String();
|
|
snapshot.key.should.equal('array');
|
|
});
|
|
});
|
|
});
|