140 lines
No EOL
5.6 KiB
JavaScript
140 lines
No EOL
5.6 KiB
JavaScript
describe('Filter: timeAgo', function() {
|
|
it('should format a number in seconds to "x seconds/minutes/hours ago"', function() {
|
|
var timeAgo, testTime;
|
|
|
|
module('podcasts.services');
|
|
inject(function($filter) {
|
|
timeAgo = $filter('timeAgo');
|
|
testTime = new Date().getTime();
|
|
});
|
|
|
|
expect(timeAgo(testTime - 45000)).toEqual('just now');
|
|
expect(timeAgo(testTime - 90000)).toEqual('1 minute ago');
|
|
expect(timeAgo(testTime - 260000)).toEqual('4 minutes ago');
|
|
expect(timeAgo(testTime - 4000000)).toEqual('1 hour ago');
|
|
expect(timeAgo(testTime - 38000000)).toEqual('10 hours ago');
|
|
expect(timeAgo(testTime - 90000000)).toEqual('Yesterday');
|
|
expect(timeAgo(testTime - 865000000)).toEqual('2 weeks ago');
|
|
expect(timeAgo(testTime - 3457000000)).toEqual('older than a month');
|
|
});
|
|
});
|
|
|
|
describe('Filter: time', function() {
|
|
it('should format seconds to a time format"', function() {
|
|
module('podcasts.services');
|
|
inject(function($filter) {
|
|
time = $filter('time');
|
|
});
|
|
|
|
expect(time(10)).toEqual('10s');
|
|
expect(time(10)).toEqual('10s');
|
|
expect(time(70)).toEqual('70s');
|
|
expect(time(150)).toEqual('2:30');
|
|
expect(time(123)).toEqual('2:03');
|
|
expect(time(3675)).toEqual('1:01:15');
|
|
expect(time(18000)).toEqual('5:00:00');
|
|
});
|
|
|
|
//TODO: test skip option. not sure if I want to change how that works though
|
|
});
|
|
|
|
/*
|
|
describe('Service: Settings', function() {
|
|
it('should store a new setting to the DB', function() {
|
|
var settingService;
|
|
|
|
module('podcasts.services');
|
|
inject(function($service) {
|
|
settingService = $service;
|
|
});
|
|
|
|
expect(settingService(10)).toEqual('10s');
|
|
expect(time(10)).toEqual('10s');
|
|
expect(time(70)).toEqual('70s');
|
|
expect(time(150)).toEqual('2:30');
|
|
expect(time(123)).toEqual('2:03');
|
|
expect(time(3675)).toEqual('1:01:15');
|
|
expect(time(18000)).toEqual('5:00:00');
|
|
});
|
|
});
|
|
*/
|
|
|
|
|
|
describe('Service: Importer', function() {
|
|
var _feeds = function() {
|
|
return {
|
|
add: jasmine.createSpy('add')
|
|
};
|
|
};
|
|
|
|
beforeEach(module('podcasts.importer'));
|
|
beforeEach(module('podcasts.services'));
|
|
beforeEach(module(function($provide) {
|
|
$provide.service('feeds', _feeds);
|
|
}));
|
|
|
|
it('should parse JSON and pass the URLs to the feeds service', inject(function(feeds, google) {
|
|
google.addFeedsFromJsonResponse(testFixtures.googleReaderSubscriptions);
|
|
|
|
expect(feeds.add.calls.length).toEqual(3);
|
|
expect(feeds.add).toHaveBeenCalledWith("http://feeds.5by5.tv/b2w-afterdark");
|
|
expect(feeds.add).toHaveBeenCalledWith("http://pod.drs.ch/heutemorgen_mpx.xml");
|
|
expect(feeds.add).toHaveBeenCalledWith("http://pod.drs.ch/mailbox_mpx.xml");
|
|
}));
|
|
});
|
|
|
|
describe('Service: Feeds', function() {
|
|
var _downloaderBackend = function($q, xmlParser) {
|
|
return {
|
|
downloadXml: function(url) {
|
|
var deferred = $q.defer();
|
|
deferred.resolve(xmlParser.parse(testFixtures.feedXml));
|
|
|
|
return deferred.promise;
|
|
}
|
|
};
|
|
},
|
|
_feeditems = function($delegate, $q) {
|
|
return {
|
|
getFeedItemFromXml: $delegate.getFeedItemFromXml,
|
|
add: function(feedObject) {
|
|
var deferred = $q.defer();
|
|
deferred.resolve('');
|
|
|
|
return deferred.promise;
|
|
}
|
|
}
|
|
},
|
|
_db = function() {
|
|
return {};
|
|
};
|
|
|
|
beforeEach(function() {
|
|
module('podcasts.services');
|
|
|
|
module(function($provide) {
|
|
$provide.service('db', _db);
|
|
$provide.decorator('feedItems', _feeditems);
|
|
$provide.service('downloaderBackend', _downloaderBackend);
|
|
});
|
|
});
|
|
|
|
it('should save feedItems to DB with correct queued value', inject(function(feeds, feedItems, $rootScope, downloaderBackend) {
|
|
spyOn(downloaderBackend, 'downloadXml').andCallThrough();
|
|
spyOn(feedItems, 'add').andCallThrough();
|
|
|
|
feedItem = {id: 1, url: 'http://www.example.com/feed.xml'};
|
|
feeds.downloadItems(feedItem, null);
|
|
$rootScope.$apply();
|
|
|
|
expect(downloaderBackend.downloadXml.calls.length).toEqual(1);
|
|
expect(downloaderBackend.downloadXml).toHaveBeenCalledWith('http://www.example.com/feed.xml');
|
|
|
|
|
|
expect(feedItems.add.calls.length).toEqual(3); //TODO: adjust as per global setting at some point
|
|
expect(feedItems.add).toHaveBeenCalledWith({ guid : 'http://example.org/podcast/1.mp3', title : 'Example Item 1', link : '', date : 1362124800000, description : 'Example Description 1', audioUrl : 'http://example.org/podcast/1.mp3', queued : 1, feedId : 1 });
|
|
expect(feedItems.add).toHaveBeenCalledWith({ guid : 'http://example.org/podcast/2.mp3', title : 'Example Item 2', link : '', date : 1362038400000, description : 'Example Description 2', audioUrl : 'http://example.org/podcast/2.mp3', queued : 0, feedId : 1 });
|
|
expect(feedItems.add).toHaveBeenCalledWith({ guid : 'http://example.org/podcast/3.mp3', title : 'Example Item 3', link : '', date : 1361952000000, description : 'Example Description 3', audioUrl : 'http://example.org/podcast/3.mp3', queued : 0, feedId : 1 });
|
|
expect(feedItems.add).not.toHaveBeenCalledWith({ guid : 'http://example.org/podcast/4.mp3', title : 'Example Item 4', link : '', date : 1361952000000, description : 'Example Description 4', audioUrl : 'http://example.org/podcast/4.mp3', queued : 0, feedId : 1 });
|
|
}));
|
|
}); |