|
456 | 456 | @site.assignPageRedirects(docs[1], docs) |
457 | 457 | expect(docs[1].data['redirect_from']).to include('/a-really-long/permalink/') |
458 | 458 | end |
| 459 | + |
| 460 | + # Tests for user-defined redirect_from handling |
| 461 | + it 'preserves user-defined redirect_from when page_id is not set' do |
| 462 | + doc = Jekyll::Document.new('test.md', site: @site, collection: @collection).tap do |d| |
| 463 | + d.data['lang'] = 'en' |
| 464 | + d.data['permalink'] = '/new-url/' |
| 465 | + d.data['redirect_from'] = ['/old-url/'] |
| 466 | + end |
| 467 | + |
| 468 | + @site.assignPageRedirects(doc, [doc]) |
| 469 | + |
| 470 | + expect(doc.data['redirect_from']).to eq(['/old-url/']) |
| 471 | + end |
| 472 | + |
| 473 | + it 'handles string redirect_from value' do |
| 474 | + doc = Jekyll::Document.new('test.md', site: @site, collection: @collection).tap do |d| |
| 475 | + d.data['lang'] = 'de' |
| 476 | + d.data['permalink'] = '/de/new-url/' |
| 477 | + d.data['redirect_from'] = '/old-url/' # String, not array |
| 478 | + end |
| 479 | + |
| 480 | + @site.assignPageRedirects(doc, [doc]) |
| 481 | + |
| 482 | + expect(doc.data['redirect_from']).to be_a(Array) |
| 483 | + end |
| 484 | + |
| 485 | + it 'should preserve user-defined redirect_from when page_id is set' do |
| 486 | + doc = Jekyll::Document.new('test.md', site: @site, collection: @collection).tap do |d| |
| 487 | + d.data['lang'] = 'en' |
| 488 | + d.data['page_id'] = 'test-page' |
| 489 | + d.data['permalink'] = '/new-url/' |
| 490 | + d.data['redirect_from'] = ['/old-url/', '/legacy/'] |
| 491 | + end |
| 492 | + |
| 493 | + other_doc = Jekyll::Document.new('test.de.md', site: @site, collection: @collection).tap do |d| |
| 494 | + d.data['lang'] = 'de' |
| 495 | + d.data['page_id'] = 'test-page' |
| 496 | + d.data['permalink'] = '/de/neue-url/' |
| 497 | + end |
| 498 | + |
| 499 | + @site.assignPageRedirects(doc, [doc, other_doc]) |
| 500 | + |
| 501 | + expect(doc.data['redirect_from']).to include('/old-url/') |
| 502 | + expect(doc.data['redirect_from']).to include('/legacy/') |
| 503 | + expect(doc.data['redirect_from']).to include('/de/neue-url/') |
| 504 | + end |
| 505 | + |
| 506 | + it 'should scope user-defined redirect_from to document language for non-default languages' do |
| 507 | + doc = Jekyll::Document.new('test.de.md', site: @site, collection: @collection).tap do |d| |
| 508 | + d.data['lang'] = 'de' |
| 509 | + d.data['permalink'] = '/de/neue-url/' |
| 510 | + d.data['redirect_from'] = ['/alte-url/', '/legacy/'] |
| 511 | + end |
| 512 | + |
| 513 | + @site.assignPageRedirects(doc, [doc]) |
| 514 | + |
| 515 | + expect(doc.data['redirect_from']).to include('/de/alte-url/') |
| 516 | + expect(doc.data['redirect_from']).to include('/de/legacy/') |
| 517 | + expect(doc.data['redirect_from']).not_to include('/alte-url/') |
| 518 | + end |
| 519 | + |
| 520 | + it 'should not prefix redirect_from for default language' do |
| 521 | + doc = Jekyll::Document.new('test.md', site: @site, collection: @collection).tap do |d| |
| 522 | + d.data['lang'] = 'en' |
| 523 | + d.data['permalink'] = '/new-url/' |
| 524 | + d.data['redirect_from'] = ['/old-url/'] |
| 525 | + end |
| 526 | + |
| 527 | + @site.assignPageRedirects(doc, [doc]) |
| 528 | + |
| 529 | + expect(doc.data['redirect_from']).to eq(['/old-url/']) |
| 530 | + end |
| 531 | + |
| 532 | + it 'should not double-prefix redirects that already have language prefix' do |
| 533 | + doc = Jekyll::Document.new('test.de.md', site: @site, collection: @collection).tap do |d| |
| 534 | + d.data['lang'] = 'de' |
| 535 | + d.data['permalink'] = '/de/neue-url/' |
| 536 | + d.data['redirect_from'] = ['/de/alte-url/', '/legacy/'] |
| 537 | + end |
| 538 | + |
| 539 | + @site.assignPageRedirects(doc, [doc]) |
| 540 | + |
| 541 | + expect(doc.data['redirect_from']).to include('/de/alte-url/') |
| 542 | + expect(doc.data['redirect_from']).to include('/de/legacy/') |
| 543 | + expect(doc.data['redirect_from']).not_to include('/de/de/alte-url/') |
| 544 | + end |
459 | 545 | end |
460 | 546 |
|
461 | 547 | it 'parses static_href block and outputs correct HTML' do |
|
0 commit comments