Compare commits

..

2 Commits

Author SHA1 Message Date
Philipp Lang 9b2364bc34 Fix: Scope should have its own where clause
continuous-integration/drone/push Build is failing Details
2023-06-29 12:58:05 +02:00
Philipp Lang e37219b1ca Fix migration rollback 2023-06-29 12:57:06 +02:00
13 changed files with 107 additions and 40 deletions

View File

@ -48,36 +48,36 @@ class FilterScope extends Filter
*/ */
public function apply(Builder $query): Builder public function apply(Builder $query): Builder
{ {
$query->orWhere(function ($query) { return $query->where(function ($query) {
if ($this->ausstand) { $query->orWhere(function ($query) {
$query->whereAusstand(); if ($this->ausstand) {
} $query->whereAusstand();
}
if ($this->billKind) { if ($this->billKind) {
$query->where('bill_kind', BillKind::fromValue($this->billKind)); $query->where('bill_kind', BillKind::fromValue($this->billKind));
} }
if (count($this->groupIds)) { if (count($this->groupIds)) {
$query->whereIn('group_id', $this->groupIds); $query->whereIn('group_id', $this->groupIds);
} }
if (count($this->subactivityIds) + count($this->activityIds) > 0) { if (count($this->subactivityIds) + count($this->activityIds) > 0) {
$query->whereHas('memberships', function ($q) { $query->whereHas('memberships', function ($q) {
$q->active(); $q->active();
if (count($this->subactivityIds)) { if (count($this->subactivityIds)) {
$q->whereIn('subactivity_id', $this->subactivityIds); $q->whereIn('subactivity_id', $this->subactivityIds);
} }
if (count($this->activityIds)) { if (count($this->activityIds)) {
$q->whereIn('activity_id', $this->activityIds); $q->whereIn('activity_id', $this->activityIds);
} }
}); });
} }
})->orWhere(function ($query) { })->orWhere(function ($query) {
if (count($this->additional)) { if (count($this->additional)) {
$query->whereIn('id', $this->additional); $query->whereIn('id', $this->additional);
} }
});
}); });
return $query;
} }
} }

View File

@ -44,6 +44,8 @@ class CreateActivitiesTable extends Migration
*/ */
public function down() public function down()
{ {
Schema::dropIfExists('activity_subactivity');
Schema::dropIfExists('subactivities');
Schema::dropIfExists('activities'); Schema::dropIfExists('activities');
} }
} }

View File

@ -44,5 +44,6 @@ class CreatePaymentsTable extends Migration
public function down() public function down()
{ {
Schema::dropIfExists('payments'); Schema::dropIfExists('payments');
Schema::dropIfExists('statuses');
} }
} }

View File

@ -37,6 +37,7 @@ class CreateCoursesTable extends Migration
*/ */
public function down() public function down()
{ {
Schema::dropIfExists('course_members');
Schema::dropIfExists('courses'); Schema::dropIfExists('courses');
} }
} }

View File

@ -22,4 +22,9 @@ class CreateSettingsTable extends Migration
$table->timestamps(); $table->timestamps();
}); });
} }
public function down()
{
Schema::dropIfExists('settings');
}
} }

View File

@ -26,8 +26,8 @@ class CreateGroupsParentIdColumn extends Migration
public function down() public function down()
{ {
Schema::table('groups', function (Blueprint $table) { Schema::table('groups', function (Blueprint $table) {
$table->dropForeign(['group_id']); $table->dropForeign(['parent_id']);
$table->dropColumn('group_id'); $table->dropColumn('parent_id');
}); });
} }
} }

View File

@ -32,6 +32,14 @@ return new class() extends Migration {
public function down() public function down()
{ {
Schema::table('members', function (Blueprint $table) { Schema::table('members', function (Blueprint $table) {
$table->dropColumn('ps_at');
$table->dropColumn('more_ps_at');
$table->dropColumn('without_education_at');
$table->dropColumn('without_efz_at');
$table->dropColumn('has_svk');
$table->dropColumn('has_vk');
$table->dropColumn('multiply_pv');
$table->dropColumn('multiply_more_pv');
}); });
} }
}; };

