Przejdź do treści
Jobless Busters
Z testamiŚrednia20–30 min

Zgoda na konkretną propozycję

Polecenie: użytkownik może zatwierdzić tylko aktualną wersję własnej propozycji. Niedozwolona osoba, stara wersja i powtórna zgoda mają zostać odrzucone. Zapisz dozwolone stany i przejścia.

Sprawdza: uprawnienia i kontrolę działania (w oryginale także typy TypeScript).

Stany: „czeka na zgodę → zatwierdzone → wykonane”, z wersją dokładnie określonej propozycji. Napisz approve(state, command), gdzie state to {status: 'pending', proposal}, a command to {version, actor, allowed}. Zwróć nowy stan approved albo rzuć błąd z komunikatem zawierającym state, forbidden lub stale.

To lokalna funkcja; nie implementuje bazy, podpisu, czasu ważności ani zdalnego zapisu. W produkcji zmiana stanu musi być chroniona również przed dwoma żądaniami naraz.

Dopytanie: co po kliknięciu starej karty Teams?

  • Zapisać stany i dozwolone przejścia
  • Sprawdzić tożsamość i uprawnienia
  • Odrzucić starą wersję i powtórną zgodę
Testy (1)

Testy przeniesione z reference.test.ts materiału źródłowego (node:test). W przeglądarce działają z tym samym zestawem asercji.

approval: kontrola tożsamości, wersji i podwójnego zatwierdzenia

JavaScript
const pending = { status: 'pending', proposal: { id: 'p', owner: 'u', version: 2, amount: 100 } };
assert.throws(() => approve(pending, { actor: 'other', allowed: true, version: 2 }), /forbidden/);
assert.throws(() => approve(pending, { actor: 'u', allowed: true, version: 1 }), /stale/);
const approved = approve(pending, { actor: 'u', allowed: true, version: 2 });
assert.equal(approved.status, 'approved');
assert.throws(() => approve(approved, { actor: 'u', allowed: true, version: 2 }), /state/);

Źródło: AI & Agents — ćwiczenia praktyczne — Autorskie ćwiczenie z programu nauki, nie potwierdzone zadanie rekrutacyjne.

JavaScript · uruchamiany w Web Workerze w przeglądarce

Tab wcina · Esc, a potem Tab, opuszcza edytor · ⌘/Ctrl + Enter uruchamia testy · Twój kod jest zapisywany w tej przeglądarce.

Uruchom testy, żeby sprawdzić rozwiązanie. Gotowych testów: 1.

Utknąłeś? Podpowiedzi idą od ogólnych do konkretnych.

Najpierw spróbuj naprawdę — rozwiązanie najwięcej daje, gdy już trochę się namęczysz.