@rslsp1/fa-app-tools 2.0.87 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1081,10 +1081,49 @@ function elementStoreContractChecks() {
1081
1081
  "setPreferredHead"
1082
1082
  );
1083
1083
  const snapshot = await snapshotOf(store, elementId);
1084
- const found = snapshot.preferredHeads.some(
1085
- (selection) => selection.context_id === "ctx" && selection.version_id === v1.version_id
1084
+ const selection = snapshot.preferredHeads.find(
1085
+ (eintrag) => eintrag.context_id === "ctx" && eintrag.version_id === v1.version_id
1086
1086
  );
1087
- isTrue(found, `Auswahl fehlt im gelesenen Stand: ${show(snapshot.preferredHeads)}`);
1087
+ isTrue(!!selection, `Auswahl fehlt im gelesenen Stand: ${show(snapshot.preferredHeads)}`);
1088
+ equal(selection.revision, 1, `Revision der Auswahl: ${show(snapshot.preferredHeads)}`);
1089
+ },
1090
+ "setPreferredHead"
1091
+ );
1092
+ check(
1093
+ "Preferred Head",
1094
+ "laesst die Auswahl mit der gelesenen Revision wechseln",
1095
+ async (store) => {
1096
+ const elementId = await seedElement(store, "style", "A", "ctx");
1097
+ const v1 = await seedVersion(store, elementId);
1098
+ const v2 = await seedVersion(store, elementId, STYLE_PAYLOAD_V2, [
1099
+ { parent_version_id: v1.version_id, relation: "derived_from" }
1100
+ ]);
1101
+ ok(
1102
+ await store.setPreferredHead({
1103
+ elementId,
1104
+ contextId: "ctx",
1105
+ versionId: v1.version_id,
1106
+ expectedRevision: 0,
1107
+ selectedBy: "vertrag"
1108
+ }),
1109
+ "erste Auswahl"
1110
+ );
1111
+ const gelesen = await snapshotOf(store, elementId);
1112
+ const aktuell = gelesen.preferredHeads.find((e) => e.context_id === "ctx");
1113
+ ok(
1114
+ await store.setPreferredHead({
1115
+ elementId,
1116
+ contextId: "ctx",
1117
+ versionId: v2.version_id,
1118
+ expectedRevision: aktuell?.revision ?? 0,
1119
+ selectedBy: "vertrag"
1120
+ }),
1121
+ "zweite Auswahl mit gelesener Revision"
1122
+ );
1123
+ const danach = await snapshotOf(store, elementId);
1124
+ const gewechselt = danach.preferredHeads.find((e) => e.context_id === "ctx");
1125
+ equal(gewechselt?.version_id, v2.version_id, "Auswahl nach dem Wechsel");
1126
+ equal(gewechselt?.revision, 2, "Revision nach dem Wechsel");
1088
1127
  },
1089
1128
  "setPreferredHead"
1090
1129
  );