summaryrefslogtreecommitdiffstats
path: root/apps/files/tests/js/mainfileinfodetailviewSpec.js
blob: 3ea5ab66337c06562fbadf29f7f1a1bdb6ff3c2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/**
* ownCloud
*
* @author Vincent Petry
* @copyright 2015 Vincent Petry <pvince81@owncloud.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
*
*/

describe('OCA.Files.MainFileInfoDetailView tests', function() {
	var view, tipsyStub, previewStub, fncLazyLoadPreview, fileListMock;

	beforeEach(function() {
		tipsyStub = sinon.stub($.fn, 'tipsy');
		fileListMock = sinon.mock(OCA.Files.FileList.prototype);
		view = new OCA.Files.MainFileInfoDetailView();
	});
	afterEach(function() {
		view.destroy();
		view = undefined;
		tipsyStub.restore();
		fileListMock.restore();

	});
	describe('rendering', function() {
		var testFileInfo;
		beforeEach(function() {
			view = new OCA.Files.MainFileInfoDetailView();
			testFileInfo = {
				id: 5,
				name: 'One.txt',
				path: '/subdir',
				size: 123456789,
				mtime: Date.UTC(2015, 6, 17, 1, 2, 0, 0)
			};
		});
		it('displays basic info', function() {
			var clock = sinon.useFakeTimers(Date.UTC(2015, 6, 17, 1, 2, 0, 3));
			view.setFileInfo(testFileInfo);
			expect(view.$el.find('.fileName').text()).toEqual('One.txt');
			expect(view.$el.find('.fileName').attr('title')).toEqual('One.txt');
			expect(view.$el.find('.size').text()).toEqual('117.7 MB');
			expect(view.$el.find('.size').attr('title')).toEqual('123456789 bytes');
			expect(view.$el.find('.date').text()).toEqual('a few seconds ago');
			expect(view.$el.find('.date').attr('title')).toEqual('July 17, 2015 3:02 AM');
			clock.restore();
		});
		it('displays favorite icon', function() {
			view.setFileInfo(_.extend(testFileInfo, {
				tags: [OC.TAG_FAVORITE]
			}));
			expect(view.$el.find('.favorite img').attr('src'))
				.toEqual(OC.imagePath('core', 'actions/starred'));

			view.setFileInfo(_.extend(testFileInfo, {
				tags: []
			}));
			expect(view.$el.find('.favorite img').attr('src'))
				.toEqual(OC.imagePath('core', 'actions/star'));
		});
		it('displays mime icon', function() {
			// File
			view.setFileInfo(_.extend(testFileInfo, {
				mimetype: 'text/calendar'
			}));

			expect(view.$el.find('.thumbnail').css('background-image'))
				.toContain('filetypes/text-calendar.svg');

			// Folder
			view.setFileInfo(_.extend(testFileInfo, {
				mimetype: 'httpd/unix-directory'
			}));

			expect(view.$el.find('.thumbnail').css('background-image'))
				.toContain('filetypes/folder.svg');
		});
		it('displays thumbnail', function() {
			view.setFileInfo(_.extend(testFileInfo, {
				mimetype: 'text/plain'
			}));

			var expectation = fileListMock.expects('lazyLoadPreview');
			expectation.once();

			view.setFileInfo(testFileInfo);

			fileListMock.verify();
		});
	});
});