-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinvoiceFilter.js
More file actions
39 lines (31 loc) · 830 Bytes
/
invoiceFilter.js
File metadata and controls
39 lines (31 loc) · 830 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// This example requires the use of a test double for InvoiceIo.
/**
* Requirement: Low value invoices
* The program must return all the issued invoices with values smaller than 100.
* The collection of invoices can be found in a json file.
*/
class InvoiceFilter {
constructor (invoiceIo) {
this.invoiceIo = invoiceIo
}
lowValueInvoices () {
return this.invoiceIo.invoices().filter(invoice => invoice.value < 100)
}
}
class InvoiceIo {
constructor () {
this.invoices = require('./invoices.json') // Missing file
}
invoices () {
return this.invoices
}
}
class Invoice {
constructor (description, value) {
this.description = description
this.value = value
}
}
module.exports.InvoiceFilter = InvoiceFilter
module.exports.InvoiceIo = InvoiceIo
module.exports.Invoice = Invoice