Skip to content

Commit 56d10a6

Browse files
committed
fix: Don't push multiple items whose text are same to valuesNotChanged list
1 parent 7d83fd3 commit 56d10a6

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

src/gql-ast-util/fragment-registry.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,30 @@ describe(DefinitionFileStore, () => {
214214
});
215215
});
216216

217+
describe('file1: ["A:0"] -> file1: ["A:0", "A:0"] -> file1: ["B:0", "A:0"]', () => {
218+
let store: TestingStore;
219+
beforeEach(() => {
220+
store = createTestingStore();
221+
store.update('main.ts', ['A:0']);
222+
store.update('main.ts', ['A:0', 'A:0']);
223+
store.update('main.ts', ['B:0', 'A:0']);
224+
});
225+
226+
test('correct history', () => {
227+
expect([...store.getDetailedAffectedDefinitions(2)[0].updated.values()]).toEqual([]);
228+
expect([...store.getDetailedAffectedDefinitions(2)[0].appeared.values()]).toEqual(['B', 'A']);
229+
expect([...store.getDetailedAffectedDefinitions(2)[0].disappeared.values()]).toEqual([]);
230+
});
231+
232+
test('correct unique definition', () => {
233+
expect([...store.getUniqueDefinitonMap().keys()]).toEqual(['B', 'A']);
234+
});
235+
236+
test('correct duplicated definition', () => {
237+
expect([...store.getDuplicatedDefinitonMap().keys()]).toEqual([]);
238+
});
239+
});
240+
217241
describe.each`
218242
file1Docs | file2Docs | affected | unique | duplicated
219243
${['A:0', 'B:0']} | ${['A:1']} | ${['B', 'A']} | ${['B']} | ${['A']}

src/gql-ast-util/fragment-registry.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,9 @@ export class DefinitionFileStore<T extends DefinitionAST, TExtra = unknown> {
135135

136136
for (const doc of documents) {
137137
const alreadyParsedItems = currentValueMapByText.get(doc.text);
138-
if (alreadyParsedItems) {
139-
alreadyParsedItems.forEach(v => {
140-
v.extra = doc.extra;
141-
valuesNotChanged.push(v);
142-
});
138+
if (alreadyParsedItems && alreadyParsedItems.length === 1) {
139+
alreadyParsedItems[0].extra = doc.extra;
140+
valuesNotChanged.push(alreadyParsedItems[0]);
143141
currentValueMapByText.delete(doc.text);
144142
continue;
145143
}

0 commit comments

Comments
 (0)