allows('presets')->andReturn($stored); $writer->expects('savePresets') ->with(PresetBook::fromDivi($stored)->toRest(), true) ->andReturn($stored); $area = new PresetArea($writer); self::assertSame(['presets', 'Presets'], [$area->name(), $area->label()]); self::assertSame(DiviFeature::PresetWrite, $area->feature()); self::assertSame(PresetBook::fromDivi($stored)->data(), $area->raw()); self::assertSame(PresetBook::fromDivi($stored)->rev(), $area->rev($stored)); self::assertSame(PresetBook::fromDivi($stored)->data(), $area->write($stored, true)); } public function testVerifyIgnoresSanitizedValuesButNotMissingPresets(): void { $area = new PresetArea(Mockery::mock(DesignSystemWriter::class)); $expected = PresetBookTest::stored(); $sanitized = $expected; $sanitized['module']['divi/button']['items']['aaaaaaaaaa']['attrs'] = ['button' => ['x' => 'bereinigt']]; $missing = $expected; unset($missing['module']['divi/button']['items']['bbbbbbbbbb']); $otherDefault = $expected; $otherDefault['module']['divi/text']['default'] = ''; self::assertTrue($area->verify($expected, $sanitized)); self::assertFalse($area->verify($expected, $missing)); self::assertFalse($area->verify($expected, $otherDefault)); } /** Final review I-3a: a snapshot is written back with full-replace semantics. */ public function testRestoreReplacesTheWholeInventory(): void { $writer = Mockery::mock(DesignSystemWriter::class); $stored = PresetBookTest::stored(); $writer->expects('savePresets')->with(PresetBook::fromDivi($stored)->toRest(), true)->andReturn($stored); self::assertSame(PresetBook::fromDivi($stored)->data(), (new PresetArea($writer))->restore($stored)); } /** Final review I-3b: values Divi changed while saving, by preset name; structure is verify()'s job. */ public function testDifferencesNameThePresetsDiviSanitized(): void { $area = new PresetArea(Mockery::mock(DesignSystemWriter::class)); $expected = PresetBookTest::stored(); $sanitized = $expected; $sanitized['module']['divi/button']['items']['aaaaaaaaaa']['attrs'] = ['button' => ['x' => 'bereinigt']]; $missing = $expected; unset($missing['module']['divi/button']['items']['bbbbbbbbbb']); self::assertSame([], $area->differences($expected, $expected)); self::assertSame([], $area->differences($expected, $missing)); self::assertSame( ['Divi hat die Einstellungen von Preset „CTA primär“ beim Speichern bereinigt.'], $area->differences($expected, $sanitized) ); } }