Skip to content

Commit

Permalink
More automated tests (#152)
Browse files Browse the repository at this point in the history
* started writing a couple of automated tests to chip in, working towards the 100% test coverage goal

* added a couple more tests and eslint fixes

* added all the cases for the basename

* better test description

* added the plan for the subtest too in the dicer-write.test.js

* PR review: removed the t.end() in dicer-write.test.js

---------

Co-authored-by: Giovanni Bucci <giovanni.bucci@nearform.com>
  • Loading branch information
puskin94 and Giovanni Bucci committed May 2, 2024
1 parent 0614584 commit e62384c
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 0 deletions.
28 changes: 28 additions & 0 deletions test/basename.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
'use strict'

const { test } = require('tap')
const basename = require('../lib/utils/basename')

test('basename', (t) => {
const testCases = [
{ description: 'returns an empty string if the path is not a string', path: {}, expected: '' },
{ description: 'returns an empty string if the path includes a \' and the char after is a .', path: 'path\\.', expected: '' },
{ description: 'returns an empty string if the path includes a / and the char after is a .', path: 'path/.', expected: '' },
{ description: 'returns an empty string if the path includes a \' and the chars after are a ..', path: 'path\\..', expected: '' },
{ description: 'returns an empty string if the path includes a / and the chars after are a ..', path: 'path/..', expected: '' },
{ description: 'returns the path if the path includes a \' and the rest is anything other than dots', path: 'path\\subpath', expected: 'subpath' },
{ description: 'returns the path if the path includes a / and the rest is anything other than dots', path: 'path/subpath', expected: 'subpath' },
{ description: 'returns an empty string if the path is a .', path: '.', expected: '' },
{ description: 'returns an empty string if the path is a ..', path: '..', expected: '' },
{ description: 'returns the path if the path is anything other than dots', path: 'subpath', expected: 'subpath' }
]

t.plan(testCases.length)

testCases.forEach((testCase, index) => {
t.test(testCase.description, t => {
t.plan(1)
t.equal(basename(testCase.path), testCase.expected, `Test case ${index + 1}`)
})
})
})
17 changes: 17 additions & 0 deletions test/busboy-emit.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use strict'

const Busboy = require('../lib/main')
const { test } = require('tap')

test('busboy, emit', t => {
t.plan(1)

t.test('returns undefined when the event is called a second time and the busboy was already finished', t => {
const busboy = new Busboy({ headers: { 'content-type': 'application/x-www-form-urlencoded' } })
busboy._finished = true
busboy.emit('finish')

t.equal(busboy.emit('finish'), undefined)
t.end()
})
})
19 changes: 19 additions & 0 deletions test/dicer-write.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
'use strict'

const { test } = require('tap')
const { Dicer } = require('../lib/main')

test('dicer _write method', t => {
t.plan(1)

t.test('calls the callback cb() when headerFirst is set and all the data have been written', t => {
t.plan(1)
const dicer = new Dicer({ headerFirst: true })

dicer._write(Buffer.from('Content-Type: text/plain'), null, () => {
dicer._write(Buffer.from('Content-Type: text/plain'), null, () => {
t.pass('write method called')
})
})
})
})
16 changes: 16 additions & 0 deletions test/multipart-constructor.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
'use strict'

const Multipart = require('../lib/types/multipart')
const Busboy = require('../lib/main')
const { test } = require('tap')

test('multipart constructor', t => {
t.plan(1)

t.test('throws if the boundary is not a string', t => {
const busboy = new Busboy({ headers: { 'content-type': 'application/x-www-form-urlencoded' } })

t.throws(() => new Multipart(busboy, { boundary: 123 }), new Error('Multipart: Boundary not found'))
t.end()
})
})

0 comments on commit e62384c

Please sign in to comment.