Der eigene CC steht in der eigenen Kette
Ein CC landete unter "Frueher genutzt", obwohl er dem Spieler gehoert - seine Mitgliedschaft daran war beendet, und danach allein richtete sich die Einordnung. Damit stand sein eigener CC in einem Abschnitt, der ausdruecklich fuer fremde gedacht ist, und liess sich aus der Ferne kaum in eine Kette ziehen. Jetzt entscheidet bei einem eigenen CC der Besitz: Wem er gehoert, dem gehoert er, auch wenn die Mitgliedschaft beendet wurde. Es bleibt seine Geschichte. Bei fremden CCs entscheidet weiterhin die Mitgliedschaft. Zwei Dinge fielen dabei auf: - Beim Ziehen scrollt der Browser nicht von selbst. Wer einen Eintrag von ganz unten in eine Kette weiter oben bringen wollte, sah das Ziel gar nicht. Jetzt scrollt die Seite, solange am Rand gezogen wird. - Der Besitzer konnte sich an seinem eigenen CC nicht ohne neue Buchung wieder eintragen, obwohl seine Buchung seit dem Anlegen daran haengt. Fuer ihn ist die Guthaben-Angabe jetzt freigestellt; von einem Fremden wird sie weiterhin verlangt.
This commit is contained in:
@@ -735,3 +735,37 @@ describe('Einzelne Mitglieder fallen aus', () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Der eigene CC bleibt der eigene', () => {
|
||||
it('lässt den Besitzer sich ohne neue Buchung wieder eintragen', async () => {
|
||||
// Kommt beim Nacherfassen vor: Der Besitzer ist aus seinem eigenen CC
|
||||
// ausgetragen worden. Seine Buchung hängt trotzdem daran, seit er ihn
|
||||
// angelegt hat - ein zweites Mal zahlt er nicht.
|
||||
const besitzer = await spielerMitPaket('Selbst ausgetragen');
|
||||
const zweiter = await spielerMitPaket('Bleibt drin');
|
||||
const { character } = await characters.createCharacter(besitzer, { name: 'Seiner' }, ctx);
|
||||
await characters.addMember(character.id, zweiter, { useKind: 'CC' }, ctx);
|
||||
|
||||
await characters.removeMember(character.id, besitzer, 'Versehen', ctx);
|
||||
const vorher = await credits.getBalances(besitzer);
|
||||
|
||||
await characters.addMember(character.id, besitzer, {}, ctx);
|
||||
|
||||
assert.deepEqual(await credits.getBalances(besitzer), vorher, 'kostet ihn nichts');
|
||||
const dabei = await db.prisma.characterMember.findFirstOrThrow({
|
||||
where: { characterId: character.id, playerId: besitzer },
|
||||
});
|
||||
assert.equal(dabei.leftAt, null, 'und er ist wieder dabei');
|
||||
});
|
||||
|
||||
it('verlangt von einem Fremden weiterhin ein Guthaben', async () => {
|
||||
const besitzer = await spielerMitPaket('Wirt drei');
|
||||
const fremder = await spielerMitPaket('Gast drei');
|
||||
const { character } = await characters.createCharacter(besitzer, { name: 'Seins' }, ctx);
|
||||
|
||||
await assert.rejects(
|
||||
() => characters.addMember(character.id, fremder, {}, ctx),
|
||||
(error: Error & { code?: string }) => error.code === 'NEED_KIND',
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user