|
1 | | -const { cleanRawRow, pickEndpoint, filterSynonyms } = require('../src/ncit'); |
| 1 | +const { |
| 2 | + cleanRawRow, |
| 3 | + deprecateRecords, |
| 4 | + filterSynonyms, |
| 5 | + pickEndpoint, |
| 6 | +} = require('../src/ncit'); |
2 | 7 |
|
3 | 8 | describe('cleanRawRow', () => { |
4 | 9 | const rawRow = { |
@@ -173,3 +178,44 @@ describe('filterSynonyms', () => { |
173 | 178 | ]); |
174 | 179 | }); |
175 | 180 | }); |
| 181 | + |
| 182 | +describe('deprecateRecords', () => { |
| 183 | + test('deprecates only non-uploaded, non-deprecated records', async () => { |
| 184 | + const ncitIds = new Set(['C300']); |
| 185 | + const records = [ |
| 186 | + // should be deprecated |
| 187 | + { |
| 188 | + '@class': 'Disease', '@rid': '#1:1', sourceId: 'C100', |
| 189 | + }, |
| 190 | + // should not be deprecated since sourceId in already-uploaded ncitIds |
| 191 | + { |
| 192 | + '@class': 'Therapy', '@rid': '#1:2', sourceId: 'C300', |
| 193 | + }, |
| 194 | + // should not be deprecated since already deprecated |
| 195 | + { |
| 196 | + '@class': 'AnatomicalEntity', '@rid': '#1:3', deprecated: true, sourceId: 'C200', |
| 197 | + }, |
| 198 | + ]; |
| 199 | + const conn = { |
| 200 | + getRecords: jest.fn().mockResolvedValue(records), |
| 201 | + updateRecord: jest.fn().mockResolvedValue(), |
| 202 | + }; |
| 203 | + const source = '#9:99'; |
| 204 | + |
| 205 | + await deprecateRecords(conn, { ncitIds, source }); |
| 206 | + |
| 207 | + expect(conn.getRecords).toHaveBeenCalledWith({ |
| 208 | + filters: { source }, |
| 209 | + neighbors: 0, |
| 210 | + returnProperties: ['@class', '@rid', 'deprecated', 'sourceId'], |
| 211 | + target: 'Ontology', |
| 212 | + }); |
| 213 | + |
| 214 | + expect(conn.updateRecord).toHaveBeenCalledTimes(1); |
| 215 | + expect(conn.updateRecord).toHaveBeenCalledWith( |
| 216 | + 'Disease', |
| 217 | + '#1:1', |
| 218 | + { deprecated: true }, |
| 219 | + ); |
| 220 | + }); |
| 221 | +}); |
0 commit comments