Skip to content
This repository was archived by the owner on Jan 6, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/dat-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ function createManager ({ multidat, dbPaused }, onupdate) {
return {
create: create,
close: close,
disconnect: multidat.disconnect,
pause: pause,
resume: resume,
togglePause: togglePause
Expand Down
14 changes: 7 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"mirror-folder": "^2.1.0",
"mkdirp": "^0.5.1",
"ms": "^0.7.2",
"multidat": "^5.0.1",
"multidat": "^5.1.0",
"nanologger": "^1.0.2",
"nanomorph": "^5.0.0",
"prettier-bytes": "^1.0.3",
Expand Down
106 changes: 81 additions & 25 deletions tests/dat-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,17 @@ var toilet = require('toiletdb/inmemory')

var Manager = require('../lib/dat-manager')

function setup (cb) {
var db = toilet()
var dbPaused = toilet()
function setup (db, dbPaused, cb) {
if (typeof db === 'function') {
dbPaused = db
db = null
}
if (typeof dbPaused === 'function') {
cb = dbPaused
dbPaused = null
}
if (!db) db = toilet()
if (!dbPaused) dbPaused = toilet()
Multidat(db, function (err, multidat) {
if (err) return cb(err)
cb(null, { multidat, dbPaused })
Expand All @@ -25,25 +33,44 @@ tape('dat-manager', function (t) {
t.throws(Manager.bind(null, { multidat }, onupdate))
var manager = Manager({ multidat, dbPaused }, onupdate)
t.ok(manager)
t.end()
manager.disconnect(function (err) {
t.error(err)
t.end()
})
})
})
t.test('load existing dats', function (t) {
setup(function (err, { multidat, dbPaused }) {
var db = toilet()
var dbPaused = toilet()
setup(db, dbPaused, function (err, { multidat, dbPaused }) {
t.error(err)
function onupdate () {}
var managerA = Manager({ multidat, dbPaused }, onupdate)
managerA.create(`/tmp/${Math.random()}`, function (err) {
var manager = Manager({ multidat, dbPaused }, onupdate)
manager.create(`/tmp/${Math.random()}`, function (err) {
t.error(err)
manager.disconnect(function () {
t.error(err)
secondTime()
})
})
})
function secondTime () {
setup(db, dbPaused, function (err, { multidat, dbPaused }) {
t.error(err)
var manager = Manager({ multidat, dbPaused }, onupdate)
var ended = false
function onupdate (err, dats) {
if (t.ended || dats.length !== 1) return
if (ended || dats.length !== 1) return
ended = true
t.error(err)
t.equal(dats.length, 1)
t.end()
t.equal(dats.length, 1, 'The dat should exist the second time around')
manager.disconnect(function (err) {
t.error(err)
t.end()
})
}
Manager({ multidat, dbPaused }, onupdate)
})
})
}
})
})

Expand All @@ -59,20 +86,27 @@ tape('dat-manager', function (t) {
t.throws(manager.create.bind(manager, dir, {}))
manager.create(dir, {}, function () {})
manager.create(dir, function () {})
t.end()
manager.disconnect(function (err) {
t.error(err)
t.end()
})
})
})
t.test('create a dat', function (t) {
setup(function (err, { multidat, dbPaused }) {
t.error(err)
var ended = false
function onupdate (err, dats) {
if (t.ended) return
if (ended) return
t.error(err)
var dat = dats[0]
if (dat && dat.network && dat.metadata && dat.metadata.title && dat.stats && typeof dat.progress === 'number') {
t.equal(dat.metadata.title, basename)
t.equal(dat.metadata.author, 'Anonymous')
t.end()
manager.disconnect(function (err) {
t.error(err)
t.end()
})
}
}
var manager = Manager({ multidat, dbPaused }, onupdate)
Expand All @@ -88,12 +122,13 @@ tape('dat-manager', function (t) {

t.test('.close(key, cb)', function (t) {
t.test('close a dat', function (t) {
t.plan(5)
t.plan(6)
setup(function (err, { multidat, dbPaused }) {
t.error(err, 'setup')
var closing = false
var ended = false
function onupdate (err, dats) {
if (!t.ended && closing && dats.length === 0) {
if (!ended && closing && dats.length === 0) {
t.error(err)
t.ok(true, 'onupdate')
}
Expand All @@ -104,6 +139,10 @@ tape('dat-manager', function (t) {
closing = true
manager.close(dat.key, function (err) {
t.error(err, 'dat closed')
ended = true
manager.disconnect(function (err) {
t.error(err)
})
})
})
})
Expand All @@ -120,7 +159,10 @@ tape('dat-manager', function (t) {
var dat = dats[0]
if (!dat) return
t.notOk(dat.network)
t.end()
manager.disconnect(function (err) {
t.error(err)
t.end()
})
}
var manager = Manager({ multidat, dbPaused }, onupdate)
manager.create(`/tmp/${Math.random()}`, function (err, dat) {
Expand All @@ -138,12 +180,17 @@ tape('dat-manager', function (t) {
setup(function (err, { multidat, dbPaused }) {
t.error(err)
var resuming = false
var ended = false
function onupdate (err, dats) {
if (!dats.length || !resuming || t.ended) return
if (!dats.length || !resuming || ended) return
ended = true
t.error(err)
var dat = dats[0]
t.ok(dat.network)
t.end()
manager.disconnect(function (err) {
t.error(err)
t.end()
})
}
var manager = Manager({ multidat, dbPaused }, onupdate)
manager.create(`/tmp/${Math.random()}`, function (err, dat) {
Expand All @@ -164,13 +211,17 @@ tape('dat-manager', function (t) {
t.test('pause a dat', function (t) {
setup(function (err, { multidat, dbPaused }) {
t.error(err)
var ended = false
function onupdate (err, dats) {
if (!dats.length || t.ended) return
if (!dats.length || ended) return
ended = true
t.error(err)
var dat = dats[0]
if (!dat) return
t.notOk(dat.network)
t.end()
manager.disconnect(function (err) {
t.error(err)
t.end()
})
}
var manager = Manager({ multidat, dbPaused }, onupdate)
manager.create(`/tmp/${Math.random()}`, function (err, dat) {
Expand All @@ -185,12 +236,17 @@ tape('dat-manager', function (t) {
setup(function (err, { multidat, dbPaused }) {
t.error(err)
var resuming = false
var ended = false
function onupdate (err, dats) {
if (!dats.length || !resuming || t.ended) return
if (!dats.length || !resuming || ended) return
ended = true
t.error(err)
var dat = dats[0]
t.ok(dat.network)
t.end()
manager.disconnect(function (err) {
t.error(err)
t.end()
})
}
var manager = Manager({ multidat, dbPaused }, onupdate)
manager.create(`/tmp/${Math.random()}`, function (err, dat) {
Expand Down