Skip to content

Commit b59e426

Browse files
authored
🐛 Fix bug (#5419)
1 parent a320564 commit b59e426

File tree

3 files changed

+182
-4
lines changed

3 files changed

+182
-4
lines changed

argilla-frontend/v1/domain/entities/record/Records.test.ts

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,6 +1168,182 @@ describe("Records", () => {
11681168
expect(records.total).toBe(200);
11691169
});
11701170
});
1171+
1172+
describe("hasNecessaryBuffering", () => {
1173+
test("should return false when the buffer has at least 50% extra records loaded", () => {
1174+
const pageCriteria = new PageCriteria();
1175+
pageCriteria.client = {
1176+
page: 1,
1177+
many: 4,
1178+
};
1179+
1180+
const records = new Records([
1181+
new Record(
1182+
"1",
1183+
"1",
1184+
[],
1185+
[],
1186+
null,
1187+
[],
1188+
1,
1189+
1,
1190+
{},
1191+
"pending",
1192+
new Date("2021-01-01"),
1193+
new Date("2021-01-01")
1194+
),
1195+
new Record(
1196+
"2",
1197+
"1",
1198+
[],
1199+
[],
1200+
null,
1201+
[],
1202+
1,
1203+
2,
1204+
{},
1205+
"pending",
1206+
new Date("2021-01-01"),
1207+
new Date("2021-01-01")
1208+
),
1209+
new Record(
1210+
"3",
1211+
"1",
1212+
[],
1213+
[],
1214+
null,
1215+
[],
1216+
1,
1217+
3,
1218+
{},
1219+
"pending",
1220+
new Date("2021-01-01"),
1221+
new Date("2021-01-01")
1222+
),
1223+
new Record(
1224+
"4",
1225+
"1",
1226+
[],
1227+
[],
1228+
null,
1229+
[],
1230+
1,
1231+
4,
1232+
{},
1233+
"pending",
1234+
new Date("2021-01-01"),
1235+
new Date("2021-01-01")
1236+
),
1237+
]);
1238+
1239+
const shouldBuffering = records.shouldBuffering(pageCriteria);
1240+
1241+
expect(shouldBuffering).toBeFalsy();
1242+
});
1243+
1244+
test("should return true when the buffer no have at least 50% extra records loaded", () => {
1245+
const pageCriteria = new PageCriteria();
1246+
pageCriteria.client = {
1247+
page: 1,
1248+
many: 10,
1249+
};
1250+
1251+
const records = new Records([
1252+
new Record(
1253+
"1",
1254+
"1",
1255+
[],
1256+
[],
1257+
null,
1258+
[],
1259+
1,
1260+
1,
1261+
{},
1262+
"pending",
1263+
new Date("2021-01-01"),
1264+
new Date("2021-01-01")
1265+
),
1266+
new Record(
1267+
"2",
1268+
"1",
1269+
[],
1270+
[],
1271+
null,
1272+
[],
1273+
1,
1274+
2,
1275+
{},
1276+
"pending",
1277+
new Date("2021-01-01"),
1278+
new Date("2021-01-01")
1279+
),
1280+
new Record(
1281+
"3",
1282+
"1",
1283+
[],
1284+
[],
1285+
null,
1286+
[],
1287+
1,
1288+
3,
1289+
{},
1290+
"pending",
1291+
new Date("2021-01-01"),
1292+
new Date("2021-01-01")
1293+
),
1294+
new Record(
1295+
"4",
1296+
"1",
1297+
[],
1298+
[],
1299+
null,
1300+
[],
1301+
1,
1302+
4,
1303+
{},
1304+
"pending",
1305+
new Date("2021-01-01"),
1306+
new Date("2021-01-01")
1307+
),
1308+
]);
1309+
1310+
const shouldBuffering = records.shouldBuffering(pageCriteria);
1311+
1312+
expect(shouldBuffering).toBeTruthy();
1313+
});
1314+
1315+
test("should return false when is end of the queue", () => {
1316+
const pageCriteria = new PageCriteria();
1317+
pageCriteria.client = {
1318+
page: 100,
1319+
many: 4,
1320+
};
1321+
1322+
const records = new Records(
1323+
[
1324+
new Record(
1325+
"4",
1326+
"1",
1327+
[],
1328+
[],
1329+
null,
1330+
[],
1331+
1,
1332+
100,
1333+
{},
1334+
"pending",
1335+
new Date("2021-01-01"),
1336+
new Date("2021-01-01")
1337+
),
1338+
],
1339+
100
1340+
);
1341+
1342+
const shouldBuffering = records.shouldBuffering(pageCriteria);
1343+
1344+
expect(shouldBuffering).toBeFalsy();
1345+
});
1346+
});
11711347
});
11721348

11731349
describe("EmptyQueueRecords", () => {

argilla-frontend/v1/domain/entities/record/Records.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ export class Records {
2121
return this.records.find((record) => record.page === criteria.client.page);
2222
}
2323

24-
hasNecessaryBuffering(criteria: PageCriteria) {
24+
shouldBuffering(criteria: PageCriteria) {
2525
const bufferedRecords = this.records.filter(
2626
(record) => record.page > criteria.client.page
2727
);
2828

29-
return bufferedRecords.length > criteria.buffer;
29+
if (this.total === this.lastRecord.page) return false;
30+
31+
return bufferedRecords.length <= criteria.buffer;
3032
}
3133

3234
getRecordsOn(criteria: PageCriteria): Record[] {

argilla-frontend/v1/domain/usecases/load-records-to-annotate-use-case.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export class LoadRecordsToAnnotateUseCase {
7171

7272
const records = this.recordsStorage.get();
7373

74-
if (!records.hasNecessaryBuffering(page)) {
74+
if (records.shouldBuffering(page)) {
7575
this.loadBufferedRecords(criteria);
7676
}
7777
}
@@ -93,7 +93,7 @@ export class LoadRecordsToAnnotateUseCase {
9393

9494
const newRecords = await this.getRecords.execute(newCriteria);
9595

96-
records.append(newRecords);
96+
if (newRecords.hasRecordsToAnnotate) records.append(newRecords);
9797

9898
this.recordsStorage.save(records);
9999
} catch {

0 commit comments

Comments
 (0)