Splits the rest of the tests without modifying them

This commit is contained in:
Sofiya Tepikin
2020-03-14 14:46:35 +01:00
parent 06edde5340
commit c1959962d0
5 changed files with 953 additions and 935 deletions
+267
View File
@@ -0,0 +1,267 @@
import chai from 'chai'
import dirtyChai from 'dirty-chai'
import cycleModule from '../lib/cycle'
const expect = chai.expect
chai.use(dirtyChai)
describe('getMensesDaysRightAfter', () => {
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 { getMensesDaysRightAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysRightAfter(cycleDaysSortedByDate[3])
expect(days).to.eql([
{
date: '2018-05-03',
bleeding: { value: 1 }
},
{
date: '2018-05-02',
bleeding: { value: 1 }
}
])
})
it('works when the day is not a bleeding day', () => {
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',
bleeding: null
}
]
const { getMensesDaysRightAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysRightAfter(cycleDaysSortedByDate[4])
expect(days).to.eql([
{
date: '2018-05-03',
bleeding: { value: 1 }
},
{
date: '2018-05-02',
bleeding: { value: 1 }
},
{
date: '2018-05-01',
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 { getMensesDaysRightAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysRightAfter(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 { getMensesDaysRightAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysRightAfter(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 { getMensesDaysRightAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysRightAfter(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 { getMensesDaysRightAfter } = cycleModule({
cycleDaysSortedByDate,
bleedingDaysSortedByDate: cycleDaysSortedByDate.filter(d => d.bleeding)
})
const days = getMensesDaysRightAfter(cycleDaysSortedByDate[3])
expect(days).to.eql([
{
date: '2018-05-05',
bleeding: { value: 1 }
},
{
date: '2018-05-03',
bleeding: { value: 1 }
}
])
})
describe('with cycle thresholds', () => {
const maxBreakInBleeding = 3
it('disregards bleeding breaks shorter than maxAllowedBleedingBreak in a bleeding period', () => {
const bleedingDays = [{
date: '2018-05-14',
bleeding: {
value: 2
}
}, {
date: '2018-05-10',
bleeding: {
value: 2
}
}]
const getMensesDaysRightAfter = cycleModule({
bleedingDaysSortedByDate: bleedingDays,
maxBreakInBleeding
}).getMensesDaysRightAfter
const result = getMensesDaysRightAfter(bleedingDays[1])
expect(result).to.eql([bleedingDays[0]])
})
it('counts bleeding breaks longer than maxAllowedBleedingBreak in a bleeding period', () => {
const bleedingDays = [{
date: '2018-05-14',
bleeding: {
value: 2
}
}, {
date: '2018-05-09',
bleeding: {
value: 2
}
}]
const getMensesDaysRightAfter = cycleModule({
bleedingDaysSortedByDate: bleedingDays,
maxBreakInBleeding
}).getMensesDaysRightAfter
const result = getMensesDaysRightAfter(bleedingDays[1])
expect(result).to.eql([])
})
})
})