Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
169 lines
4.6 KiB
JavaScript
Executable file
169 lines
4.6 KiB
JavaScript
Executable file
/* globals MocksHelper */
|
|
/* globals asyncStorage */
|
|
/* globals PlacesIdbStore */
|
|
|
|
'use strict';
|
|
|
|
require('/shared/test/unit/mocks/mock_async_storage.js');
|
|
|
|
requireApp('search/js/places_idb.js');
|
|
|
|
var mocksHelper = new MocksHelper([
|
|
'asyncStorage'
|
|
]).init();
|
|
|
|
suite('search/places_idb', function() {
|
|
|
|
var subject;
|
|
|
|
var mozilla = 'http://mozilla.org';
|
|
var google = 'http://google.com';
|
|
var yahoo = 'http://yahoo.com';
|
|
|
|
function place(url, frecency, visited, visits) {
|
|
frecency = frecency || 1;
|
|
visited = visited || 0;
|
|
visits = visits || [visited];
|
|
return {
|
|
url: url,
|
|
frecency: frecency,
|
|
visited: visited,
|
|
visits: visits
|
|
};
|
|
}
|
|
|
|
mocksHelper.attachTestHelpers();
|
|
|
|
setup(done => {
|
|
asyncStorage.getItem = function(key, callback) {
|
|
callback(null);
|
|
};
|
|
|
|
subject = new PlacesIdbStore();
|
|
|
|
subject.init().then(function() {
|
|
subject.clear().then(function() {
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
test('Test frecency', function(done) {
|
|
Promise.all([
|
|
subject.add('url', place(mozilla, 1, 0)),
|
|
subject.add('url', place(google, 3, 1)),
|
|
subject.add('url', place(yahoo, 2, 2)),
|
|
subject.add('url', place(mozilla, 4, 3))
|
|
]).then(function() {
|
|
subject.read('frecency', 5, function(results) {
|
|
assert.equal(results.length, 3);
|
|
assert.equal(results[0].url, mozilla);
|
|
assert.equal(results[1].url, google);
|
|
assert.equal(results[2].url, yahoo);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
test('Test history', function(done) {
|
|
Promise.all([
|
|
subject.add('url', place(mozilla, 1, 0)),
|
|
subject.add('url', place(google, 3, 1)),
|
|
subject.add('url', place(yahoo, 2, 2)),
|
|
subject.add('url', place(mozilla, 4, 3))
|
|
]).then(function() {
|
|
subject.read('visited', 5, function(results) {
|
|
assert.equal(results.length, 3);
|
|
assert.equal(results[0].url, mozilla);
|
|
assert.equal(results[1].url, yahoo);
|
|
assert.equal(results[2].url, google);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
test('Test frecency filter', function(done) {
|
|
Promise.all([
|
|
subject.add('url', place(google, -1, 0)),
|
|
subject.add('url', place(yahoo, -2, 2)),
|
|
subject.add('url', place(mozilla, 1, 3))
|
|
]).then(function() {
|
|
subject.read('frecency', 5, function(results) {
|
|
assert.equal(results.length, 1);
|
|
assert.equal(results[0].url, mozilla);
|
|
done();
|
|
}, function(place) {
|
|
return place.frecency > 0;
|
|
});
|
|
});
|
|
});
|
|
|
|
test('Test filter', function(done) {
|
|
Promise.all([
|
|
subject.add('url', place(mozilla, 1, 0)),
|
|
subject.add('url', place(google, 3, 1)),
|
|
subject.add('url', place(yahoo, 2, 2)),
|
|
subject.add('url', place(mozilla, 4, 3))
|
|
]).then(function() {
|
|
subject.read('visited', 5, function(results) {
|
|
assert.equal(results.length, 1);
|
|
assert.equal(results[0].url, mozilla);
|
|
done();
|
|
}, function(place) {
|
|
return place.url === mozilla;
|
|
});
|
|
});
|
|
});
|
|
|
|
test('Test visits', function(done) {
|
|
Promise.all([
|
|
subject.add('url', place(mozilla, 1, 0, [0])),
|
|
subject.add('url', place(google, 3, 0, [4, 2])),
|
|
subject.add('url', place(yahoo, 2, 0, [7, 3])),
|
|
subject.add('url', place(mozilla, 4, 0, [6, 5, 1, 0]))
|
|
]).then(function() {
|
|
subject.readVisits(7, function(results) {
|
|
assert.equal(results.length, 7);
|
|
assert.equal(results[0].url, yahoo);
|
|
assert.equal(results[1].url, mozilla);
|
|
assert.equal(results[2].url, mozilla);
|
|
assert.equal(results[3].url, google);
|
|
assert.equal(results[4].url, yahoo);
|
|
assert.equal(results[5].url, google);
|
|
assert.equal(results[6].url, mozilla);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
test('Adding empty visits should delete the record', function(done) {
|
|
Promise.all([
|
|
subject.add(mozilla, place(mozilla, 1, 1, [1])),
|
|
subject.add(mozilla, place(mozilla, 1, 2, []))
|
|
]).then(() => {
|
|
subject.read('visited', 5, results => {
|
|
assert.equal(results.length, 0);
|
|
subject.readVisits(5, results => {
|
|
assert.equal(results.length, 0);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
test('Adding empty visits should delete the record', function(done) {
|
|
Promise.all([
|
|
subject.add(mozilla, place(mozilla, 1, 1, [1])),
|
|
subject.remove(mozilla)
|
|
]).then(() => {
|
|
subject.read('visited', 5, results => {
|
|
assert.equal(results.length, 0);
|
|
subject.readVisits(5, results => {
|
|
assert.equal(results.length, 0);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|