HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/tests/Unit/MailListFieldMappingTest.php
<?php

/**
 * MailListFieldMappingTest — unit tests for preserved-field detection and
 * case-insensitive header normalization. No DB needed.
 *
 * Background: previously the import flow used `array_only($r, ['tags', 'status'])`,
 * a case-sensitive key match. CSVs with header `Status` (capitalized) were
 * silently ignored; the import branch fell through to the hard-coded
 * `STATUS_SUBSCRIBED` default. This file pins the new behavior: detection +
 * normalization treat the two preserved field headers case-insensitively.
 */

use App\Library\MailListFieldMapping;

test('hasPreservedFieldColumn — lowercase status matches', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['email', 'status'], 'status'))->toBeTrue();
});

test('hasPreservedFieldColumn — capitalized Status matches (case-insensitive)', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['Email', 'Status'], 'status'))->toBeTrue();
});

test('hasPreservedFieldColumn — uppercase STATUS matches (case-insensitive)', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['EMAIL', 'STATUS'], 'status'))->toBeTrue();
});

test('hasPreservedFieldColumn — header absent returns false', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['email', 'first_name'], 'status'))->toBeFalse();
});

test('hasPreservedFieldColumn — surrounding whitespace tolerated', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['email', ' Status '], 'status'))->toBeTrue();
});

test('hasPreservedFieldColumn — lowercase tags matches', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['email', 'tags'], 'tags'))->toBeTrue();
});

test('hasPreservedFieldColumn — capitalized Tags matches', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['Email', 'Tags'], 'tags'))->toBeTrue();
});

test('hasPreservedFieldColumn — uppercase TAGS matches', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['EMAIL', 'TAGS'], 'tags'))->toBeTrue();
});

test('hasPreservedFieldColumn — tags header absent returns false', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn(['email', 'first_name'], 'tags'))->toBeFalse();
});

test('hasPreservedFieldColumn — empty header list returns false', function () {
    expect(MailListFieldMapping::hasPreservedFieldColumn([], 'status'))->toBeFalse();
});