Compare commits

...

7 Commits

20 changed files with 349 additions and 88 deletions

3
.htaccess Normal file
View File

@ -0,0 +1,3 @@
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]

View File

@ -14,6 +14,7 @@ use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Application;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
@ -47,6 +48,10 @@ class FileController extends Controller
WorkWithFiles::saveFileToUploads($content);
$newPath = WorkWithFiles::renameFile($content);
$url = $request->file('file');
$return = Storage::put('file.jpg', $content);
dd($return);
$validated = $request->validated();
$file = new File();
$file->name = $validated['name'];

View File

@ -0,0 +1,19 @@
<?php
namespace App\Http\Controllers;
use App\Models\ReceptionScreen;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Application;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class PageController extends Controller
{
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
$receptionScreens = ReceptionScreen::all()->sortBy('position');
return view('menu.reception-screen', compact('receptionScreens'));
}
}

View File

@ -1,36 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UploadFileController extends Controller
{
public function showUploadFile(Request $request)
{
$file = $request->file('image');
//Display File Name
echo 'File Name: ' . $file->getClientOriginalName();
echo '<br>';
//Display File Extension
echo 'File Extension: ' . $file->getClientOriginalExtension();
echo '<br>';
//Display File Real Path
echo 'File Real Path: ' . $file->getRealPath();
echo '<br>';
//Display File Size
echo 'File Size: ' . $file->getSize();
echo '<br>';
//Display File Mime Type
echo 'File Mime Type: ' . $file->getMimeType();
//Move Uploaded File
$destinationPath = 'uploads';
$file->move($destinationPath, $file->getClientOriginalName());
}
}

104
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "fdefaf46b5f41fa6a367dece0d5b67f0",
"content-hash": "5bc9c65b7acd466b9ce68980e20268db",
"packages": [
{
"name": "brick/math",
@ -1045,6 +1045,58 @@
],
"time": "2023-12-03T19:50:20+00:00"
},
{
"name": "imangazaliev/didom",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/Imangazaliev/DiDOM.git",
"reference": "50fa6595d14f22c0c984efed5c818485cf548136"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Imangazaliev/DiDOM/zipball/50fa6595d14f22c0c984efed5c818485cf548136",
"reference": "50fa6595d14f22c0c984efed5c818485cf548136",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-iconv": "*",
"php": ">=7.2"
},
"require-dev": {
"phpunit/phpunit": "^8.5"
},
"type": "library",
"autoload": {
"psr-4": {
"DiDom\\": "src/DiDom/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Imangazaliev Muhammad",
"email": "imangazalievm@gmail.com"
}
],
"description": "Simple and fast HTML parser",
"homepage": "https://github.com/Imangazaliev/DiDOM",
"keywords": [
"didom",
"html",
"parser",
"xml"
],
"support": {
"issues": "https://github.com/Imangazaliev/DiDOM/issues",
"source": "https://github.com/Imangazaliev/DiDOM/tree/2.0.1"
},
"time": "2023-03-05T03:23:48+00:00"
},
{
"name": "laravel/framework",
"version": "v10.42.0",
@ -1824,16 +1876,16 @@
},
{
"name": "league/flysystem",
"version": "3.23.0",
"version": "3.23.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc"
"reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc",
"reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e",
"reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e",
"shasum": ""
},
"require": {
@ -1898,7 +1950,7 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
"source": "https://github.com/thephpleague/flysystem/tree/3.23.0"
"source": "https://github.com/thephpleague/flysystem/tree/3.23.1"
},
"funding": [
{
@ -1910,20 +1962,20 @@
"type": "github"
}
],
"time": "2023-12-04T10:16:17+00:00"
"time": "2024-01-26T18:42:03+00:00"
},
{
"name": "league/flysystem-local",
"version": "3.23.0",
"version": "3.23.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-local.git",
"reference": "5cf046ba5f059460e86a997c504dd781a39a109b"
"reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b",
"reference": "5cf046ba5f059460e86a997c504dd781a39a109b",
"url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/b884d2bf9b53bb4804a56d2df4902bb51e253f00",
"reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00",
"shasum": ""
},
"require": {
@ -1958,7 +2010,7 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem-local/issues",
"source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0"
"source": "https://github.com/thephpleague/flysystem-local/tree/3.23.1"
},
"funding": [
{
@ -1970,20 +2022,20 @@
"type": "github"
}
],
"time": "2023-12-04T10:14:46+00:00"
"time": "2024-01-26T18:25:23+00:00"
},
{
"name": "league/mime-type-detection",
"version": "1.14.0",
"version": "1.15.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/mime-type-detection.git",
"reference": "b6a5854368533df0295c5761a0253656a2e52d9e"
"reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e",
"reference": "b6a5854368533df0295c5761a0253656a2e52d9e",
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
"reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
"shasum": ""
},
"require": {
@ -2014,7 +2066,7 @@
"description": "Mime-type detection for Flysystem",
"support": {
"issues": "https://github.com/thephpleague/mime-type-detection/issues",
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0"
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0"
},
"funding": [
{
@ -2026,7 +2078,7 @@
"type": "tidelift"
}
],
"time": "2023-10-17T14:13:20+00:00"
"time": "2024-01-28T23:22:08+00:00"
},
{
"name": "monolog/monolog",
@ -6230,16 +6282,16 @@
},
{
"name": "doctrine/dbal",
"version": "3.7.3",
"version": "3.8.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "ce594cbc39a4866c544f1a970d285ff0548221ad"
"reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/ce594cbc39a4866c544f1a970d285ff0548221ad",
"reference": "ce594cbc39a4866c544f1a970d285ff0548221ad",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9",
"reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9",
"shasum": ""
},
"require": {
@ -6323,7 +6375,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.7.3"
"source": "https://github.com/doctrine/dbal/tree/3.8.0"
},
"funding": [
{
@ -6339,7 +6391,7 @@
"type": "tidelift"
}
],
"time": "2024-01-21T07:53:09+00:00"
"time": "2024-01-25T21:44:02+00:00"
},
{
"name": "doctrine/deprecations",
@ -9327,7 +9379,7 @@
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": "^8.2"
"php": "^8.1|8.2"
},
"platform-dev": [],
"plugin-api-version": "2.6.0"

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

