expect = require('chai').expect _ = require('lodash') async = require('async') fs = require('fs') fsUtils = require('./fs-utils/fs-utils') rimraf = require('rimraf') dataPrefix = require('./data-prefix') config = require('../config') mock = require('../../../tests/utils/mock') PREFIXES = main: config.dataPrefix new: "#{config.dataPrefix}-new" invalid: { path: '/abc' } describe 'DataPrefix:', -> beforeEach -> mock.fs.init() afterEach -> mock.fs.restore() describe 'given no prefix', -> beforeEach -> dataPrefix.clear() describe '#get()', -> it 'should return nothing', -> expect(dataPrefix.get()).to.not.exist describe '#set()', -> beforeEach (done) -> rimraf(PREFIXES.main, done) it 'should be able to set a prefix', (done) -> expect(dataPrefix.get()).to.not.exist dataPrefix.set PREFIXES.main, (error) -> expect(error).to.not.exist expect(dataPrefix.get()).to.equal(PREFIXES.main) done() it 'should throw an error if passing an invalid path', (done) -> dataPrefix.set PREFIXES.invalid, (error) -> expect(error).to.be.an.instanceof(Error) done() it 'should create the directory if it doesn\'t exist', (done) -> async.waterfall [ (callback) -> fs.exists PREFIXES.main, (exists) -> return callback(null, exists) (exists, callback) -> expect(exists).to.be.false dataPrefix.set(PREFIXES.main, callback) (callback) -> fsUtils.isDirectory(PREFIXES.main, callback) (isDirectory, callback) -> expect(isDirectory).to.be.true return callback() ], (error) -> expect(error).to.not.exist done() describe 'given a prefix', -> beforeEach (done) -> dataPrefix.set(PREFIXES.main, done) describe '#get()', -> it 'should return the saved prefix', -> expect(dataPrefix.get()).to.equal(PREFIXES.main) describe '#set()', -> it 'should be able to override the prefix', (done) -> expect(dataPrefix.get()).to.equal(PREFIXES.main) dataPrefix.set PREFIXES.new, (error) -> expect(error).to.not.exist expect(dataPrefix.get()).to.equal(PREFIXES.new) done() describe '#clear()', -> it 'should clear the prefix', -> expect(dataPrefix.get()).to.equal(PREFIXES.main) dataPrefix.clear() expect(dataPrefix.get()).to.not.exist