| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import BasicReferenceIndex from '@/features/ide-react/references/basic-reference-index'
- import { expect } from 'chai'
- const entry1 = `@article{sample2023,
- author = {John Doe},
- title = {Sample Title},
- journal = {Sample Journal},
- year = {2023},
- date = {2023-01-01}
- }`
- const entry2 = `@book{example2022,
- author = {Jane Smith},
- title = {Example Book},
- journal = {Example Journal},
- year = {2022}
- date = {2022-05-15}
- }`
- const entry3 = `@inproceedings{test2021,
- author = {Alice Johnson},
- title = {Test Conference Paper},
- booktitle = {Test Conference},
- year = {2021},
- date = {2021-10-10}
- }
- `
- const fileWithMultipleEntries = `${entry1}\n${entry2}`
- const addEntry1 = { path: 'file1.bib', content: entry1 }
- const addEntry2 = { path: 'file2.bib', content: entry2 }
- const addEntry3 = { path: 'file3.bib', content: entry3 }
- const addFileWithMultipleEntries = {
- path: 'file5.bib',
- content: fileWithMultipleEntries,
- }
- const deleteEntry2 = 'file2.bib'
- describe('BasicReferenceIndex', function () {
- beforeEach(function () {
- this.index = new BasicReferenceIndex()
- })
- it('starts with an empty index', function () {
- expect(this.index.fileIndex.size).to.equal(0)
- expect(this.index.keys.size).to.equal(0)
- })
- describe('updateIndex', function () {
- it('Adds entry to index and keys', function () {
- const changes = { updates: [addEntry1], deletes: [] }
- const keys = this.index.updateIndex(changes)
- expect(this.index.fileIndex.size).to.equal(1)
- expect(this.index.fileIndex.get('file1.bib')).to.deep.equal(
- new Set(['sample2023'])
- )
- expect(keys).to.deep.equal(new Set(['sample2023']))
- })
- it("doesn't forget existing keys when adding new entries", function () {
- const changes = { updates: [addEntry1, addEntry2], deletes: [] }
- const keys = this.index.updateIndex(changes)
- expect(this.index.fileIndex.size).to.equal(2)
- expect(keys).to.deep.equal(new Set(['sample2023', 'example2022']))
- const additionalChanges = { updates: [addEntry3], deletes: [] }
- const updatedKeys = this.index.updateIndex(additionalChanges)
- expect(this.index.fileIndex.size).to.equal(3)
- expect(updatedKeys).to.deep.equal(
- new Set(['sample2023', 'example2022', 'test2021'])
- )
- })
- it('removes keys when files are deleted', function () {
- const changes = {
- updates: [addEntry1, addEntry2, addEntry3],
- deletes: [],
- }
- this.index.updateIndex(changes)
- expect(this.index.fileIndex.size).to.equal(3)
- expect(this.index.keys).to.deep.equal(
- new Set(['sample2023', 'example2022', 'test2021'])
- )
- const deletionChanges = { updates: [], deletes: [deleteEntry2] }
- const keysAfterDeletion = this.index.updateIndex(deletionChanges)
- expect(this.index.fileIndex.size).to.equal(2)
- expect(keysAfterDeletion).to.deep.equal(
- new Set(['sample2023', 'test2021'])
- )
- })
- it('handles multiple entries in a single file', function () {
- const changes = { updates: [addFileWithMultipleEntries], deletes: [] }
- const keys = this.index.updateIndex(changes)
- expect(this.index.fileIndex.size).to.equal(1)
- expect(this.index.fileIndex.get('file5.bib')).to.deep.equal(
- new Set(['sample2023', 'example2022'])
- )
- expect(keys).to.deep.equal(new Set(['sample2023', 'example2022']))
- })
- })
- })
|