public function testMacroable() { // Foo() macro : unique values starting with A Collection::macro('foo', function () { return $this->filter(function ($item) { return strpos($item, 'a') === 0; })->unique()->values(); }); $c = new Collection(['a', 'a', 'aa', 'aaa', 'bar']); $this->assertSame(['a', 'aa', 'aaa'], $c->foo()->all()); }