|
|
|
@ -1,10 +1,13 @@
|
|
|
|
|
const path = require('path')
|
|
|
|
|
const should = require('should/as-function')
|
|
|
|
|
const sinon = require('sinon')
|
|
|
|
|
const hierarchy = require('../../src/input/hierarchy.js')
|
|
|
|
|
const Album = require('../../src/model/album.js')
|
|
|
|
|
const fixtures = require('../fixtures')
|
|
|
|
|
const Picasa = require('../../src/input/picasa')
|
|
|
|
|
|
|
|
|
|
const DEFAULT_OPTS = { homeAlbumName: 'Home' }
|
|
|
|
|
const DEFAULT_OPTS = { homeAlbumName: 'Home', input: '' }
|
|
|
|
|
const picasaReader = new Picasa()
|
|
|
|
|
|
|
|
|
|
describe('hierarchy', function () {
|
|
|
|
|
beforeEach(function () {
|
|
|
|
@ -14,7 +17,7 @@ describe('hierarchy', function () {
|
|
|
|
|
describe('root album', function () {
|
|
|
|
|
it('creates a root album (homepage) to put all sub-albums', function () {
|
|
|
|
|
const mapper = mockMapper(file => ['all'])
|
|
|
|
|
const home = hierarchy.createAlbums([], mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums([], mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.title).eql('Home')
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
@ -26,7 +29,7 @@ describe('hierarchy', function () {
|
|
|
|
|
|
|
|
|
|
it('defaults the homepage to index.html', function () {
|
|
|
|
|
const mapper = mockMapper(file => ['all'])
|
|
|
|
|
const home = hierarchy.createAlbums([], mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums([], mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.path).eql('index.html')
|
|
|
|
|
should(home.url).eql('index.html')
|
|
|
|
|
})
|
|
|
|
@ -48,7 +51,7 @@ describe('hierarchy', function () {
|
|
|
|
|
fixtures.photo({ path: 'IMG_000002.jpg' })
|
|
|
|
|
]
|
|
|
|
|
const mapper = mockMapper(file => [value])
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.albums.length).eql(0)
|
|
|
|
|
should(home.files.length).eql(2)
|
|
|
|
|
should(home.files[0].filename).eql('IMG_000001.jpg')
|
|
|
|
@ -58,13 +61,33 @@ describe('hierarchy', function () {
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
describe('nested albums', function () {
|
|
|
|
|
it('uses album title from Picasa file if available', function () {
|
|
|
|
|
const files = [
|
|
|
|
|
fixtures.photo({ path: 'IMG_000001.jpg' })
|
|
|
|
|
]
|
|
|
|
|
const mapper = mockMapper(file => ['all'])
|
|
|
|
|
|
|
|
|
|
const opts = { ...DEFAULT_OPTS, input: '/root' }
|
|
|
|
|
|
|
|
|
|
const expectedPath = path.join(opts.input, 'all')
|
|
|
|
|
|
|
|
|
|
const picasa = new Picasa()
|
|
|
|
|
sinon.stub(picasa, 'album').withArgs(expectedPath)
|
|
|
|
|
.returns({ name: 'picasa-name' })
|
|
|
|
|
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, opts, picasa)
|
|
|
|
|
should(home.albums.length).eql(1)
|
|
|
|
|
should(home.albums[0].title).eql('picasa-name')
|
|
|
|
|
should(home.albums[0].files).eql([files[0]])
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('can group media into a single folder', function () {
|
|
|
|
|
const files = [
|
|
|
|
|
fixtures.photo({ path: 'IMG_000001.jpg' }),
|
|
|
|
|
fixtures.photo({ path: 'IMG_000002.jpg' })
|
|
|
|
|
]
|
|
|
|
|
const mapper = mockMapper(file => ['all'])
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.albums.length).eql(1)
|
|
|
|
|
should(home.albums[0].title).eql('all')
|
|
|
|
|
should(home.albums[0].files).eql([files[0], files[1]])
|
|
|
|
@ -76,7 +99,7 @@ describe('hierarchy', function () {
|
|
|
|
|
fixtures.photo({ path: 'two/IMG_000002.jpg' })
|
|
|
|
|
]
|
|
|
|
|
const mapper = mockMapper(file => [path.dirname(file.path)])
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.albums.length).eql(2)
|
|
|
|
|
should(home.albums[0].title).eql('one')
|
|
|
|
|
should(home.albums[0].files).eql([files[0]])
|
|
|
|
@ -90,7 +113,7 @@ describe('hierarchy', function () {
|
|
|
|
|
fixtures.photo({ path: 'IMG_000002.jpg' })
|
|
|
|
|
]
|
|
|
|
|
const mapper = mockMapper(file => ['one/two'])
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.albums.length).eql(1)
|
|
|
|
|
should(home.albums[0].title).eql('one')
|
|
|
|
|
should(home.albums[0].albums.length).eql(1)
|
|
|
|
@ -104,7 +127,7 @@ describe('hierarchy', function () {
|
|
|
|
|
fixtures.photo({ path: 'one/two/IMG_000002.jpg' })
|
|
|
|
|
]
|
|
|
|
|
const mapper = mockMapper(file => [path.dirname(file.path)])
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.albums.length).eql(1)
|
|
|
|
|
should(home.albums[0].title).eql('one')
|
|
|
|
|
should(home.albums[0].files).eql([files[0]])
|
|
|
|
@ -118,7 +141,7 @@ describe('hierarchy', function () {
|
|
|
|
|
fixtures.photo({ path: 'one/IMG_000001.jpg' })
|
|
|
|
|
]
|
|
|
|
|
const mapper = mockMapper(file => ['.', '/', path.dirname(file.path)])
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.files.length).eql(1)
|
|
|
|
|
should(home.files[0].filename).eql(files[0].filename)
|
|
|
|
|
should(home.albums.length).eql(1)
|
|
|
|
@ -132,7 +155,7 @@ describe('hierarchy', function () {
|
|
|
|
|
fixtures.photo({ path: 'one/IMG_000001.jpg' })
|
|
|
|
|
]
|
|
|
|
|
const mapper = mockMapper(file => ['one', path.dirname(file.path)])
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS)
|
|
|
|
|
const home = hierarchy.createAlbums(files, mapper, DEFAULT_OPTS, picasaReader)
|
|
|
|
|
should(home.albums.length).eql(1)
|
|
|
|
|
should(home.albums[0].title).eql('one')
|
|
|
|
|
should(home.albums[0].files).eql(files)
|
|
|
|
|