rozetko
5 years ago
committed by
GitHub
8 changed files with 131 additions and 57 deletions
@ -0,0 +1,54 @@
|
||||
import { TEST_ANALYTIC_UNIT_ID } from '../utils_for_tests/analytic_units'; |
||||
import { buildSegments, clearSegmentsDB, convertSegmentsToTimeRanges } from '../utils_for_tests/segments'; |
||||
|
||||
import * as Segment from '../../src/models/segment_model'; |
||||
|
||||
afterEach(async () => { |
||||
await clearSegmentsDB(); |
||||
}); |
||||
|
||||
describe('mergeAndInsertSegments', function() { |
||||
const initialSegments = buildSegments([[0, 1], [2, 3], [4, 5]]); |
||||
|
||||
beforeEach(async () => { |
||||
await Segment.mergeAndInsertSegments(initialSegments); |
||||
}); |
||||
|
||||
it('Segments should be merged before insertion', async function() { |
||||
const segmentsToInsert = buildSegments([[1, 2]]); |
||||
await Segment.mergeAndInsertSegments(segmentsToInsert); |
||||
|
||||
const actualSegments = await Segment.findMany(TEST_ANALYTIC_UNIT_ID, {}); |
||||
const actualRanges = convertSegmentsToTimeRanges(actualSegments); |
||||
|
||||
expect(actualRanges).toEqual([[0, 3], [4, 5]]); |
||||
}); |
||||
}); |
||||
|
||||
describe('findIntersectedSegments', () => { |
||||
const initialSegments = buildSegments([[0, 3], [5, 6], [10, 13]]); |
||||
|
||||
beforeEach(async () => { |
||||
await Segment.mergeAndInsertSegments(initialSegments); |
||||
}); |
||||
|
||||
it('should find intersected segments', async () => { |
||||
const testCases = [ |
||||
{ from: 1, to: 4, expected: [[0, 3]] }, |
||||
{ from: 11, to: 12, expected: [[10, 13]] }, |
||||
{ from: 6, to: 10, expected: [[5, 6], [10, 13]] }, |
||||
{ from: 16, to: 17, expected: [] }, |
||||
{ from: 5, expected: [[5, 6], [10, 13]] }, |
||||
{ to: 5, expected: [[0, 3], [5, 6]] }, |
||||
{ expected: [[0, 3], [5, 6], [10, 13]] } |
||||
]; |
||||
|
||||
for(let testCase of testCases) { |
||||
const foundSegments = await Segment.findIntersectedSegments( |
||||
TEST_ANALYTIC_UNIT_ID, testCase.from, testCase.to |
||||
); |
||||
const foundRanges = convertSegmentsToTimeRanges(foundSegments); |
||||
expect(foundRanges).toEqual(testCase.expected); |
||||
} |
||||
}); |
||||
}); |
@ -0,0 +1,3 @@
|
||||
import * as AnalyticUnit from '../../src/models/analytic_units'; |
||||
|
||||
export const TEST_ANALYTIC_UNIT_ID: AnalyticUnit.AnalyticUnitId = 'testid'; |
Loading…
Reference in new issue