View File

@ -27,6 +27,9 @@ return new class() extends Migration {
public function down() public function down()
{ {
Schema::table('users', function (Blueprint $table) { Schema::table('users', function (Blueprint $table) {
$table->dropUnique(['email']);
$table->dropColumn('email_verified_at');
$table->dropColumn('remember_token');
}); });
} }
}; };

View File

@ -24,5 +24,8 @@ return new class() extends Migration {
*/ */
public function down() public function down()
{ {
Schema::table('members', function (Blueprint $table) {
$table->dropColumn('slug');
});
} }
}; };

View File

@ -24,5 +24,8 @@ return new class() extends Migration {
*/ */
public function down() public function down()
{ {
Schema::table('memberships', function (Blueprint $table) {
$table->dropColumn('promised_at');
});
} }
}; };

View File

@ -1,6 +1,5 @@
<?php <?php
use App\Payment\SubscriptionChild;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
@ -13,8 +12,6 @@ return new class() extends Migration {
*/ */
public function up() public function up()
{ {
$subscriptions = DB::table('subscriptions')->get();
Schema::table('subscriptions', function (Blueprint $table) { Schema::table('subscriptions', function (Blueprint $table) {
$table->dropColumn('amount'); $table->dropColumn('amount');
$table->boolean('split')->default(false); $table->boolean('split')->default(false);
@ -27,14 +24,6 @@ return new class() extends Migration {
$table->string('name'); $table->string('name');
$table->unsignedInteger('amount'); $table->unsignedInteger('amount');
}); });
foreach ($subscriptions as $subscription) {
SubscriptionChild::create([
'parent_id' => $subscription->id,
'name' => 'name',
'amount' => $subscription->amount,
]);
}
} }
/** /**
@ -44,5 +33,11 @@ return new class() extends Migration {
*/ */
public function down() public function down()
{ {
Schema::dropIfExists('subscription_children');
Schema::table('subscriptions', function (Blueprint $table) {
$table->unsignedInteger('amount');
$table->dropColumn('split');
$table->dropColumn('for_promise');
});
} }
}; };

View File

@ -13,6 +13,9 @@
<testsuite name="NamiUnit"> <testsuite name="NamiUnit">
<directory suffix="Test.php">./packages/laravel-nami/tests/Unit</directory> <directory suffix="Test.php">./packages/laravel-nami/tests/Unit</directory>
</testsuite> </testsuite>
<testsuite name="EndToEnd">
<directory suffix="Test.php">./tests/EndToEnd</directory>
</testsuite>
</testsuites> </testsuites>
<filter> <filter>
<whitelist processUncoveredFilesFromWhitelist="true"> <whitelist processUncoveredFilesFromWhitelist="true">

View File

@ -0,0 +1,43 @@
<?php
namespace Tests\EndToEnd;
use App\Group;
use App\Member\Member;
use App\Payment\Payment;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\RequestFactories\Child;
use Tests\TestCase;
class MemberIndexTest extends TestCase
{
use DatabaseMigrations;
public function testItHandlesFullTextSearch(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$group = Group::factory()->create();
Member::factory()->defaults()->for($group)->create(['firstname' => '::firstname::']);
Member::factory()->defaults()->for($group)->create(['firstname' => '::gggname::']);
$response = $this->callFilter('member.index', ['search' => '::firstname::']);
$this->assertCount(1, $this->inertia($response, 'data.data'));
}
public function testItFiltersForSearchButNotForPayments(): void
{
$this->withoutExceptionHandling()->login()->loginNami();
$group = Group::factory()->create();
Member::factory()->defaults()->for($group)
->has(Payment::factory()->notPaid()->subscription('tollerbeitrag', [
new Child('a', 5400),
]))
->create(['firstname' => '::firstname::']);
Member::factory()->defaults()->for($group)->create(['firstname' => '::firstname::']);
$response = $this->callFilter('member.index', ['search' => '::firstname::', 'ausstand' => true]);
$this->assertCount(1, $this->inertia($response, 'data.data'));
}
}