Skip to content
This repository was archived by the owner on Mar 17, 2025. It is now read-only.

Commit 4b15969

Browse files
committed
chore(tests): Changes per Jacob's comments
1 parent 4cdd779 commit 4b15969

7 files changed

Lines changed: 108 additions & 128 deletions

File tree

package.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
"bugs": {
1212
"url": "https://github.com/firebase/angularfire/issues"
1313
},
14-
"scripts": {
15-
"start": "grunt"
16-
},
1714
"license": "MIT",
1815
"keywords": [
1916
"angular",

src/storage/FirebaseStorage.js

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,48 +13,14 @@
1313
};
1414
}
1515

16-
function _$put(storageRef, file, $digestFn) {
17-
var task = storageRef.put(file);
18-
19-
return {
20-
$progress: function $progress(callback) {
21-
task.on('state_changed', function () {
22-
$digestFn(function () {
23-
callback([unwrapStorageSnapshot(task.snapshot)]);
24-
});
25-
});
26-
},
27-
$error: function $error(callback) {
28-
task.on('state_changed', function () {}, function (err) {
29-
$digestFn(function () {
30-
callback([err]);
31-
});
32-
});
33-
},
34-
$complete: function $complete(callback) {
35-
task.on('state_changed', function () {}, function () {}, function () {
36-
$digestFn(function () {
37-
callback([unwrapStorageSnapshot(task.snapshot)]);
38-
});
39-
});
40-
},
41-
$cancel: task.cancel,
42-
$resume: task.resume,
43-
$pause: task.pause,
44-
then: task.then,
45-
catch: task.catch,
46-
_task: task
47-
};
48-
}
49-
5016
function isStorageRef(value) {
5117
value = value || {};
5218
return typeof value.put === 'function';
5319
}
5420

5521
function _assertStorageRef(storageRef) {
5622
if (!isStorageRef(storageRef)) {
57-
throw new Error('$firebaseStorage expects a storage reference from firebase.storage().ref()');
23+
throw new Error('$firebaseStorage expects a Storage reference');
5824
}
5925
}
6026

