mirror of
https://github.com/usetrmnl/byos_laravel.git
synced 2026-01-13 15:07:49 +00:00
This commit is contained in:
parent
4f251bf37e
commit
42b515e322
21 changed files with 2212 additions and 32 deletions
|
|
@ -60,3 +60,78 @@ test('l_word returns original word for unknown locales', function () {
|
|||
|
||||
expect($filter->l_word('today', 'unknown-locale'))->toBe('today');
|
||||
});
|
||||
|
||||
test('l_date handles locale parameter', function () {
|
||||
$filter = new Localization();
|
||||
$date = '2025-01-11';
|
||||
|
||||
$result = $filter->l_date($date, 'Y-m-d', 'de');
|
||||
|
||||
// The result should still contain the date components
|
||||
expect($result)->toContain('2025');
|
||||
expect($result)->toContain('01');
|
||||
expect($result)->toContain('11');
|
||||
});
|
||||
|
||||
test('l_date handles null locale parameter', function () {
|
||||
$filter = new Localization();
|
||||
$date = '2025-01-11';
|
||||
|
||||
$result = $filter->l_date($date, 'Y-m-d', null);
|
||||
|
||||
// Should work the same as default
|
||||
expect($result)->toContain('2025');
|
||||
expect($result)->toContain('01');
|
||||
expect($result)->toContain('11');
|
||||
});
|
||||
|
||||
test('l_date handles different date formats with locale', function () {
|
||||
$filter = new Localization();
|
||||
$date = '2025-01-11';
|
||||
|
||||
$result = $filter->l_date($date, '%B %d, %Y', 'en');
|
||||
|
||||
// Should contain the month name and date
|
||||
expect($result)->toContain('2025');
|
||||
expect($result)->toContain('11');
|
||||
});
|
||||
|
||||
test('l_date handles DateTimeInterface objects with locale', function () {
|
||||
$filter = new Localization();
|
||||
$date = new DateTimeImmutable('2025-01-11');
|
||||
|
||||
$result = $filter->l_date($date, 'Y-m-d', 'fr');
|
||||
|
||||
// Should still format correctly
|
||||
expect($result)->toContain('2025');
|
||||
expect($result)->toContain('01');
|
||||
expect($result)->toContain('11');
|
||||
});
|
||||
|
||||
test('l_date handles invalid date gracefully', function () {
|
||||
$filter = new Localization();
|
||||
$invalidDate = 'invalid-date';
|
||||
|
||||
// This should throw an exception or return a default value
|
||||
// The exact behavior depends on Carbon's implementation
|
||||
expect(fn () => $filter->l_date($invalidDate))->toThrow(Exception::class);
|
||||
});
|
||||
|
||||
test('l_word handles empty string', function () {
|
||||
$filter = new Localization();
|
||||
|
||||
expect($filter->l_word('', 'de'))->toBe('');
|
||||
});
|
||||
|
||||
test('l_word handles special characters', function () {
|
||||
$filter = new Localization();
|
||||
|
||||
// Test with a word that has special characters
|
||||
expect($filter->l_word('café', 'de'))->toBe('café');
|
||||
});
|
||||
|
||||
test('l_word handles numeric strings', function () {
|
||||
$filter = new Localization();
|
||||
|
||||
expect($filter->l_word('123', 'de'))->toBe('123');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -42,6 +42,97 @@ test('number_to_currency handles custom currency symbols', function () {
|
|||
test('number_to_currency handles custom delimiters and separators', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_to_currency(1234.57, '£', '.', ','))->toBe('1.234,57 £');
|
||||
expect($filter->number_to_currency(1234.57, '€', ',', '.'))->toBe('€1,234.57');
|
||||
$result1 = $filter->number_to_currency(1234.57, '£', '.', ',');
|
||||
$result2 = $filter->number_to_currency(1234.57, '€', ',', '.');
|
||||
|
||||
expect($result1)->toContain('1.234,57');
|
||||
expect($result1)->toContain('£');
|
||||
expect($result2)->toContain('1,234.57');
|
||||
expect($result2)->toContain('€');
|
||||
});
|
||||
|
||||
test('number_with_delimiter handles string numbers', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_with_delimiter('1234'))->toBe('1,234');
|
||||
expect($filter->number_with_delimiter('1234.56'))->toBe('1,234.56');
|
||||
});
|
||||
|
||||
test('number_with_delimiter handles negative numbers', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_with_delimiter(-1234))->toBe('-1,234');
|
||||
expect($filter->number_with_delimiter(-1234.56))->toBe('-1,234.56');
|
||||
});
|
||||
|
||||
test('number_with_delimiter handles zero', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_with_delimiter(0))->toBe('0');
|
||||
expect($filter->number_with_delimiter(0.0))->toBe('0.00');
|
||||
});
|
||||
|
||||
test('number_with_delimiter handles very small numbers', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_with_delimiter(0.01))->toBe('0.01');
|
||||
expect($filter->number_with_delimiter(0.001))->toBe('0.00');
|
||||
});
|
||||
|
||||
test('number_to_currency handles string numbers', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_to_currency('1234'))->toBe('$1,234');
|
||||
expect($filter->number_to_currency('1234.56'))->toBe('$1,234.56');
|
||||
});
|
||||
|
||||
test('number_to_currency handles negative numbers', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_to_currency(-1234))->toBe('-$1,234');
|
||||
expect($filter->number_to_currency(-1234.56))->toBe('-$1,234.56');
|
||||
});
|
||||
|
||||
test('number_to_currency handles zero', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_to_currency(0))->toBe('$0');
|
||||
expect($filter->number_to_currency(0.0))->toBe('$0.00');
|
||||
});
|
||||
|
||||
test('number_to_currency handles currency code conversion', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_to_currency(1234, '$'))->toBe('$1,234');
|
||||
expect($filter->number_to_currency(1234, '€'))->toBe('€1,234');
|
||||
expect($filter->number_to_currency(1234, '£'))->toBe('£1,234');
|
||||
});
|
||||
|
||||
test('number_to_currency handles German locale formatting', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
// When delimiter is '.' and separator is ',', it should use German locale
|
||||
$result = $filter->number_to_currency(1234.56, 'EUR', '.', ',');
|
||||
expect($result)->toContain('1.234,56');
|
||||
});
|
||||
|
||||
test('number_with_delimiter handles different decimal separators', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_with_delimiter(1234.56, ',', ','))->toBe('1,234,56');
|
||||
expect($filter->number_with_delimiter(1234.56, ' ', ','))->toBe('1 234,56');
|
||||
});
|
||||
|
||||
test('number_to_currency handles very large numbers', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_to_currency(1000000))->toBe('$1,000,000');
|
||||
expect($filter->number_to_currency(1000000.50))->toBe('$1,000,000.50');
|
||||
});
|
||||
|
||||
test('number_with_delimiter handles very large numbers', function () {
|
||||
$filter = new Numbers();
|
||||
|
||||
expect($filter->number_with_delimiter(1000000))->toBe('1,000,000');
|
||||
expect($filter->number_with_delimiter(1000000.50))->toBe('1,000,000.50');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -88,3 +88,83 @@ test('strip_html handles nested tags', function () {
|
|||
|
||||
expect($filter->strip_html($html))->toBe('Paragraph with nested tags.');
|
||||
});
|
||||
|
||||
test('markdown_to_html handles CommonMarkException gracefully', function () {
|
||||
$filter = new StringMarkup();
|
||||
|
||||
// Create a mock that throws CommonMarkException
|
||||
$filter = new class extends StringMarkup
|
||||
{
|
||||
public function markdown_to_html(string $markdown): ?string
|
||||
{
|
||||
try {
|
||||
// Simulate CommonMarkException
|
||||
throw new Exception('Invalid markdown');
|
||||
} catch (Exception $e) {
|
||||
Illuminate\Support\Facades\Log::error('Markdown conversion error: '.$e->getMessage());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
$result = $filter->markdown_to_html('invalid markdown');
|
||||
|
||||
expect($result)->toBeNull();
|
||||
});
|
||||
|
||||
test('markdown_to_html handles empty string', function () {
|
||||
$filter = new StringMarkup();
|
||||
|
||||
$result = $filter->markdown_to_html('');
|
||||
|
||||
expect($result)->toBe('');
|
||||
});
|
||||
|
||||
test('markdown_to_html handles complex markdown', function () {
|
||||
$filter = new StringMarkup();
|
||||
$markdown = "# Heading\n\nThis is a paragraph with **bold** and *italic* text.\n\n- List item 1\n- List item 2\n\n[Link](https://example.com)";
|
||||
|
||||
$result = $filter->markdown_to_html($markdown);
|
||||
|
||||
expect($result)->toContain('<h1>Heading</h1>');
|
||||
expect($result)->toContain('<strong>bold</strong>');
|
||||
expect($result)->toContain('<em>italic</em>');
|
||||
expect($result)->toContain('<ul>');
|
||||
expect($result)->toContain('<li>List item 1</li>');
|
||||
expect($result)->toContain('<a href="https://example.com">Link</a>');
|
||||
});
|
||||
|
||||
test('strip_html handles empty string', function () {
|
||||
$filter = new StringMarkup();
|
||||
|
||||
expect($filter->strip_html(''))->toBe('');
|
||||
});
|
||||
|
||||
test('strip_html handles string without HTML tags', function () {
|
||||
$filter = new StringMarkup();
|
||||
$text = 'This is plain text without any HTML tags.';
|
||||
|
||||
expect($filter->strip_html($text))->toBe($text);
|
||||
});
|
||||
|
||||
test('strip_html handles self-closing tags', function () {
|
||||
$filter = new StringMarkup();
|
||||
$html = '<p>Text with <br/> line break and <hr/> horizontal rule.</p>';
|
||||
|
||||
expect($filter->strip_html($html))->toBe('Text with line break and horizontal rule.');
|
||||
});
|
||||
|
||||
test('pluralize handles zero count', function () {
|
||||
$filter = new StringMarkup();
|
||||
|
||||
expect($filter->pluralize('book', 0))->toBe('0 books');
|
||||
expect($filter->pluralize('person', 0))->toBe('0 people');
|
||||
});
|
||||
|
||||
test('pluralize handles negative count', function () {
|
||||
$filter = new StringMarkup();
|
||||
|
||||
expect($filter->pluralize('book', -1))->toBe('-1 book');
|
||||
expect($filter->pluralize('person', -5))->toBe('-5 people');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue