mockfirebase
mockfirebase copied to clipboard
firebase sdk 3.0 support
what about new sdk 3.0 support? as there is an official release this would be an interested option
https://firebase.google.com/docs/web/setup
I would also be interested in this or any alternative approach to testing Angular2 apps with AngularFire2. Any plans?
+1
+1
+1 and we are waiting for this here: https://github.com/firebase/firebase-util/issues/96#issuecomment-232568126 Thanks
@katowulf I wouldn't mind helping out to update this library to support firebase sdk 3.x.x if you can provide feedback on what needs to be changed
I added the following to MockFirebase.override
so that it overrides the window.firebase
reference. This allows using the new syntax of firebase.database().ref()
in both source and tests.
window.firebase = {
database: function() {
return {
ref: function(path) {
return new window.mockfirebase.MockFirebase(path);
}
};
}
};
I then updated MockFirebase.ref
to be a property instead of a function so that it passes the $firebaseUtils.assertValidRef
check. Those updates allow the following test to pass:
Source
export default class HomeController {
constructor($firebaseArray) {
var ref = firebase.database().ref().child('messages');
this.messages = $firebaseArray(ref);
return this;
}
submit(message) {
return this.messages.$add(message);
}
};
HomeController.$inject = ['$firebaseArray'];
Test
describe('HomeController', function() {
window.MockFirebase.override();
var controller;
beforeEach(function() {
module('application.home');
inject(function($controller, $firebaseArray) {
controller = $controller('HomeController', {
$firebaseArray: $firebaseArray
});
});
});
it('should read data from firebase', function() {
//save some data that our controller will read
var message = 'message';
controller.submit(message).then(function() {
expect(controller.messages).toContain(message);
});
});
});
The test above works only because I have the submit
function returning a promise and use that to wait for the write to be completed. I tried to make it work by just calling $add
then using firebaseRef.flush()
to flush the write, however, upon calling flush()
I get the error:
Error: No deferred tasks to be flushed
EDIT
Attempting to use firebaseRef.autoFlush()
results in a test failure:
Expected [ ] to contain 'message'.
I was able to get basic support added for firebase sdk 3.x. See https://github.com/katowulf/mockfirebase/pull/112 for more info.
Any update on this?
I would also be interested in using mockFirebase with the 3.x.x SDK -- It seems that this project is dead now? I'd love to contribute to getting mockFirebase ready