@@ -64,7 +30,37 @@
6430
_assertStorageRef(storageRef);
6531
return {
6632
$put: function $put(file) {
67-
return Storage.utils._$put(storageRef, file, $firebaseUtils.compile);
33+
var task = storageRef.put(file);
34+
35+
return {
36+
$progress: function $progress(callback) {
37+
task.on('state_changed', function () {
38+
$firebaseUtils.compile(function () {
39+
callback(unwrapStorageSnapshot(task.snapshot));
40+
});
41+
});
42+
},
43+
$error: function $error(callback) {
44+
task.on('state_changed', null, function (err) {
45+
$firebaseUtils.compile(function () {
46+
callback(err);
47+
});
48+
});
49+
},
50+
$complete: function $complete(callback) {
51+
task.on('state_changed', null, null, function () {
52+
$firebaseUtils.compile(function () {
53+
callback(unwrapStorageSnapshot(task.snapshot));
54+
});
55+
});
56+
},
57+
$cancel: task.cancel,
58+
$resume: task.resume,
59+
$pause: task.pause,
60+
then: task.then,
61+
catch: task.catch,
62+
_task: task
63+
};
6864
},
6965
$getDownloadURL: function $getDownloadURL() {
7066
return $q.when(storageRef.getDownloadURL());
@@ -83,7 +79,6 @@
8379

8480
Storage.utils = {
8581
_unwrapStorageSnapshot: unwrapStorageSnapshot,
86-
_$put: _$put,
8782
_isStorageRef: isStorageRef,
8883
_assertStorageRef: _assertStorageRef
8984
};

src/storage/FirebaseStorageDirective.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
// $observe is like $watch but it waits for interpolation
1212
// Ex: <img firebase-src="{{ myUrl }}"/>
1313
attrs.$observe('firebaseSrc', function (newFirebaseSrcVal) {
14-
if (newFirebaseSrcVal !== '' && newFirebaseSrcVal !== null && newFirebaseSrcVal !== undefined) {
14+
if (newFirebaseSrcVal !== '' &&
15+
newFirebaseSrcVal !== null &&
16+
newFirebaseSrcVal !== undefined &&
17+
typeof newFirebaseSrcVal === 'string') {
1518
var storageRef = firebase.storage().ref(newFirebaseSrcVal);
1619
var storage = $firebaseStorage(storageRef);
1720
storage.$getDownloadURL().then(function getDownloadURL(url) {

tests/protractor/upload/upload.css

Whitespace-only changes.

tests/protractor/upload/upload.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
<!-- Initialize the Firebase SDK -->
1616
<script src="../../initialize.js"></script>
1717

18-
<!-- Custom CSS -->
19-
<link rel="stylesheet" href="upload.css">
2018
</head>
2119

2220
<body ng-controller="UploadCtrl">

tests/protractor/upload/upload.manual.js

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ describe('Upload App', function () {
1010
// Boolean used to load the page on the first test only
1111
var isPageLoaded = false;
1212

13-
// Reference to the messages repeater
14-
var messages = element.all(by.repeater('message in messages'));
15-
1613
var flow = protractor.promise.controlFlow();
1714

1815
function waitOne() {
@@ -26,7 +23,7 @@ describe('Upload App', function () {
2623
function clearFirebaseRef() {
2724
var deferred = protractor.promise.defer();
2825

29-
firebaseRef.remove(function(err) {
26+
firebaseRef.remove(function (err) {
3027
if (err) {
3128
deferred.reject(err);
3229
} else {
@@ -53,25 +50,21 @@ describe('Upload App', function () {
5350
expect(browser.getTitle()).toEqual('AngularFire Upload e2e Test');
5451
});
5552

56-
it('starts with an empty list of messages', function () {
57-
expect(messages.count()).toBe(0);
58-
});
59-
6053
it('uploads a file', function (done) {
61-
var fileToUpload = './upload/logo.png',
62-
absolutePath = path.resolve(__dirname, fileToUpload);
63-
64-
$('input[type="file"]').sendKeys(absolutePath);
65-
$('#submit').click();
66-
67-
var el = element(by.id('url'));
68-
browser.driver.wait(protractor.until.elementIsVisible(el))
69-
.then(function () {
70-
return el.getText();
71-
}).then(function (text) {
72-
var result = "https://firebasestorage.googleapis.com/v0/b/oss-test.appspot.com/o/user%2F1.png";
73-
expect(text.slice(0, result.length)).toEqual(result);
74-
done();
75-
});
54+
var fileToUpload = './upload/logo.png';
55+
var absolutePath = path.resolve(__dirname, fileToUpload);
56+
57+
$('input[type="file"]').sendKeys(absolutePath);
58+
$('#submit').click();
59+
60+
var el = element(by.id('url'));
61+
browser.driver.wait(protractor.until.elementIsVisible(el))
62+
.then(function () {
63+
return el.getText();
64+
}).then(function (text) {
65+
var result = "https://firebasestorage.googleapis.com/v0/b/oss-test.appspot.com/o/user%2F1.png";
66+
expect(text.slice(0, result.length)).toEqual(result);
67+
done();
68+
});
7669
});
7770
});

tests/unit/FirebaseStorage.spec.js

Lines changed: 56 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ describe('$firebaseStorage', function () {
3333
expect(storage).not.toBe(null);
3434
});
3535

36+
it('should throw error given a non-reference', () => {
37+
function errorWrapper() {
38+
var storage = $firebaseStorage(null);
39+
}
40+
expect(errorWrapper).toThrow();
41+
});
42+
3643
describe('$firebaseStorage.utils', function () {
3744

3845
describe('_unwrapStorageSnapshot', function () {
@@ -45,32 +52,74 @@ describe('$firebaseStorage', function () {
4552
ref: {},
4653
state: {},
4754
task: {},
48-
totalBytes: 0
55+
totalBytes: 0,
56+
randomAttr: 'rando', // gets removed
57+
anotherRando: 'woooo' // gets removed
4958
};
5059
var unwrapped = $firebaseStorage.utils._unwrapStorageSnapshot(mockSnapshot);
51-
expect(mockSnapshot).toEqual(unwrapped);
60+
expect(unwrapped).toEqual({
61+
bytesTransferred: 0,
62+
downloadURL: 'url',
63+
metadata: {},
64+
ref: {},
65+
state: {},
66+
task: {},
67+
totalBytes: 0
68+
});
69+
});
70+
71+
});
72+
73+
describe('_isStorageRef', function () {
74+
75+
it('should determine a storage ref', function () {
76+
var ref = firebase.storage().ref('thing');
77+
var isTrue = $firebaseStorage.utils._isStorageRef(ref);
78+
var isFalse = $firebaseStorage.utils._isStorageRef(true);
79+
expect(isTrue).toEqual(true);
80+
expect(isFalse).toEqual(false);
81+
});
82+
83+
});
84+
85+
describe('_assertStorageRef', function () {
86+
it('should not throw an error if a storage ref is passed', function () {
87+
var ref = firebase.storage().ref('thing');
88+
function errorWrapper() {
89+
$firebaseStorage.utils._assertStorageRef(ref);
90+
}
91+
expect(errorWrapper).not.toThrow();
5292
});
5393

94+
it('should throw an error if a storage ref is passed', function () {
95+
function errorWrapper() {
96+
$firebaseStorage.utils._assertStorageRef(null);
97+
}
98+
expect(errorWrapper).toThrow();
99+
});
54100
});
55101

56-
describe('_$put', function () {
102+
});
103+
104+
describe('$firebaseStorage', function() {
105+
106+
describe('$put', function() {
57107

58108
function setupPutTests(file, mockTask) {
59109
var ref = firebase.storage().ref('thing');
60110
var task = null;
61-
var digestFn = $firebaseUtils.compile;
111+
var storage = $firebaseStorage(ref);
62112
// If a MockTask is provided use it as the
63113
// return value of the spy on put
64114
if (mockTask) {
65115
spyOn(ref, 'put').and.returnValue(mockTask);
66116
} else {
67117
spyOn(ref, 'put');
68118
}
69-
task = $firebaseStorage.utils._$put(ref, file, digestFn);
119+
task = storage.$put(file);
70120
return {
71121
ref: ref,
72-
task: task,
73-
digestFn: digestFn
122+
task: task
74123
};
75124
}
76125

@@ -152,57 +201,6 @@ describe('$firebaseStorage', function () {
152201

153202
});
154203

155-
describe('_isStorageRef', function () {
156-
157-
it('should determine a storage ref', function () {
158-
var ref = firebase.storage().ref('thing');
159-
var isTrue = $firebaseStorage.utils._isStorageRef(ref);
160-
var isFalse = $firebaseStorage.utils._isStorageRef(true);
161-
expect(isTrue).toEqual(true);
162-
expect(isFalse).toEqual(false);
163-
});
164-
165-
});
166-
167-
describe('_assertStorageRef', function () {
168-
it('should not throw an error if a storage ref is passed', function () {
169-
var ref = firebase.storage().ref('thing');
170-
function errorWrapper() {
171-
$firebaseStorage.utils._assertStorageRef(ref);
172-
}
173-
expect(errorWrapper).not.toThrow();
174-
});
175-
176-
it('should throw an error if a storage ref is passed', function () {
177-
function errorWrapper() {
178-
$firebaseStorage.utils._assertStorageRef(null);
179-
}
180-
expect(errorWrapper).toThrow();
181-
});
182-
});
183-
184-
});
185-
186-
describe('$firebaseStorage', function() {
187-
188-
describe('$put', function() {
189-
190-
it('should call the _$put method', function() {
191-
// test that $firebaseStorage.utils._$put is called with
192-
// - storageRef, file, $firebaseUtils.compile, $q
193-
var ref = firebase.storage().ref('thing');
194-
var storage = $firebaseStorage(ref);
195-
var fakePromise = $q(function(resolve, reject) {
196-
resolve('file');
197-
});
198-
spyOn(ref, 'put');
199-
spyOn($firebaseStorage.utils, '_$put').and.returnValue(fakePromise);
200-
storage.$put('file'); // don't ever call this with a string IRL
201-
expect($firebaseStorage.utils._$put).toHaveBeenCalledWith(ref, 'file', $firebaseUtils.compile);
202-
})
203-
204-
});
205-
206204
describe('$getDownloadURL', function() {
207205
it('should call the ref getDownloadURL method', function() {
208206
var ref = firebase.storage().ref('thing');
@@ -215,12 +213,8 @@ describe('$firebaseStorage', function () {
215213

216214
describe('$delete', function() {
217215
it('should call the storage ref delete method', function() {
218-
// test that $firebaseStorage.$delete() calls storageRef.delete()
219216
var ref = firebase.storage().ref('thing');
220217
var storage = $firebaseStorage(ref);
221-
var fakePromise = $q(function(resolve, reject) {
222-
resolve();
223-
});
224218
spyOn(ref, 'delete');
225219
storage.$delete();
226220
expect(ref.delete).toHaveBeenCalled();

0 commit comments

Comments
 (0)