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/ai.naniguide.com/tests/Feature/AdAbTestFeatureTest.php
<?php

use App\Model\AdAbTest;
use App\Model\AdAbVariant;

test('ad ab test statuses are valid', function () {
    expect(AdAbTest::STATUSES)->toBe(['draft', 'running', 'completed', 'cancelled']);
});

test('ad ab test fillable fields are correct', function () {
    $test = new AdAbTest();
    expect($test->getFillable())->toContain('ad_campaign_id', 'status', 'winner_variant_id', 'confidence', 'settings');
});

test('ad ab test casts are correct', function () {
    $test = new AdAbTest();
    $casts = $test->getCasts();
    expect($casts['settings'])->toBe('json');
    expect($casts)->toHaveKey('started_at');
    expect($casts)->toHaveKey('completed_at');
});

test('ad ab test status badge accessor works', function () {
    $test = new AdAbTest();
    $test->status = AdAbTest::STATUS_RUNNING;
    expect($test->status_badge)->toBe('blue');

    $test->status = AdAbTest::STATUS_COMPLETED;
    expect($test->status_badge)->toBe('green');

    $test->status = AdAbTest::STATUS_CANCELLED;
    expect($test->status_badge)->toBe('red');

    $test->status = AdAbTest::STATUS_DRAFT;
    expect($test->status_badge)->toBe('orange');
});

test('ad ab test factory creates valid test', function () {
    $test = AdAbTest::factory()->make(['ad_campaign_id' => 1]);
    expect($test->status)->toBe(AdAbTest::STATUS_DRAFT);
    expect($test->settings)->toHaveKey('significance_threshold');
});

test('ad ab variant fillable fields are correct', function () {
    $variant = new AdAbVariant();
    expect($variant->getFillable())->toContain('ad_ab_test_id', 'name', 'weight', 'impressions', 'clicks', 'spend', 'conversions');
});

test('ad ab variant casts are correct', function () {
    $variant = new AdAbVariant();
    $casts = $variant->getCasts();
    expect($casts['creative_data'])->toBe('json');
    expect($casts['is_winner'])->toBe('boolean');
});

test('ad ab variant factory creates valid variant', function () {
    $variant = AdAbVariant::factory()->make(['ad_ab_test_id' => 1]);
    expect($variant->name)->not->toBeEmpty();
    expect($variant->weight)->toBe(50);
});