Fixed private build

This commit is contained in:
Constantin Graf
2024-04-15 10:47:16 +02:00
parent d99847ef19
commit 726aabe724
5 changed files with 59 additions and 0 deletions
+18
View File
@@ -1,5 +1,13 @@
on:
push:
branches:
- main
- develop
pull_request:
paths:
- 'workflows/build-private.yml'
- 'docker/prod/**'
workflow_dispatch:
name: Build - Private
jobs:
@@ -29,6 +37,12 @@ jobs:
only_args: --no-dev --no-ansi --no-interaction --prefer-dist --ignore-platform-reqs --classmap-authoritative
php_version: 8.3
- name: "Setup PHP with PECL extension"
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: mbstring, dom, fileinfo, pgsql, swoole
- name: "Install dependencies"
uses: php-actions/composer@v6
if: steps.cache-vendor.outputs.cache-hit != 'true' # Skip if cache hit
@@ -48,6 +62,9 @@ jobs:
- name: "Build"
run: npm run build
- name: "Activate billing extension"
run: php artisan module:enable Billing
- name: "Login to GitHub Container Registry"
uses: docker/login-action@v3
with:
@@ -65,6 +82,7 @@ jobs:
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha,format=long
- name: "Set up Docker Buildx"
uses: docker/setup-buildx-action@v3
+8
View File
@@ -1,5 +1,13 @@
on:
push:
branches:
- main
- develop
pull_request:
paths:
- 'workflows/build-public.yml'
- 'docker/prod/**'
workflow_dispatch:
name: Build - Public
jobs:
+1
View File
@@ -30,3 +30,4 @@ yarn-error.log
!/extensions/extensions_autoload.php
/auth.json
/modules_statuses.json
/k8s
+10
View File
@@ -30,6 +30,7 @@ use Laravel\Passport\HasApiTokens;
* @property string $timezone
* @property bool $is_placeholder
* @property Weekday $week_start
* @property-read Organization $currentTeam
* @property Collection<Organization> $organizations
* @property Collection<TimeEntry> $timeEntries
*
@@ -37,6 +38,7 @@ use Laravel\Passport\HasApiTokens;
* @method static UserFactory factory()
* @method static Builder<User> query()
* @method Builder<User> belongsToOrganization(Organization $organization)
* @method Builder<User> active()
*/
class User extends Authenticatable implements FilamentUser
{
@@ -131,6 +133,14 @@ class User extends Authenticatable implements FilamentUser
return $this->hasMany(TimeEntry::class);
}
/**
* @param Builder<User> $builder
*/
public function scopeActive(Builder $builder): void
{
$builder->where('is_placeholder', '=', false);
}
/**
* @param Builder<User> $builder
* @return Builder<User>
+22
View File
@@ -10,7 +10,11 @@ use App\Models\User;
use App\Providers\Filament\AdminPanelProvider;
use Filament\Panel;
use Illuminate\Support\Facades\Config;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\UsesClass;
#[CoversClass(User::class)]
#[UsesClass(User::class)]
class UserModelTest extends ModelTestAbstract
{
public function test_normal_user_can_not_access_admin_panel(): void
@@ -87,4 +91,22 @@ class UserModelTest extends ModelTestAbstract
$this->assertCount(3, $timeEntriesRel);
$this->assertTrue($timeEntriesRel->first()->is($timeEntries->first()));
}
public function test_scope_active_returns_only_non_placeholder_users(): void
{
// Arrange
$placeholder = User::factory()->create([
'is_placeholder' => true,
]);
$user = User::factory()->create([
'is_placeholder' => false,
]);
// Act
$activeUsers = User::query()->active()->get();
// Assert
$this->assertCount(1, $activeUsers);
$this->assertTrue($activeUsers->first()->is($user));
}
}