X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/939593fbdd53bcca1c9c5e2247b3f279fdcf1523..c69c6d43021b29186717ad30bea95cf50ee8c1e6:/src/models/vocabulary.test.ts diff --git a/src/models/vocabulary.test.ts b/src/models/vocabulary.test.ts index 582af0ecd4..f4ba64e5ad 100644 --- a/src/models/vocabulary.test.ts +++ b/src/models/vocabulary.test.ts @@ -52,6 +52,14 @@ describe('Vocabulary', () => { labels: [] } } + }, + automation: { + strict: true, + labels: [], + values: { + upload: { labels: [] }, + results: { labels: [] }, + } } } } @@ -66,6 +74,7 @@ describe('Vocabulary', () => { {id: "IDKEYANIMALS", label: "Creature"}, {id: "IDKEYCOMMENT", label: "IDKEYCOMMENT"}, {id: "IDKEYSIZES", label: "Sizes"}, + {id: "automation", label: "automation"}, ]); }); @@ -73,19 +82,21 @@ describe('Vocabulary', () => { const preferredTagKeys = Vocabulary.getPreferredTags(vocabulary); // Alphabetically ordered by label expect(preferredTagKeys).toEqual([ - {id: "IDKEYANIMALS", label: "Animal", description: "Animal"}, - {id: "IDKEYCOMMENT", label: "IDKEYCOMMENT"}, - {id: "IDKEYSIZES", label: "Sizes", description: "Sizes"}, + {id: "IDKEYANIMALS", label: "Animal", synonyms: []}, + {id: "IDKEYCOMMENT", label: "IDKEYCOMMENT", synonyms: []}, + {id: "IDKEYSIZES", label: "Sizes", synonyms: []}, + {id: "automation", label: "automation", synonyms: []}, ]); }); - it('returns the list of preferred tag keys with synonyms', () => { - const preferredTagKeys = Vocabulary.getPreferredTags(vocabulary, true); + it('returns the list of preferred tag keys with matching synonyms', () => { + const preferredTagKeys = Vocabulary.getPreferredTags(vocabulary, 'creat'); // Alphabetically ordered by label expect(preferredTagKeys).toEqual([ - {id: "IDKEYANIMALS", label: "Animal", description: "Animal (Creature, Beast)"}, - {id: "IDKEYCOMMENT", label: "IDKEYCOMMENT"}, - {id: "IDKEYSIZES", label: "Sizes", description: "Sizes"}, + {id: "IDKEYANIMALS", label: "Animal", synonyms: ["Creature"]}, + {id: "IDKEYCOMMENT", label: "IDKEYCOMMENT", synonyms: []}, + {id: "IDKEYSIZES", label: "Sizes", synonyms: []}, + {id: "automation", label: "automation", synonyms: []}, ]); }); @@ -101,28 +112,40 @@ describe('Vocabulary', () => { {id: "IDVALSIZES2", label: "Medium"}, {id: "IDVALSIZES1", label: "S"}, {id: "IDVALSIZES1", label: "Small"}, - ]) + ]); + // Let's try a key that doesn't have any labels + const tagValues2 = Vocabulary.getTagValues('automation', vocabulary); + expect(tagValues2).toEqual([ + {id: "results", label: "results"}, + {id: "upload", label: "upload"}, + ]); }); it('returns the preferred tag values for a given key', () => { const preferredTagValues = Vocabulary.getPreferredTagValues('IDKEYSIZES', vocabulary); // Alphabetically ordered by label expect(preferredTagValues).toEqual([ - {id: "IDVALSIZES4", label: "IDVALSIZES4"}, - {id: "IDVALSIZES3", label: "Large", description: "Large"}, - {id: "IDVALSIZES2", label: "Medium", description: "Medium"}, - {id: "IDVALSIZES1", label: "Small", description: "Small"}, - ]) + {id: "IDVALSIZES4", label: "IDVALSIZES4", synonyms: []}, + {id: "IDVALSIZES3", label: "Large", synonyms: []}, + {id: "IDVALSIZES2", label: "Medium", synonyms: []}, + {id: "IDVALSIZES1", label: "Small", synonyms: []}, + ]); + // Let's try a key that doesn't have any labels + const preferredTagValues2 = Vocabulary.getPreferredTagValues('automation', vocabulary); + expect(preferredTagValues2).toEqual([ + {id: "results", label: "results", synonyms: []}, + {id: "upload", label: "upload", synonyms: []}, + ]); }); - it('returns the preferred tag values with synonyms for a given key', () => { - const preferredTagValues = Vocabulary.getPreferredTagValues('IDKEYSIZES', vocabulary, true); + it('returns the preferred tag values with matching synonyms for a given key', () => { + const preferredTagValues = Vocabulary.getPreferredTagValues('IDKEYSIZES', vocabulary, 'litt'); // Alphabetically ordered by label expect(preferredTagValues).toEqual([ - {id: "IDVALSIZES4", label: "IDVALSIZES4"}, - {id: "IDVALSIZES3", label: "Large", description: "Large (L)"}, - {id: "IDVALSIZES2", label: "Medium", description: "Medium (M)"}, - {id: "IDVALSIZES1", label: "Small", description: "Small (S, Little)"}, + {id: "IDVALSIZES4", label: "IDVALSIZES4", synonyms: []}, + {id: "IDVALSIZES3", label: "Large", synonyms: []}, + {id: "IDVALSIZES2", label: "Medium", synonyms: []}, + {id: "IDVALSIZES1", label: "Small", synonyms: ["Little"]}, ]) }); @@ -138,6 +161,8 @@ describe('Vocabulary', () => { {keyLabel: 'Creature', expected: 'IDKEYANIMALS'}, // Non-existent label returns empty string {keyLabel: 'ThisKeyLabelDoesntExist', expected: ''}, + // Key with no labels still returns the key ID + {keyLabel: 'automation', expected: 'automation'}, ] testCases.forEach(tc => { const tagValueID = Vocabulary.getTagKeyID(tc.keyLabel, vocabulary); @@ -169,6 +194,8 @@ describe('Vocabulary', () => { {keyID: 'IDKEYANIMALS', valueLabel: 'Dinosaur', expected: ''}, // Key ID unknown {keyID: 'IDNONSENSE', valueLabel: 'Does not matter', expected: ''}, + // Value with no labels still returns the value ID + {keyID: 'automation', valueLabel: 'results', expected: 'results'}, ] testCases.forEach(tc => { const tagValueID = Vocabulary.getTagValueID(tc.keyID, tc.valueLabel, vocabulary);