- Refactor edit.blade.php to handle admin-specific fields (accepted and sats_paid) through conditional logic.

- 📦 Upgrade Laravel framework, Livewire, and dependencies to ensure compatibility with version `13.1.1`.
This commit is contained in:
HolgerHatGarKeineNode
2026-03-23 17:50:17 +00:00
parent 347082bbc8
commit 7a992cec3f
31 changed files with 496 additions and 525 deletions

View File

@@ -22,15 +22,15 @@ beforeEach(function () {
'event_id' => 'test_event_'.Str::random(40),
]);
$this->project = ProjectProposal::query()->create([
'einundzwanzig_pleb_id' => $this->pleb->id,
'name' => 'Original Project',
'description' => 'Original Description',
'support_in_sats' => 21000,
'website' => 'https://original.example.com',
'accepted' => false,
'sats_paid' => 0,
]);
$this->project = new ProjectProposal;
$this->project->einundzwanzig_pleb_id = $this->pleb->id;
$this->project->name = 'Original Project';
$this->project->description = 'Original Description';
$this->project->support_in_sats = 21000;
$this->project->website = 'https://original.example.com';
$this->project->accepted = false;
$this->project->sats_paid = 0;
$this->project->save();
// Get board member pubkeys from config
$this->boardMember = EinundzwanzigPleb::query()->create([

View File

@@ -1,6 +1,7 @@
<?php
use App\Models\ProjectProposal;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
it('serves original media via signed route', function () {
@@ -9,7 +10,7 @@ it('serves original media via signed route', function () {
$project = ProjectProposal::factory()->create();
$project->addMedia(
\Illuminate\Http\UploadedFile::fake()->image('test.jpg', 100, 100)
UploadedFile::fake()->image('test.jpg', 100, 100)
)->toMediaCollection('main');
$media = $project->getFirstMedia('main');
@@ -25,7 +26,7 @@ it('serves conversion media via signed route when conversion parameter is provid
$project = ProjectProposal::factory()->create();
$project->addMedia(
\Illuminate\Http\UploadedFile::fake()->image('test.jpg', 500, 500)
UploadedFile::fake()->image('test.jpg', 500, 500)
)->toMediaCollection('main');
$media = $project->getFirstMedia('main');
@@ -44,7 +45,7 @@ it('falls back to original when conversion does not exist', function () {
$project = ProjectProposal::factory()->create();
$project->addMedia(
\Illuminate\Http\UploadedFile::fake()->image('test.jpg', 100, 100)
UploadedFile::fake()->image('test.jpg', 100, 100)
)->toMediaCollection('main');
$media = $project->getFirstMedia('main');
@@ -63,7 +64,7 @@ it('rejects unsigned media requests', function () {
$project = ProjectProposal::factory()->create();
$project->addMedia(
\Illuminate\Http\UploadedFile::fake()->image('test.jpg', 100, 100)
UploadedFile::fake()->image('test.jpg', 100, 100)
)->toMediaCollection('main');
$media = $project->getFirstMedia('main');
@@ -77,7 +78,7 @@ it('generates signed url with conversion parameter', function () {
$project = ProjectProposal::factory()->create();
$project->addMedia(
\Illuminate\Http\UploadedFile::fake()->image('test.jpg', 500, 500)
UploadedFile::fake()->image('test.jpg', 500, 500)
)->toMediaCollection('main');
$urlWithoutConversion = $project->getSignedMediaUrl('main');

View File

@@ -1,6 +1,7 @@
<?php
use App\Auth\NostrUser;
use App\Enums\AssociationStatus;
use App\Models\EinundzwanzigPleb;
use App\Models\Election;
use Illuminate\Support\Facades\Gate;
@@ -77,7 +78,7 @@ it('allows active member to vote in an election', function () {
it('allows honorary member to vote in an election', function () {
$pleb = EinundzwanzigPleb::factory()->create([
'association_status' => \App\Enums\AssociationStatus::HONORARY,
'association_status' => AssociationStatus::HONORARY,
]);
$election = Election::factory()->create();
$nostrUser = new NostrUser($pleb->pubkey);
@@ -87,7 +88,7 @@ it('allows honorary member to vote in an election', function () {
it('denies passive member from voting in an election', function () {
$pleb = EinundzwanzigPleb::factory()->create([
'association_status' => \App\Enums\AssociationStatus::PASSIVE,
'association_status' => AssociationStatus::PASSIVE,
]);
$election = Election::factory()->create();
$nostrUser = new NostrUser($pleb->pubkey);

View File

@@ -1,6 +1,7 @@
<?php
use App\Auth\NostrUser;
use App\Enums\AssociationStatus;
use App\Models\EinundzwanzigPleb;
use App\Models\ProjectProposal;
use Illuminate\Support\Facades\Gate;
@@ -48,7 +49,7 @@ it('denies creation for active member without paid membership', function () {
it('denies creation for passive member without paid membership', function () {
$pleb = EinundzwanzigPleb::factory()->create([
'association_status' => \App\Enums\AssociationStatus::PASSIVE,
'association_status' => AssociationStatus::PASSIVE,
]);
$nostrUser = new NostrUser($pleb->pubkey);
@@ -57,7 +58,7 @@ it('denies creation for passive member without paid membership', function () {
it('allows passive member with paid membership to create project proposals', function () {
$pleb = EinundzwanzigPleb::factory()->withPaidCurrentYear()->create([
'association_status' => \App\Enums\AssociationStatus::PASSIVE,
'association_status' => AssociationStatus::PASSIVE,
]);
$nostrUser = new NostrUser($pleb->pubkey);

View File

@@ -2,6 +2,7 @@
use App\Models\EinundzwanzigPleb;
use App\Models\ProjectProposal;
use App\Models\Vote;
use App\Support\NostrAuth;
use Illuminate\Support\Facades\RateLimiter;
use Livewire\Livewire;
@@ -46,7 +47,7 @@ test('voting actions are rate limited after 10 attempts', function () {
RateLimiter::attempt('voting:127.0.0.1', 10, function () {});
}
Livewire::test('association.project-support.show', ['projectProposal' => $project->slug])
Livewire::test('association.project-support.show', ['projectProposal' => $project])
->call('handleApprove')
->assertStatus(429);
});
@@ -93,7 +94,7 @@ test('project proposal update is rate limited after 5 attempts', function () {
RateLimiter::attempt('project-proposal-update:127.0.0.1', 5, function () {});
}
Livewire::test('association.project-support.form.edit', ['projectProposal' => $project->slug])
Livewire::test('association.project-support.form.edit', ['projectProposal' => $project])
->set('form.name', 'Updated Name')
->call('update')
->assertStatus(429);
@@ -105,11 +106,11 @@ test('voting works within rate limit', function () {
NostrAuth::login($pleb->pubkey);
Livewire::test('association.project-support.show', ['projectProposal' => $project->slug])
Livewire::test('association.project-support.show', ['projectProposal' => $project])
->call('handleApprove')
->assertHasNoErrors();
$vote = \App\Models\Vote::query()
$vote = Vote::query()
->where('project_proposal_id', $project->id)
->where('einundzwanzig_pleb_id', $pleb->id)
->first();

View File

@@ -1,5 +1,8 @@
<?php
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
/*
|--------------------------------------------------------------------------
| Test Case
@@ -12,8 +15,8 @@
*/
uses(
Tests\TestCase::class,
Illuminate\Foundation\Testing\RefreshDatabase::class,
TestCase::class,
RefreshDatabase::class,
)->in('Feature');
/*