Add getMensesDaysAfter

This commit is contained in:
Julia Friesel
2018-10-23 17:38:26 +02:00
parent 2b2e24bb5c
commit c2c0e0c6a2
2 changed files with 204 additions and 9 deletions
+172
View File
@@ -827,4 +827,176 @@ describe('isMensesStart', () => {
const start = isMensesStart(cycleDaysSortedByDate[2])
expect(start).to.be.true()
})
})
describe('getMensesDaysAfter', () => {
it('works for simple menses start', () => {
const cycleDaysSortedByDate = [
{
date: '2018-05-04',
},
{
date: '2018-05-03',
bleeding: { value: 1 }
},
{
date: '2018-05-02',
bleeding: { value: 1 }
},
{
date: '2018-05-01',
bleeding: { value: 1 }
},
{
date: '2018-04-30',
}
]
const { getMensesDaysAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysAfter(cycleDaysSortedByDate[3])
expect(days).to.eql([
{
date: '2018-05-03',
bleeding: { value: 1 }
},
{
date: '2018-05-02',
bleeding: { value: 1 }
}
])
})
it('ignores excluded values', () => {
const cycleDaysSortedByDate = [
{
date: '2018-05-04',
},
{
date: '2018-05-03',
bleeding: { value: 1 }
},
{
date: '2018-05-02',
bleeding: { value: 1, exclude: true }
},
{
date: '2018-05-01',
bleeding: { value: 1 }
},
{
date: '2018-04-30',
}
]
const { getMensesDaysAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysAfter(cycleDaysSortedByDate[3])
expect(days).to.eql([
{
date: '2018-05-03',
bleeding: { value: 1 }
}
])
})
it('returns empty when there are no bleeding days after', () => {
const cycleDaysSortedByDate = [
{
date: '2018-05-04',
},
{
date: '2018-05-03',
},
{
date: '2018-05-02',
},
{
date: '2018-05-01',
bleeding: { value: 1 }
},
{
date: '2018-04-30',
}
]
const { getMensesDaysAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysAfter(cycleDaysSortedByDate[3])
expect(days).to.eql([])
})
it('returns empty when there are no bleeding days within threshold', () => {
const cycleDaysSortedByDate = [
{
date: '2018-05-04',
bleeding: { value: 1 }
},
{
date: '2018-05-03',
},
{
date: '2018-05-02',
},
{
date: '2018-05-01',
bleeding: { value: 1 }
},
{
date: '2018-04-30',
}
]
const { getMensesDaysAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysAfter(cycleDaysSortedByDate[3])
expect(days).to.eql([])
})
it('includes days within the treshold', () => {
const cycleDaysSortedByDate = [
{
date: '2018-05-04',
},
{
date: '2018-05-05',
bleeding: { value: 1 }
},
{
date: '2018-05-03',
bleeding: { value: 1 }
},
{
date: '2018-05-01',
bleeding: { value: 1 }
},
{
date: '2018-04-30',
}
]
const { getMensesDaysAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysAfter(cycleDaysSortedByDate[3])
expect(days).to.eql([
{
date: '2018-05-05',
bleeding: { value: 1 }
},
{
date: '2018-05-03',
bleeding: { value: 1 }
}
])
})
})