@@ -23,14 +23,56 @@ protected function setUp()
23
23
$ this ->chain ->append (new Responsible \SlowStorage (array ('bar ' => 'baz ' , 'foo ' => 'bar ' )));
24
24
}
25
25
26
- public function testProcess ()
26
+ public function makeRequest ()
27
27
{
28
28
$ request = new Request ();
29
29
$ request ->verb = 'get ' ;
30
+ return array (
31
+ array ($ request )
32
+ );
33
+ }
34
+
35
+ /**
36
+ * @dataProvider makeRequest
37
+ */
38
+ public function testFastStorage ($ request )
39
+ {
30
40
$ request ->key = 'bar ' ;
41
+ $ ret = $ this ->chain ->handle ($ request );
31
42
43
+ $ this ->assertTrue ($ ret );
44
+ $ this ->assertObjectHasAttribute ('response ' , $ request );
45
+ $ this ->assertEquals ('baz ' , $ request ->response );
46
+ // despite both handle owns the 'bar' key, the FastStorage is responding first
47
+ $ this ->assertEquals ('DesignPatterns\ChainOfResponsibilities\Responsible\FastStorage ' , $ request ->forDebugOnly );
48
+ }
49
+
50
+ /**
51
+ * @dataProvider makeRequest
52
+ */
53
+ public function testSlowStorage ($ request )
54
+ {
55
+ $ request ->key = 'foo ' ;
32
56
$ ret = $ this ->chain ->handle ($ request );
33
- print_r ($ request );
57
+
58
+ $ this ->assertTrue ($ ret );
59
+ $ this ->assertObjectHasAttribute ('response ' , $ request );
60
+ $ this ->assertEquals ('bar ' , $ request ->response );
61
+ // FastStorage has no 'foo' key, the SlowStorage is responding
62
+ $ this ->assertEquals ('DesignPatterns\ChainOfResponsibilities\Responsible\SlowStorage ' , $ request ->forDebugOnly );
63
+ }
64
+
65
+ /**
66
+ * @dataProvider makeRequest
67
+ */
68
+ public function testFailure ($ request )
69
+ {
70
+ $ request ->key = 'kurukuku ' ;
71
+ $ ret = $ this ->chain ->handle ($ request );
72
+
73
+ $ this ->assertFalse ($ ret );
74
+ // the last rsponsible :
75
+ $ this ->assertEquals ('DesignPatterns\ChainOfResponsibilities\Responsible\SlowStorage ' , $ request ->forDebugOnly );
34
76
}
35
77
36
78
}
0 commit comments