View File

@ -36,7 +36,7 @@
</a>
</div>
<div class="col-lg-3 col-md-4">
<a href="#">
<a href="{{ route('reception-screens') }}">
<div class="tp-feature__item before-color-3 mb-40">
<div class="tp-feature__icon">
<img style="max-width: 26%;" src="{{ URL::to('img/courses/ekrpriem.png') }}" alt="">
@ -138,17 +138,17 @@
<div class="container">
<div class="row">
<div class="col rounded-3 me-4 border border-dark " style="background-color: #e9ecef;">
<div class="col rounded-3 me-4 border border-secondary-subtle " style="background-color: #e9ecef;">
<div class="row position-relative">
<div class="px-0"><img src="{{ URL::to('img/bg/photo.jpg') }}" alt=""
<div class="px-0"><img src="{{ URL::to('img/front-page/bakalavriat.jpg') }}" alt=""
class="img-fluid rounded-3"></div>
</div>
<div class="row mt-4 m-2 p-1 ">
<h1 class="text-secondary fw-bolder pt-2 px-3 text-center"> Бакалавриат</h1>
<h1 class="text-secondary text-center pb-4"> Бакалавриат</h1>
<p class="text-secondary rounded-3 fw-light fs-5"> Lorem Ipsum - это текст-"рыба", часто
используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на
латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию
@ -160,9 +160,9 @@
</div>
<div class="col ">
<div class="row border border-dark rounded-3 " style="background-color: #e9ecef;">
<div class="row border border-secondary-subtle rounded-3 " style="background-color: #e9ecef;">
<div class="col-6 imageBackgroundCover"
style="background-image: url({{ URL::to('img/bg/2.jpg') }}); border-top-left-radius: 3px; border-bottom-left-radius: 3px; border-top-right-radius: 30px;">
style="background-image: url({{ URL::to('img/front-page/magistratura.jpg') }}); border-top-left-radius: 3px; border-bottom-left-radius: 3px; border-top-right-radius: 30px;">
</div>
@ -185,9 +185,9 @@
</div>
<div class="row border border-dark rounded-3 mt-4" style="background-color: #e9ecef;">
<div class="row border border-secondary-subtle rounded-3 mt-4" style="background-color: #e9ecef;">
<div class="col-6 imageBackgroundCover"
style="background-image: url({{ URL::to('img/bg/3.jpg') }}); border-top-left-radius: 3px; border-bottom-left-radius: 3px; border-bottom-right-radius: 30px; ">
style="background-image: url({{ URL::to('img/front-page/aspirantura.jpg') }}); border-top-left-radius: 3px; border-bottom-left-radius: 3px; border-bottom-right-radius: 30px; ">
</div>
@ -218,7 +218,7 @@
<div class="container mt-4">
<div class="row">
<div class="col ">
<div class="row border border-dark rounded-3 " style="background-color: #e9ecef;">
<div class="row border border-secondary-subtle rounded-3 " style="background-color: #e9ecef;">
<div class="col">
<div class=" mt-3">
@ -236,10 +236,10 @@
</div>
<div class="col-6 imageBackgroundCover"
style="background-image: url({{ URL::to('img/bg/2.jpg') }}); border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 30px;"></div>
style="background-image: url({{ URL::to('img/front-page/SPO.jpg') }}); border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 30px;"></div>
</div>
<div class="row border border-dark rounded-3 mt-4" style="background-color: #e9ecef;">
<div class="row border border-secondary-subtle rounded-3 mt-4" style="background-color: #e9ecef;">
<div class="col">
@ -258,21 +258,21 @@
</div>
<div class="col-6 imageBackgroundCover"
style="background-image: url({{ URL::to('img/bg/3.jpg') }}); border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 30px; "></div>
style="background-image: url({{ URL::to('img/front-page/dop-obrazovanie.jpg') }}); border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 30px; "></div>
</div>
</div>
<div class="col rounded-3 ms-4 border border-dark " style="background-color: #e9ecef;">
<div class="col rounded-3 ms-4 border border-secondary-subtle " style="background-color: #e9ecef;">
<div class="row position-relative">
<div class="px-0"><img src="{{ URL::to('img/bg/photo.jpg') }}" alt=""
<div class="px-0"><img src="{{ URL::to('img/front-page/podgotovitelnie-kursi.jpg') }}" alt=""
class="img-fluid rounded-3"></div>
</div>
<div class="row mt-4 m-2 p-1 ">
<h1 class="text-secondary fw-bolder pt-2 px-3 text-center"> Подготовительные курсы</h1>
<h1 class="text-secondary text-center pb-4"> Подготовительные курсы</h1>
<p class="text-secondary rounded-3 fw-light fs-5"> Lorem Ipsum - это текст-"рыба", часто
используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на
латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию
@ -288,7 +288,7 @@
</div>
<div class="container mt-4">
<div class="row">
<div class="col rounded-3 border border-dark" style="background-color: #e9ecef;">
<div class="col rounded-3 border border-secondary-subtle" style="background-color: #e9ecef;">
<div class="row">
<div class="col mt-3">
<h1 class=" text-secondary text-center "> Довузовская подготовка</h1>
@ -305,12 +305,12 @@
</div>
<div class="row">
<div class="col imageBackgroundCover"
style="background-image: url({{ URL::to('img/bg/2.jpg') }});">
<br><br><br><br><br><br><br><br><br><br><br><br></div>
style="background-image: url({{ URL::to('img/front-page/dovuzovskaya-podgotovka.jpg') }});">
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
</div>
</div>
<div class="col ms-4 rounded-3 border border-dark" style="background-color: #e9ecef;">
<div class="col ms-4 rounded-3 border border-secondary-subtle" style="background-color: #e9ecef;">
<div class="row">
<div class="col mt-3">
<h1 class=" text-secondary text-center "> Ординатура</h1>
@ -327,8 +327,8 @@
</div>
<div class="row">
<div class="col imageBackgroundCover"
style="background-image: url({{ URL::to('img/bg/2.jpg') }});">
<br><br><br><br><br><br><br><br><br><br><br><br></div>
style="background-image: url({{ URL::to('img/front-page/ordinatura.jpg') }});">
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>
</div>
</div>

