summaryrefslogtreecommitdiff
path: root/tests/Unit/SortDirectionsTest.php
blob: c63d5bb42bd85b90d1140174a33d841c286a426c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php

use Lightscale\LaralightTables\Support\SortDirections;

describe('SortDirections', function () {
    it('converts the enum to a query builder direction', function () {
        expect(SortDirections::value(SortDirection::Ascending))->toBe('asc');
        expect(SortDirections::value(SortDirection::Descending))->toBe('desc');
    });

    it('resolves strings to the enum', function () {
        expect(SortDirections::tryFrom('asc'))->toBe(SortDirection::Ascending);
        expect(SortDirections::tryFrom('desc'))->toBe(SortDirection::Descending);
    });

    it('resolves strings case insensitively', function () {
        expect(SortDirections::tryFrom('ASC'))->toBe(SortDirection::Ascending);
        expect(SortDirections::tryFrom('Desc'))->toBe(SortDirection::Descending);
    });

    it('passes an enum straight through', function () {
        expect(SortDirections::tryFrom(SortDirection::Descending))->toBe(SortDirection::Descending);
    });

    it('resolves null and unrecognised values to null', function () {
        expect(SortDirections::tryFrom(null))->toBeNull();
        expect(SortDirections::tryFrom(''))->toBeNull();
        expect(SortDirections::tryFrom('nonsense'))->toBeNull();
    });
});