| Conditions | 1 |
| Paths | 1 |
| Total Lines | 65 |
| Code Lines | 44 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 91 | public function testRSSParser() |
||
| 92 | { |
||
| 93 | // Use a dummy (but valid) URI for the requests |
||
| 94 | $url = 'http://localhost/'; |
||
| 95 | |||
| 96 | // Create a mock and queue two responses |
||
| 97 | $mock = new MockHandler([ |
||
| 98 | new Response(200, [], file_get_contents(__DIR__ . '/sample1.rss')), |
||
| 99 | new Response(200, [], file_get_contents(__DIR__ . '/sample2.rss')), |
||
| 100 | ]); |
||
| 101 | $handler = HandlerStack::create($mock); |
||
| 102 | |||
| 103 | $service = new FeedReaderService($url, 3600, [ 'handler' => $handler ]); |
||
| 104 | $service->clearCache(); |
||
| 105 | |||
| 106 | // First read |
||
| 107 | $items = $service->getItems(); |
||
| 108 | |||
| 109 | $this->assertEquals(1, $items->count()); |
||
| 110 | |||
| 111 | $item = $items[0]; |
||
| 112 | $this->assertEquals('7bd204c6-1655-4c27-aeee-53f933c5395f', $item->Id); |
||
| 113 | $this->assertEquals('http://www.example.com/blog/post/1', $item->Link); |
||
| 114 | $this->assertEquals('2009-09-06 16:20:00', (string) $item->Date); |
||
| 115 | $this->assertEquals('Example entry', $item->Title); |
||
| 116 | $this->assertEquals('Here is some text containing an interesting description.', $item->Summary); |
||
| 117 | $this->assertEquals('Here is some text containing an interesting description.', $item->Content); |
||
| 118 | |||
| 119 | // Second read: must still return the first one (cached) |
||
| 120 | $items = $service->getItems(); |
||
| 121 | $this->assertEquals(1, $items->count()); |
||
| 122 | |||
| 123 | // Third read: must read the sample2.rss mocked response |
||
| 124 | $service->clearCache(); |
||
| 125 | $items = $service->getItems(); |
||
| 126 | |||
| 127 | $this->assertEquals(3, $items->count()); |
||
| 128 | |||
| 129 | $item = $items[0]; |
||
| 130 | $this->assertEquals('http://example.org/1', $item->Id); |
||
| 131 | $this->assertEquals('', $item->Link); |
||
| 132 | $this->assertEquals('2017-12-19 11:22:33', (string) $item->Date); |
||
| 133 | $this->assertEquals('Entry 1', $item->Title); |
||
| 134 | $this->assertEquals('', $item->Summary); |
||
| 135 | $this->assertEquals('', $item->Content); |
||
| 136 | |||
| 137 | $item = $items[1]; |
||
| 138 | $this->assertEquals('http://example.org/2', $item->Id); |
||
| 139 | $this->assertEquals('http://example.org/link/2', $item->Link); |
||
| 140 | $this->assertEquals('2017-12-19 22:33:44', (string) $item->Date); |
||
| 141 | $this->assertEquals('Entry 2', $item->Title); |
||
| 142 | $this->assertEquals('Content 2', $item->Summary); |
||
| 143 | $this->assertEquals('Content 2', $item->Content); |
||
| 144 | |||
| 145 | $item = $items[2]; |
||
| 146 | $this->assertEquals('http://example.org/3', $item->Id); |
||
| 147 | $this->assertEquals('http://example.org/link/3', $item->Link); |
||
| 148 | $this->assertEquals('2017-12-19 03:44:55', (string) $item->Date); |
||
| 149 | $this->assertEquals('Entry 3', $item->Title); |
||
| 150 | $this->assertEquals('Summary 3', $item->Summary); |
||
| 151 | $this->assertEquals('Summary 3', $item->Content); |
||
| 152 | |||
| 153 | // Forth read: must still return sample2.rss (cached) |
||
| 154 | $items = $service->getItems(); |
||
| 155 | $this->assertEquals(3, $items->count()); |
||
| 156 | } |
||
| 203 |