test: fix quality issues and expand coverage for namespaced fields, empty feed, xml declaration

This commit is contained in:
Joel Male
2026-04-11 08:17:47 +10:00
parent af17f7b868
commit cb067ccb77
+31 -6
View File
@@ -36,10 +36,10 @@ function validProduct(array $overrides = []): array
describe('addItem', function () { describe('addItem', function () {
it('accepts a valid item without throwing', function () { it('accepts a valid item without throwing', function () {
$feed = LaravelGoogleShoppingFeed::init(); $feed = LaravelGoogleShoppingFeed::init('', '', '');
$feed->addItem(validProduct()); $feed->addItem(validProduct());
expect(true)->toBeTrue(); expect($feed)->toBeInstanceOf(LaravelGoogleShoppingFeed::class);
}); });
it('throws for missing required field', function (string $field) { it('throws for missing required field', function (string $field) {
@@ -63,7 +63,7 @@ function validProduct(array $overrides = []): array
it('returns a string', function () { it('returns a string', function () {
$feed = LaravelGoogleShoppingFeed::init('Store', 'Desc', 'https://example.com'); $feed = LaravelGoogleShoppingFeed::init('Store', 'Desc', 'https://example.com');
expect(is_string($feed->toXml()))->toBeTrue(); expect($feed->toXml())->toBeString();
}); });
it('contains the RSS xmlns:g attribute', function () { it('contains the RSS xmlns:g attribute', function () {
@@ -85,9 +85,9 @@ function validProduct(array $overrides = []): array
$xml = $feed->toXml(); $xml = $feed->toXml();
expect($xml) expect($xml)
->toContain('My Store') ->toContain('<title>My Store</title>')
->toContain('My Description') ->toContain('<description>My Description</description>')
->toContain('https://example.com'); ->toContain('<link>https://example.com</link>');
}); });
it('includes product data', function () { it('includes product data', function () {
@@ -120,6 +120,31 @@ function validProduct(array $overrides = []): array
->and($xml)->toContain('<id>prod-1</id>') ->and($xml)->toContain('<id>prod-1</id>')
->and($xml)->toContain('<id>prod-2</id>'); ->and($xml)->toContain('<id>prod-2</id>');
}); });
it('includes namespaced google fields in output', function () {
$feed = LaravelGoogleShoppingFeed::init('', '', '');
$feed->addItem(validProduct());
$xml = $feed->toXml();
expect($xml)
->toContain('<g:price>29.99 AUD</g:price>')
->toContain('<g:image_link>https://example.com/image.jpg</g:image_link>');
});
it('generates valid xml with no products', function () {
$feed = LaravelGoogleShoppingFeed::init('My Store', 'My Desc', 'https://example.com');
$xml = $feed->toXml();
expect($xml)
->toBeString()
->toContain('<title>My Store</title>')
->not->toContain('<item>');
});
it('includes the xml declaration', function () {
$feed = LaravelGoogleShoppingFeed::init('', '', '');
expect($feed->toXml())->toStartWith('<?xml');
});
}); });
describe('generate', function () { describe('generate', function () {