fixed bug in search where note with inherited attribute is not matched when the owning note is not matched, #2457

This commit is contained in:
zadam 2021-12-20 21:35:12 +01:00
parent b1c4737e78
commit b8eeb0371c
2 changed files with 24 additions and 11 deletions

View File

@ -157,6 +157,21 @@ describe("Search", () => {
expect(findNoteByTitle(searchResults, "Czech Republic")).toBeTruthy(); expect(findNoteByTitle(searchResults, "Czech Republic")).toBeTruthy();
}); });
it("inherited label comparison", () => {
rootNote
.child(note("Europe")
.label('country', '', true)
.child(note("Austria"))
.child(note("Czech Republic"))
);
const searchContext = new SearchContext();
const searchResults = searchService.findResultsWithQuery('austria #country', searchContext);
expect(searchResults.length).toEqual(1);
expect(findNoteByTitle(searchResults, "Austria")).toBeTruthy();
});
it("numeric label comparison fallback to string comparison", () => { it("numeric label comparison fallback to string comparison", () => {
// dates should not be coerced into numbers which would then give wrong numbers // dates should not be coerced into numbers which would then give wrong numbers

View File

@ -23,7 +23,6 @@ class AttributeExistsExp extends Expression {
for (const attr of attrs) { for (const attr of attrs) {
const note = attr.note; const note = attr.note;
if (inputNoteSet.hasNoteId(note.noteId)) {
if (attr.isInheritable) { if (attr.isInheritable) {
resultNoteSet.addAll(note.getSubtreeNotesIncludingTemplated()); resultNoteSet.addAll(note.getSubtreeNotesIncludingTemplated());
} }
@ -34,9 +33,8 @@ class AttributeExistsExp extends Expression {
resultNoteSet.add(note); resultNoteSet.add(note);
} }
} }
}
return resultNoteSet; return resultNoteSet.intersection(inputNoteSet);
} }
} }