}); it("applies all filter set on the classname", function () { Filter::apply(get_class($this->mock), 'filterable', 'spec.my_prefix'); expect($this->mock->filterable('World!'))->toBe('Hello My World!'); }); it("throws an Exception when trying to apply a filter using an unexisting closure", function () { $closure = function () { Filter::apply($this->mock, 'filterable', 'spec.unexisting_closure'); }; expect($closure)->toThrow(new Exception('Undefined filter `spec.unexisting_closure`.')); }); }); describe("::detach()", function () { it("detaches a filters", function () { Filter::apply($this->mock, 'filterable', 'spec.my_prefix'); Filter::detach($this->mock, 'filterable', 'spec.my_prefix'); expect($this->mock->filterable('World!'))->toBe('Hello World!'); }); }); describe("::filters()", function () { it("gets filters of a context", function () { Filter::apply($this->mock, 'filterable', 'spec.my_prefix'); $filters = Filter::filters($this->mock, 'filterable'); expect($filters)->toBeAn('array')->toHaveLength(1); expect(reset($filters))->toBeAnInstanceOf('Closure'); }); }); describe("::enable()", function () { it("disables the filter system", function () { Filter::apply($this->mock, 'filterable', 'spec.my_prefix'); Filter::enable(false);