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(); }); });