edit ledger mogelijk gemaakt
Some checks failed
linter / quality (push) Failing after 1m7s
tests / ci (8.3) (push) Failing after 50s
tests / ci (8.4) (push) Failing after 1m6s
tests / ci (8.5) (push) Failing after 1m12s

This commit is contained in:
Daan Meijer 2026-07-06 11:44:09 +02:00
parent 800cb7a819
commit 57be9168e5
2 changed files with 50 additions and 2 deletions

View File

@ -34,12 +34,14 @@ const props = defineProps<{
id: number; id: number;
name: string; name: string;
rules: string; rules: string;
alignment: 'positive' | 'neutral' | 'negative';
}; };
}>(); }>();
const form = useForm({ const form = useForm({
name: props.ledger.name, name: props.ledger.name,
rules: props.ledger.rules, rules: props.ledger.rules,
alignment: props.ledger.alignment,
}); });
function submit() { function submit() {
@ -69,6 +71,25 @@ function submit() {
<textarea v-model="form.rules" id="rules" rows="4" class="c-ledger-edit__textarea"></textarea> <textarea v-model="form.rules" id="rules" rows="4" class="c-ledger-edit__textarea"></textarea>
</div> </div>
<div class="c-ledger-edit__field">
<label for="alignment" class="c-ledger-edit__label">Alignment</label>
<select
v-model="form.alignment"
id="alignment"
class="c-ledger-edit__select"
>
<option value="positive">
Positive (Higher Score is Better)
</option>
<option value="neutral">
Neutral (Frictionless / Standard)
</option>
<option value="negative">
Negative (Lower Score is Better / Demerits)
</option>
</select>
</div>
<div class="c-ledger-edit__actions"> <div class="c-ledger-edit__actions">
<button type="submit" :disabled="form.processing" class="c-ledger-edit__submit-btn"> <button type="submit" :disabled="form.processing" class="c-ledger-edit__submit-btn">
Save Save
@ -129,13 +150,18 @@ function submit() {
} }
.c-ledger-edit__textarea { .c-ledger-edit__textarea {
@apply mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 dark:focus:border-indigo-600 dark:focus:ring-indigo-600; @apply mt-1 block w-full rounded-md border border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 dark:focus:border-indigo-600 dark:focus:ring-indigo-600;
}
.c-ledger-edit__select {
@apply mt-1 block w-full rounded-md border border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 dark:focus:border-indigo-600 dark:focus:ring-indigo-600;
} }
.c-ledger-edit__actions { .c-ledger-edit__actions {
@apply flex items-center gap-4; @apply mt-6 flex items-center justify-end gap-4;
} }
.c-ledger-edit__submit-btn { .c-ledger-edit__submit-btn {
@apply inline-flex items-center rounded-md border border-transparent bg-gray-800 px-4 py-2 text-xs font-semibold tracking-widest text-white uppercase transition duration-150 ease-in-out hover:bg-gray-700 focus:bg-gray-700 focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:outline-none active:bg-gray-900 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-white dark:focus:bg-white dark:focus:ring-offset-gray-800 dark:active:bg-gray-300; @apply inline-flex items-center rounded-md border border-transparent bg-gray-800 px-4 py-2 text-xs font-semibold tracking-widest text-white uppercase transition duration-150 ease-in-out hover:bg-gray-700 focus:bg-gray-700 focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 focus:outline-none active:bg-gray-900 dark:bg-gray-200 dark:text-gray-800 dark:hover:bg-white dark:focus:bg-white dark:focus:ring-offset-gray-800 dark:active:bg-gray-300;
} }

View File

@ -55,3 +55,25 @@ test('non-owners cannot view ledger creation form or store ledgers', function ()
'name' => 'Illegal Ledger', 'name' => 'Illegal Ledger',
]); ]);
}); });
test('owner can edit a ledger', function () {
$owner = User::factory()->create();
$dynamic = Dynamic::factory()->create();
$dynamic->participants()->attach($owner->id, ['role' => 'owner']);
$ledger = Ledger::factory()->create(['dynamic_id' => $dynamic->id]);
$this->actingAs($owner);
$response = $this->put(route('dynamics.ledgers.update', [$dynamic->uuid, $ledger->uuid]), [
'name' => 'Updated Ledger Name',
'rules' => 'Updated rules.',
'alignment' => 'negative',
]);
$response->assertRedirect(route('dynamics.ledgers.show', [$dynamic->uuid, $ledger->uuid]));
$ledger->refresh();
expect($ledger->name)->toBe('Updated Ledger Name');
expect($ledger->rules)->toBe('Updated rules.');
expect($ledger->alignment)->toBe('negative');
});