Skip to content

Commit 4397b7d

Browse files
committed
fix: Change getItem(string[]) to return null for unknown keys instead of undefined
1 parent 7c95b69 commit 4397b7d

File tree

2 files changed

+57
-4
lines changed

2 files changed

+57
-4
lines changed

src/angular-localForage.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@
162162
return res;
163163
}
164164
}).then(function() {
165+
for (var i = 0; i < key.length; i++) {
166+
if (angular.isUndefined(res[i])) {
167+
res[i] = null;
168+
}
169+
}
165170
deferred.resolve(res);
166171
});
167172
} else {

tests/angular-localForage.js

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,54 @@ describe('Module: LocalForageModule', function() {
7171
}, done);
7272
});
7373

74+
describe('getItem for an array with unknown keys', function() {
75+
it('should produce null values with all unknown keys', function(done) {
76+
var interval = triggerDigests();
77+
78+
$localForage.getItem(['unknown key 1', 'unknown key 2']).then(function(values) {
79+
stopDigests(interval);
80+
expect(values).toEqual([null, null]);
81+
done()
82+
}, done)
83+
});
84+
85+
it('should produce null value for an unknown trailing key', function(done) {
86+
var interval = triggerDigests();
87+
88+
$localForage.setItem('known key', 'known value').then(function() {
89+
$localForage.getItem(['known key', 'unknown key']).then(function(values) {
90+
stopDigests(interval);
91+
expect(values).toEqual(['known value', null]);
92+
done()
93+
}, done)
94+
});
95+
});
96+
97+
it('should produce null value for an unknown initial key', function(done) {
98+
var interval = triggerDigests();
99+
100+
$localForage.setItem('known key', 'known value').then(function() {
101+
$localForage.getItem(['unknown key', 'known key']).then(function(values) {
102+
stopDigests(interval);
103+
expect(values).toEqual([null, 'known value']);
104+
done()
105+
}, done)
106+
});
107+
});
108+
109+
it('should produce null value for a unknown middle key', function(done) {
110+
var interval = triggerDigests();
111+
112+
$localForage.setItem(['known key', 'known key 2'], ['known value', 'known value 2']).then(function() {
113+
$localForage.getItem(['known key', 'unknown key', 'known key 2']).then(function(values) {
114+
stopDigests(interval);
115+
expect(values).toEqual(['known value', null, 'known value 2']);
116+
done()
117+
}, done)
118+
});
119+
});
120+
});
121+
74122
describe("iterate", function() {
75123
var interval;
76124

@@ -173,8 +221,8 @@ describe('Module: LocalForageModule', function() {
173221

174222
$localForage.getItem(['myName', 'myPassion', 'myHobbie']).then(function(data) {
175223
stopDigests(interval);
176-
expect(data[0]).toBeUndefined();
177-
expect(data[1]).toBeUndefined();
224+
expect(data[0]).toBeNull();
225+
expect(data[1]).toBeNull();
178226
expect(data[2]).toEqual('Open Source');
179227
done();
180228
}, done);
@@ -216,8 +264,8 @@ describe('Module: LocalForageModule', function() {
216264

217265
$localForage.getItem(['myName', 'myPassion', 'myHobbie']).then(function(data) {
218266
stopDigests(interval);
219-
expect(data[0]).toBeUndefined();
220-
expect(data[1]).toBeUndefined();
267+
expect(data[0]).toBeNull();
268+
expect(data[1]).toBeNull();
221269
expect(data[2]).toEqual('Open Source');
222270
done();
223271
}, done);

0 commit comments

Comments
 (0)