245 lines
11 KiB
TypeScript
245 lines
11 KiB
TypeScript
import 'typings-test'
|
|
import * as smartfile from '../dist/index'
|
|
import beautylog = require('beautylog')
|
|
let gulp = require('gulp')
|
|
let gFunction = require('gulp-function')
|
|
import path = require('path')
|
|
import * as should from 'should'
|
|
let vinyl = require('vinyl')
|
|
|
|
describe('smartfile'.yellow, function () {
|
|
describe('.fs'.yellow, function () {
|
|
describe('.fileExistsSync'.yellow, function () {
|
|
it('should return an accurate boolean', function () {
|
|
should(smartfile.fs.fileExistsSync('./test/mytest.json')).be.true()
|
|
should(smartfile.fs.fileExistsSync('./test/notthere.json')).be.false()
|
|
})
|
|
})
|
|
describe('.fileExists'.yellow, function () {
|
|
it('should return a working promise', function () {
|
|
should(smartfile.fs.fileExists('./test/mytest.json')).be.Promise()
|
|
should(smartfile.fs.fileExists('./test/mytest.json')).be.fulfilled()
|
|
should(smartfile.fs.fileExists('./test/notthere.json')).not.be.fulfilled()
|
|
})
|
|
})
|
|
describe('.listFoldersSync()', function () {
|
|
it('should get the file type from a string', function () {
|
|
should(smartfile.fs.listFoldersSync('./test/')).containDeep(['testfolder'])
|
|
should(smartfile.fs.listFoldersSync('./test/')).not.containDeep(['notExistentFolder'])
|
|
})
|
|
})
|
|
describe('.listFolders()', function () {
|
|
it('should get the file type from a string', function (done) {
|
|
smartfile.fs.listFolders('./test/')
|
|
.then(function (folderArrayArg) {
|
|
should(folderArrayArg).containDeep(['testfolder'])
|
|
should(folderArrayArg).not.containDeep(['notExistentFolder'])
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
describe('.listFilesSync()', function () {
|
|
it('should get the file type from a string', function () {
|
|
should(smartfile.fs.listFilesSync('./test/')).containDeep(['mytest.json'])
|
|
should(smartfile.fs.listFilesSync('./test/')).not.containDeep(['notExistentFile'])
|
|
should(smartfile.fs.listFilesSync('./test/', /mytest\.json/)).containDeep(['mytest.json'])
|
|
should(smartfile.fs.listFilesSync('./test/', /mytests.json/)).not.containDeep(['mytest.json'])
|
|
})
|
|
})
|
|
describe('.listFiles()', function () {
|
|
it('should get the file type from a string', function (done) {
|
|
smartfile.fs.listFiles('./test/')
|
|
.then(function (folderArrayArg) {
|
|
should(folderArrayArg).containDeep(['mytest.json'])
|
|
should(folderArrayArg).not.containDeep(['notExistentFile'])
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
describe('.listFileTree()', function () {
|
|
it('should get a file tree', function (done) {
|
|
smartfile.fs.listFileTree(path.resolve('./test/'), '**/*.txt')
|
|
.then(function (folderArrayArg) {
|
|
should(folderArrayArg).containDeep(['testfolder/testfile1.txt'])
|
|
should(folderArrayArg).not.containDeep(['mytest.json'])
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
describe('.copy()'.yellow, function () {
|
|
it('should copy a directory', function () {
|
|
smartfile.fs.copy('./test/testfolder/', './test/temp/')
|
|
})
|
|
it('should copy a file', function () {
|
|
smartfile.fs.copy('./test/mytest.yaml', './test/temp/')
|
|
})
|
|
it('should copy a file and rename it', function () {
|
|
smartfile.fs.copy('./test/mytest.yaml', './test/temp/mytestRenamed.yaml')
|
|
})
|
|
})
|
|
describe('.remove()', function () {
|
|
it('should remove an entire directory', function () {
|
|
|
|
})
|
|
it('smartfile.fs.remove -> should remove single files', function (done) {
|
|
smartfile.fs.remove('./test/temp/mytestRenamed.yaml')
|
|
.then(() => { done() })
|
|
})
|
|
it('smartfile.fs.removeSync -> should remove single files synchronouly',function() {
|
|
smartfile.fs.removeSync('./test/temp/testfile1.txt')
|
|
should(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).be.false()
|
|
})
|
|
it('smartfile.fs.removeMany -> should remove and array of files',function(done) {
|
|
smartfile.fs.removeMany(['./test/temp/testfile1.txt','./test/temp/testfile2.txt']).then(() => {
|
|
should(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).be.false()
|
|
should(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).be.false()
|
|
done()
|
|
})
|
|
})
|
|
it('smartfile.fs.removeManySync -> should remove and array of single files synchronouly',function() {
|
|
smartfile.fs.removeManySync(['./test/temp/testfile1.txt','./test/temp/testfile2.txt'])
|
|
should(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).be.false()
|
|
should(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).be.false()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('.interpreter', function () {
|
|
describe('.filetype()', function () {
|
|
it('should get the file type from a string', function () {
|
|
should(smartfile.interpreter.filetype('./somefolder/data.json')).equal('json')
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('.fs'.yellow, function () {
|
|
describe('toGulpStreamSync() and toGulpDestSync', function () {
|
|
it('should produce a gulp stream', function (done) {
|
|
smartfile.fs.toGulpStreamSync('./test/my*')
|
|
.pipe(smartfile.fs.toGulpDestSync('./test/temp/'))
|
|
.pipe(gFunction(done, 'atEnd'))
|
|
})
|
|
})
|
|
describe('.toObjectSync()'.yellow, function () {
|
|
it('should read an ' + '.yaml'.blue + ' file to an object', function () {
|
|
let testData = smartfile.fs.toObjectSync('./test/mytest.yaml')
|
|
should(testData).have.property('key1', 'this works')
|
|
should(testData).have.property('key2', 'this works too')
|
|
|
|
})
|
|
it('should state unknown file type for unknown file types', function () {
|
|
let testData = smartfile.fs.toObjectSync('./test/mytest.txt')
|
|
})
|
|
it('should read an ' + '.json'.blue + ' file to an object', function () {
|
|
let testData = smartfile.fs.toObjectSync('./test/mytest.json')
|
|
should(testData).have.property('key1', 'this works')
|
|
should(testData).have.property('key2', 'this works too')
|
|
|
|
})
|
|
})
|
|
describe('.toStringSync()'.yellow, function () {
|
|
it('should read a file to a string', function () {
|
|
should.equal(
|
|
smartfile.fs.toStringSync('./test/mytest.txt'),
|
|
'Some TestString &&%$'
|
|
)
|
|
})
|
|
})
|
|
describe('.toVinylSync'.yellow, function () {
|
|
it('should read an ' + '.json OR .yaml'.blue + ' file to an ' + 'vinyl file object'.cyan, function () {
|
|
let testData = smartfile.fs.toVinylSync('./test/mytest.json')
|
|
should(vinyl.isVinyl(testData)).be.true()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('.memory', function () {
|
|
describe('.toGulpStream()', function () {
|
|
it('should produce a valid gulp stream', function () {
|
|
let localArray = ['test1', 'test2', 'test3']
|
|
smartfile.memory.toGulpStream(localArray)
|
|
.pipe(gulp.dest('./test/temp/'))
|
|
})
|
|
})
|
|
describe('toVinylFileSync()', function () {
|
|
it('should produce a vinylFile', function () {
|
|
let localString = 'myString'
|
|
let localOptions = { filename: 'vinylfile2', base: '/someDir' }
|
|
should(smartfile.memory.toVinylFileSync(localString, localOptions) instanceof vinyl).be.true()
|
|
})
|
|
})
|
|
describe('toVinylArraySync()', function () {
|
|
it('should produce a an array of vinylfiles', function () {
|
|
let localStringArray = ['string1', 'string2', 'string3']
|
|
let localOptions = { filename: 'vinylfile2', base: '/someDir' }
|
|
let testResult = smartfile.memory.toVinylArraySync(localStringArray, localOptions)
|
|
should(testResult).be.Array()
|
|
should(testResult.length === 3).be.true()
|
|
for (let myKey in testResult) {
|
|
should(testResult[myKey] instanceof vinyl).be.true()
|
|
}
|
|
})
|
|
})
|
|
describe('toStringSync()', function () {
|
|
it('should produce a String from vinyl file', function () {
|
|
let localString = smartfile.memory.toStringSync(new vinyl({
|
|
base: '/',
|
|
path: '/test.txt',
|
|
contents: new Buffer('myString')
|
|
}))
|
|
should(localString).equal('myString')
|
|
})
|
|
})
|
|
describe('toFs()', function () {
|
|
it('should write a file to disk and return a promise', function (done) {
|
|
let localString = 'myString'
|
|
smartfile.memory.toFs(
|
|
localString,
|
|
path.join(process.cwd(), './test/temp/testMemToFs.txt')
|
|
).then(done)
|
|
})
|
|
})
|
|
describe('toFsSync()', function () {
|
|
it('should write a file to disk and return true if successfull', function () {
|
|
let localString = 'myString'
|
|
smartfile.memory.toFsSync(
|
|
localString,
|
|
path.join(process.cwd(), './test/temp/testMemToFsSync.txt')
|
|
)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('.remote', function () {
|
|
describe('toGulpStreamSync()', function () {
|
|
it('should produce a gulp stream', function (done) {
|
|
this.timeout(5000)
|
|
smartfile.remote.toGulpStreamSync(
|
|
'mytest.txt', 'https://raw.githubusercontent.com/pushrocks/smartfile/master/test/'
|
|
).pipe(smartfile.fs.toGulpDestSync('./test/temp/'))
|
|
.pipe(gFunction(done, 'atEnd'))
|
|
})
|
|
})
|
|
describe('.toString()', function () {
|
|
it('should load a remote file to a variable', function (done) {
|
|
this.timeout(5000)
|
|
smartfile.remote.toString(
|
|
'https://raw.githubusercontent.com/pushrocks/smartfile/master/test/mytest.txt'
|
|
).then(function (responseString) {
|
|
should.equal(responseString, 'Some TestString &&%$')
|
|
done()
|
|
})
|
|
})
|
|
it('should reject a Promise when the link is false', function (done) {
|
|
this.timeout(10000)
|
|
smartfile.remote.toString('https://push.rocks/doesnotexist.txt')
|
|
.then(function () {
|
|
throw new Error('this test should not be resolved')
|
|
}, function () {
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|