@@ -534,6 +534,68 @@ public function can_get_pattern_state_data()
534534 $ this ->assertSame (['foo ' => 'bar ' ], $ data );
535535 }
536536
537+ /** @test */
538+ public function current_pattern_and_state_is_set_for_get_pattern_state_data ()
539+ {
540+ $ templateRenderer = Mockery::mock (TemplateRenderer::class);
541+ $ patternProvider = Mockery::mock (PatternProvider::class);
542+
543+ $ templateProvider = Mockery::mock (PatternProvider::class);
544+ $ documentProvider = Mockery::mock (DocumentProvider::class);
545+
546+ $ primer = new Primer ($ templateRenderer , $ patternProvider , $ templateProvider , $ documentProvider );
547+
548+ $ patternProvider
549+ ->shouldReceive ('getPatternStateData ' )
550+ ->once ()
551+ ->with ('components/common/header ' , 'state-name ' )
552+ ->andReturnUsing (function () use ($ primer ) {
553+ return ['pattern ' => $ primer ->currentPatternId (), 'state ' => $ primer ->currentPatternState ()];
554+ });
555+
556+ $ data = $ primer ->getPatternStateData ('components/common/header ' , 'state-name ' );
557+
558+ $ this ->assertSame (['pattern ' => 'components/common/header ' , 'state ' => 'state-name ' ], $ data );
559+ }
560+
561+ /** @test */
562+ public function current_pattern_and_state_is_set_for_get_pattern_state_data_when_using_include ()
563+ {
564+ $ templateRenderer = Mockery::mock (TemplateRenderer::class);
565+ $ patternProvider = Mockery::mock (PatternProvider::class);
566+
567+ $ templateProvider = Mockery::mock (PatternProvider::class);
568+ $ documentProvider = Mockery::mock (DocumentProvider::class);
569+
570+ $ primer = new Primer ($ templateRenderer , $ patternProvider , $ templateProvider , $ documentProvider );
571+
572+ $ patternProvider
573+ ->shouldReceive ('getPatternStateData ' )
574+ ->once ()
575+ ->with ('components/common/header ' , 'state-name ' )
576+ ->andReturnUsing (function ($ id ) use ($ primer ) {
577+ return [
578+ 'this ' => ['pattern ' => $ primer ->currentPatternId (), 'state ' => $ primer ->currentPatternState ()],
579+ 'sub ' => $ primer ->getPatternStateData ('components/common/footer ' , 'another-state ' ),
580+ ];
581+ });
582+
583+ $ patternProvider
584+ ->shouldReceive ('getPatternStateData ' )
585+ ->once ()
586+ ->with ('components/common/footer ' , 'another-state ' )
587+ ->andReturnUsing (function ($ id ) use ($ primer ) {
588+ return ['pattern ' => $ primer ->currentPatternId (), 'state ' => $ primer ->currentPatternState ()];
589+ });
590+
591+ $ data = $ primer ->getPatternStateData ('components/common/header ' , 'state-name ' );
592+
593+ $ this ->assertSame ([
594+ 'this ' => ['pattern ' => 'components/common/header ' , 'state ' => 'state-name ' ],
595+ 'sub ' => ['pattern ' => 'components/common/footer ' , 'state ' => 'another-state ' ],
596+ ], $ data );
597+ }
598+
537599 /** @test */
538600 public function can_get_template_state_data ()
539601 {
@@ -555,6 +617,68 @@ public function can_get_template_state_data()
555617 $ this ->assertSame (['foo ' => 'bar ' ], $ data );
556618 }
557619
620+ /** @test */
621+ public function current_template_id_is_set_when_calling_can_get_template_state_data ()
622+ {
623+ $ templateRenderer = Mockery::mock (TemplateRenderer::class);
624+ $ patternProvider = Mockery::mock (PatternProvider::class);
625+
626+ $ templateProvider = Mockery::mock (PatternProvider::class);
627+ $ documentProvider = Mockery::mock (DocumentProvider::class);
628+
629+ $ primer = new Primer ($ templateRenderer , $ patternProvider , $ templateProvider , $ documentProvider );
630+
631+ $ templateProvider
632+ ->shouldReceive ('getPatternStateData ' )
633+ ->once ()
634+ ->with ('home ' , 'state-name ' )
635+ ->andReturnUsing (function () use ($ primer ) {
636+ return ['template ' => $ primer ->currentTemplateId (), 'state ' => $ primer ->currentTemplateState ()];
637+ });
638+
639+ $ data = $ primer ->getTemplateStateData ('home ' , 'state-name ' );
640+
641+ $ this ->assertSame (['template ' => 'home ' , 'state ' => 'state-name ' ], $ data );
642+ }
643+
644+ /** @test */
645+ public function current_template_id_is_set_when_calling_can_get_template_state_data_when_using_includes ()
646+ {
647+ $ templateRenderer = Mockery::mock (TemplateRenderer::class);
648+ $ patternProvider = Mockery::mock (PatternProvider::class);
649+
650+ $ templateProvider = Mockery::mock (PatternProvider::class);
651+ $ documentProvider = Mockery::mock (DocumentProvider::class);
652+
653+ $ primer = new Primer ($ templateRenderer , $ patternProvider , $ templateProvider , $ documentProvider );
654+
655+ $ templateProvider
656+ ->shouldReceive ('getPatternStateData ' )
657+ ->once ()
658+ ->with ('home ' , 'state-name ' )
659+ ->andReturnUsing (function () use ($ primer ) {
660+ return [
661+ 'this ' => ['template ' => $ primer ->currentTemplateId (), 'state ' => $ primer ->currentTemplateState ()],
662+ 'sub ' => $ primer ->getTemplateStateData ('away ' , 'another-state ' ),
663+ ];
664+ });
665+
666+ $ templateProvider
667+ ->shouldReceive ('getPatternStateData ' )
668+ ->once ()
669+ ->with ('away ' , 'another-state ' )
670+ ->andReturnUsing (function () use ($ primer ) {
671+ return ['template ' => $ primer ->currentTemplateId (), 'state ' => $ primer ->currentTemplateState ()];
672+ });
673+
674+ $ data = $ primer ->getTemplateStateData ('home ' , 'state-name ' );
675+
676+ $ this ->assertSame ([
677+ 'this ' => ['template ' => 'home ' , 'state ' => 'state-name ' ],
678+ 'sub ' => ['template ' => 'away ' , 'state ' => 'another-state ' ],
679+ ], $ data );
680+ }
681+
558682 /** @test */
559683 public function getPatternStateData_returns_empty_array_when_pattern_is_not_valid ()
560684 {
0 commit comments