renderSvg($matrix);
expect($svg)->toBeString()
->and($svg)->toContain('and($svg)->toContain('');
});
test('can render QR code to inline SVG', function () {
$data = 'Test';
$matrix = QrCodeGenerator::generate($data);
$renderer = new QrCodeRenderer();
$svg = $renderer->renderInlineSvg($matrix);
expect($svg)->toBeString()
->and($svg)->not->toContain('and($svg)->toContain('');
});
test('renders with default style', function () {
$data = 'Test';
$matrix = QrCodeGenerator::generate($data);
$renderer = new QrCodeRenderer();
$svg = $renderer->renderSvg($matrix);
// Should contain rectangles for modules
expect($svg)->toContain('and($svg)->toContain('width=')
->and($svg)->toContain('height=');
});
test('renders with custom style', function () {
$data = 'Test';
$matrix = QrCodeGenerator::generate($data);
$renderer = new QrCodeRenderer();
$style = QrCodeStyle::withColors(
SvgColor::fromHex('#0000ff'), // Blue dark modules
SvgColor::fromHex('#ffff00') // Yellow light modules
);
$svg = $renderer->renderCustom($matrix, $style);
expect($svg)->toBeString()
->and($svg)->toContain('renderSvg($matrix, $style);
// Compact style has smaller modules (5px)
expect($svg)->toContain('