File tree Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Expand file tree Collapse file tree 2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -91,4 +91,15 @@ public function registerGenerator(Generator $generator)
91
91
{
92
92
$ this ->generators [] = $ generator ;
93
93
}
94
+
95
+ public function swapGenerator (string $ concrete , Generator $ generator )
96
+ {
97
+ foreach ($ this ->generators as $ key => $ registeredGenerator ) {
98
+ if (get_class ($ registeredGenerator ) === $ concrete ) {
99
+ unset($ this ->generators [$ key ]);
100
+ }
101
+ }
102
+
103
+ $ this ->registerGenerator ($ generator );
104
+ }
94
105
}
Original file line number Diff line number Diff line change @@ -355,6 +355,34 @@ public function generate_uses_registered_generators_and_returns_generated_files(
355
355
], $ this ->subject ->generate ($ tree ));
356
356
}
357
357
358
+ /**
359
+ * @test
360
+ */
361
+ public function generate_uses_swapped_generator_and_returns_generated_files ()
362
+ {
363
+ $ generatorOne = \Mockery::mock (Generator::class);
364
+ $ tree = ['branch ' => ['code ' , 'attributes ' ]];
365
+ $ generatorOne ->expects ('output ' )->never ();
366
+
367
+ $ generatorSwap = \Mockery::mock (Generator::class);
368
+ $ generatorSwap ->expects ('output ' )
369
+ ->with ($ tree )
370
+ ->andReturn ([
371
+ 'created ' => ['swapped/new.php ' ],
372
+ 'updated ' => ['swapped/existing.php ' ],
373
+ 'deleted ' => ['swapped/trashed.php ' ]
374
+ ]);
375
+
376
+ $ this ->subject ->registerGenerator ($ generatorOne );
377
+ $ this ->subject ->swapGenerator (get_class ($ generatorOne ), $ generatorSwap );
378
+
379
+ $ this ->assertEquals ([
380
+ 'created ' => ['swapped/new.php ' ],
381
+ 'updated ' => ['swapped/existing.php ' ],
382
+ 'deleted ' => ['swapped/trashed.php ' ],
383
+ ], $ this ->subject ->generate ($ tree ));
384
+ }
385
+
358
386
/**
359
387
* @test
360
388
* @dataProvider namespacesDataProvider
You can’t perform that action at this time.
0 commit comments