const fixtures = require('webtorrent-fixtures') const test = require('tape') const WebTorrent = require('../../') const MemoryChunkStore = require('memory-chunk-store') test('client.add: emit torrent events in order', function (t) { t.plan(6) const client1 = new WebTorrent({ dht: false, tracker: false }) const client2 = new WebTorrent({ dht: false, tracker: false }) client1.on('error', function (err) { t.fail(err) }) client1.on('warning', function (err) { t.fail(err) }) client2.on('error', function (err) { t.fail(err) }) client2.on('warning', function (err) { t.fail(err) }) // Start seeding client2.seed(fixtures.leaves.content, { name: 'Leaves of Grass by Walt Whitman.epub', announce: [] }) client2.on('listening', function () { // Start downloading const torrent = client1.add(fixtures.leaves.parsedTorrent.infoHash, { store: MemoryChunkStore }) // Manually connect peers torrent.addPeer('127.0.0.1:' + client2.address().port) let order = 0 torrent.on('infoHash', function () { t.equal(++order, 1) }) torrent.on('metadata', function () { t.equal(++order, 2) }) torrent.on('ready', function () { t.equal(++order, 3) }) torrent.on('done', function () { t.equal(++order, 4) client1.destroy(function (err) { t.error(err, 'client 1 destroyed') }) client2.destroy(function (err) { t.error(err, 'client 2 destroyed') }) }) }) }) test('client.seed: emit torrent events in order', function (t) { t.plan(5) const client = new WebTorrent({ dht: false, tracker: false }) client.on('error', function (err) { t.fail(err) }) client.on('warning', function (err) { t.fail(err) }) const torrent = client.seed(fixtures.leaves.content) let order = 0 torrent.on('infoHash', function () { t.equal(++order, 1) }) torrent.on('metadata', function () { t.equal(++order, 2) }) torrent.on('ready', function () { t.equal(++order, 3) }) torrent.on('done', function () { t.equal(++order, 4) client.destroy(function (err) { t.error(err, 'client destroyed') }) }) })