' . ''; private static function page(string $buttonAttrs): string { return sprintf(self::BUTTON, $buttonAttrs); } public function testModulePresetInTheStack(): void { $matcher = new PresetUsageMatcher(); $button = new PresetScope('module', 'divi/button'); self::assertTrue($matcher->uses(self::page('{"modulePreset":["aaaaaaaaaa"]}'), $button, 'aaaaaaaaaa', false)); self::assertTrue($matcher->uses(self::page('{"modulePreset":["x","aaaaaaaaaa"]}'), $button, 'aaaaaaaaaa', false)); self::assertTrue($matcher->uses(self::page('{"modulePreset":"aaaaaaaaaa"}'), $button, 'aaaaaaaaaa', false)); self::assertFalse($matcher->uses(self::page('{"modulePreset":["bbbbbbbbbb"]}'), $button, 'aaaaaaaaaa', false)); self::assertFalse( $matcher->uses(self::page('{"modulePreset":["aaaaaaaaaa"]}'), new PresetScope('module', 'divi/text'), 'aaaaaaaaaa', false), 'an ID of another module does not count' ); } public function testDefaultModulePresetReachesModulesWithoutOwnPreset(): void { $matcher = new PresetUsageMatcher(); $button = new PresetScope('module', 'divi/button'); self::assertTrue($matcher->uses(self::page('{}'), $button, 'dddddddddd', true)); self::assertTrue($matcher->uses(self::page('{"modulePreset":["default"]}'), $button, 'dddddddddd', true)); self::assertFalse($matcher->uses(self::page('{"modulePreset":["aaaaaaaaaa"]}'), $button, 'dddddddddd', true)); } public function testGroupPresetById(): void { $matcher = new PresetUsageMatcher(); $group = new PresetScope('group', 'divi/font-body'); $attrs = '{"groupPreset":{"content.decoration.bodyFont":{"presetId":["gggggggggg"],"groupName":"divi/font-body"}}}'; self::assertTrue($matcher->uses(self::page($attrs), $group, 'gggggggggg', false)); self::assertFalse($matcher->uses(self::page($attrs), new PresetScope('group', 'divi/spacing'), 'gggggggggg', false)); } public function testBrokenMarkupCountsAsUse(): void { self::assertTrue((new PresetUsageMatcher())->uses( '', new PresetScope('module', 'divi/button'), 'aaaaaaaaaa', false )); } }