mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-nostr.git
synced 2026-03-23 19:08:41 +00:00
- ✨ 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:
@@ -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([
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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');
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user