View File

@ -332,7 +332,7 @@
line-height: 140%;
color: #222222;
margin: 12px 0;
text-align: justify;
}
a {

View File

@ -27,7 +27,7 @@
</div>
<div class="col-8">
<a href="ui-4.html#">
<a href="https://old.mkgtu.ru/postup_calc.php">
<h4>
<div
class="d-flex justify-content-start align-items-center w-100 h-100 border border-secondary m-1 p-4 buttonHover rounded-2">
@ -115,7 +115,7 @@
</div>
<div class="col-8">
<a href="#">
<a href="{{ route('reception-screens') }}">
<h4>
<div
class="d-flex justify-content-start align-items-center w-100 h-100 border border-secondary m-1 p-4 buttonHover rounded-2">

View File

@ -0,0 +1,86 @@
@extends('layouts.applicant-layout')
@section('content')
{{-- <style>--}}
{{-- .buttonHover {--}}
{{-- transition: .3s all;--}}
{{-- }--}}
{{-- .buttonHover:hover {--}}
{{-- background-color: #006147;--}}
{{-- transform: scale(1.03);--}}
{{-- color: #e0e0e0;--}}
{{-- }--}}
{{-- </style>--}}
{{-- <div class="container my-4">--}}
{{-- <div class="row d-flex justify-content-center align-items-center">--}}
{{-- @foreach($receptionScreens as $receptionScreen)--}}
{{-- <div class="col-8">--}}
{{-- <a href="{{ route('web-consultations') }}">--}}
{{-- <h4>--}}
{{-- <div--}}
{{-- class="d-flex justify-content-start align-items-center w-100 h-100 border border-secondary m-1 p-4 buttonHover rounded-2">--}}
{{-- {{ $receptionScreen->name }}--}}
{{-- </div>--}}
{{-- </h4>--}}
{{-- </a>--}}
{{-- </div>--}}
{{-- @foreach($receptionScreen->files as $file)--}}
{{-- <div class="col-8">--}}
{{-- <a href="{{ $file->url }}">{{ $file->name }}</a>--}}
{{-- </div>--}}
{{-- @endforeach--}}
{{-- @endforeach--}}
{{-- <div class="col-8">--}}
{{-- <a href="ui-4.html#">--}}
{{-- <h4>--}}
{{-- <div--}}
{{-- class="d-flex justify-content-start align-items-center w-100 h-100 border border-secondary m-1 p-4 buttonHover rounded-2">--}}
{{-- Калькулятор ЕГЭ--}}
{{-- </div>--}}
{{-- </h4>--}}
{{-- </a>--}}
{{-- </div>--}}
{{-- </div>--}}
{{-- </div>--}}
<style>
.accordion-button:not(.collapsed)
{
color:#006147;
background-color: rgb(255, 255, 255);
box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)
}
.accordion-button:focus {
z-index: 3;
border-color: #006147;
outline: 0;
box-shadow: 0 0 0 0.25rem #006147;
}
</style>
<div class="container my-4">
<div class="accordion" id="accordionPanelsStayOpenExample">
@foreach($receptionScreens as $receptionScreen)
<?php $tmp = str_replace(' ','', $receptionScreen->name) ?>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-<?php echo $tmp ?> " aria-expanded="true" aria-controls="panelsStayOpen-<?php echo $tmp ?>">
{{ $receptionScreen->name }}
</button>
</h2>
<div id="panelsStayOpen-<?php echo $tmp ?>" class="accordion-collapse collapse show">
<div class="accordion-body">
@foreach($receptionScreen->files as $file)
<div class="col-8">
<a href="{{ $file->url }}">{{ $file->name }}</a>
</div>
@endforeach
</div>
</div>
</div>
@endforeach
</div>
</div>
@endsection

View File

@ -1,6 +1,7 @@
<?php
use App\Http\Controllers\FileController;
use App\Http\Controllers\PageController;
use App\Http\Controllers\ReceptionScreenController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\UploadFileController;
@ -56,7 +57,7 @@ Route::get('/training courses', function () {
})->name('podgotovitelnye-kursy');
Route::get('/reception-screens', [PageController::class, 'index'])->name('reception-screens');
Route::get('/web-consultations', function () {

View File

@ -0,0 +1,131 @@
<?php
namespace Tests\Feature;
use App\Models\User;
use Tests\TestCase;
class ReceptionScreenTest extends TestCase
{
private User $adminUser;
private User $noAdminUser;
private array $user;
protected function setUp(): void
{
parent::setUp();
$this->user = User::factory()->make()->only([
'name',
'email',
'password'
]);
$this->adminUser = User::factory()->create([
'name' => 'admin',
'email' => 'test@example.com',
'password' => 123456
]);
$this->noAdminUser = User::factory()->create([
'name' => 'noadmin',
'email' => 'notest@example.com',
'password' => 'no123456'
]);
}
public function testUsersPage(): void
{
$response = $this->actingAs($this->adminUser)
->withSession(['banned' => false])
->get(route('users.index'));
$response->assertOk();
}
public function testNoAdminNoSeeUsersPage(): void
{
$response = $this->actingAs($this->noAdminUser)
->withSession(['banned' => false])
->get(route('users.index'));
$response->assertStatus(403);
}
public function testCreateUserPage(): void
{
$response = $this->actingAs($this->adminUser)
->withSession(['banned' => false])
->get(route('users.create'));
$response->assertOk();
}
public function testNoAdminCreateUserPage(): void
{
$response = $this->actingAs($this->noAdminUser)
->withSession(['banned' => false])
->get(route('users.create'));
$response->assertStatus(403);
}
public function testStoreUser(): void
{
$response = $this->actingAs($this->adminUser)
->withSession(['banned' => false])
->post(route('users.store', $this->user));
$response->assertRedirect(route('users.index'));
$this->assertDatabaseHas('users', $this->user);
}
public function testNoAdminNoStoreUser(): void
{
$response = $this->actingAs($this->noAdminUser)
->withSession(['banned' => false])
->post(route('users.store', $this->user));
$response->assertStatus(403);
$this->assertDatabaseMissing('users', $this->user);
}
public function testEditUserPage(): void
{
$response = $this->actingAs($this->adminUser)
->withSession(['banned' => false])
->get(route('users.edit', $this->adminUser));
$response->assertOk();
}
public function testNoAdminEditUserPage(): void
{
$response = $this->actingAs($this->noAdminUser)
->withSession(['banned' => false])
->get(route('users.edit', $this->noAdminUser));
$response->assertStatus(403);
}
public function testUpdateUser(): void
{
$response = $this->actingAs($this->adminUser)
->withSession(['banned' => false])
->patch(route('users.update', $this->noAdminUser), $this->user);
$response->assertRedirect(route('users.index'));
$dataWithOutHashPassword = $this->user;
unset($dataWithOutHashPassword['password']);
$this->assertDatabaseHas('users', $dataWithOutHashPassword);
}
public function testNoAdminNoUpdateUser(): void
{
$response = $this->actingAs($this->noAdminUser)
->withSession(['banned' => false])
->patch(route('users.update', $this->noAdminUser), $this->user);
$response->assertStatus(403);
$noAdminData = $this->noAdminUser->only(['name', 'email', 'password']);
$this->assertDatabaseHas('users', $noAdminData);
$this->assertDatabaseMissing('users', $this->user);
}
}