|
1 | 1 | <?php
|
2 | 2 |
|
| 3 | +use Illuminate\Database\Schema\Blueprint; |
3 | 4 | use Illuminate\Foundation\Testing\RefreshDatabase;
|
| 5 | +use Illuminate\Support\Facades\Schema; |
4 | 6 | use Vlados\LaravelUniqueUrls\LaravelUniqueUrlsController;
|
5 | 7 | use Vlados\LaravelUniqueUrls\Models\Url;
|
6 | 8 | use Vlados\LaravelUniqueUrls\Tests\Models\ChildModel;
|
|
169 | 171 | expect($model->relative_url)->toEqual(app()->getLocale()."/parent/test".($i > 0 ? "_".$i : ""));
|
170 | 172 | }
|
171 | 173 | });
|
| 174 | + |
| 175 | +test('12. Check if exception is thrown when model has conflicting url column', function () { |
| 176 | + // Create a table with 'url' column |
| 177 | + Schema::create('models_with_url_column', function (Blueprint $table) { |
| 178 | + $table->increments('id'); |
| 179 | + $table->string('name'); |
| 180 | + $table->string('url'); |
| 181 | + }); |
| 182 | + |
| 183 | + // Create a model class that uses HasUniqueUrls trait |
| 184 | + $modelClass = new class extends \Illuminate\Database\Eloquent\Model { |
| 185 | + use \Vlados\LaravelUniqueUrls\HasUniqueUrls; |
| 186 | + |
| 187 | + protected $table = 'models_with_url_column'; |
| 188 | + protected $guarded = []; |
| 189 | + public $timestamps = false; |
| 190 | + |
| 191 | + public function urlHandler(): array |
| 192 | + { |
| 193 | + return [ |
| 194 | + 'controller' => \Vlados\LaravelUniqueUrls\Tests\TestUrlHandler::class, |
| 195 | + 'method' => 'view', |
| 196 | + 'arguments' => [], |
| 197 | + ]; |
| 198 | + } |
| 199 | + |
| 200 | + public function urlStrategy($language, $locale): string |
| 201 | + { |
| 202 | + return \Illuminate\Support\Str::slug($this->name); |
| 203 | + } |
| 204 | + }; |
| 205 | + |
| 206 | + expect(fn() => $modelClass::create(['name' => 'test', 'url' => 'test-url'])) |
| 207 | + ->toThrow(Exception::class, "has a conflicting column 'url'"); |
| 208 | + |
| 209 | + Schema::dropIfExists('models_with_url_column'); |
| 210 | +}); |
| 211 | + |
| 212 | +test('13. Check if exception is thrown when model has conflicting urls column', function () { |
| 213 | + // Create a table with 'urls' column |
| 214 | + Schema::create('models_with_urls_column', function (Blueprint $table) { |
| 215 | + $table->increments('id'); |
| 216 | + $table->string('name'); |
| 217 | + $table->string('urls'); |
| 218 | + }); |
| 219 | + |
| 220 | + // Create a model class that uses HasUniqueUrls trait |
| 221 | + $modelClass = new class extends \Illuminate\Database\Eloquent\Model { |
| 222 | + use \Vlados\LaravelUniqueUrls\HasUniqueUrls; |
| 223 | + |
| 224 | + protected $table = 'models_with_urls_column'; |
| 225 | + protected $guarded = []; |
| 226 | + public $timestamps = false; |
| 227 | + |
| 228 | + public function urlHandler(): array |
| 229 | + { |
| 230 | + return [ |
| 231 | + 'controller' => \Vlados\LaravelUniqueUrls\Tests\TestUrlHandler::class, |
| 232 | + 'method' => 'view', |
| 233 | + 'arguments' => [], |
| 234 | + ]; |
| 235 | + } |
| 236 | + |
| 237 | + public function urlStrategy($language, $locale): string |
| 238 | + { |
| 239 | + return \Illuminate\Support\Str::slug($this->name); |
| 240 | + } |
| 241 | + }; |
| 242 | + |
| 243 | + expect(fn() => $modelClass::create(['name' => 'test', 'urls' => 'test-urls'])) |
| 244 | + ->toThrow(Exception::class, "has a conflicting column 'urls'"); |
| 245 | + |
| 246 | + Schema::dropIfExists('models_with_urls_column'); |
| 247 | +}); |
0 commit comments