diff --git a/composer.json b/composer.json index e182008..a3c97ed 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,8 @@ "email": "oliver@oliverdavies.uk" } ], - "require": {}, + "require": { + }, "require-dev": { "phpunit/phpunit": "^5.7" }, diff --git a/src/Filter.php b/src/Filter.php new file mode 100644 index 0000000..fef13d8 --- /dev/null +++ b/src/Filter.php @@ -0,0 +1,52 @@ + $value]; + } + + public function from() + { + return ['from' => func_get_args()]; + } + + public function label($label) + { + return ['label' => $label]; + } + + public function archive() + { + return ['shouldArchive' => 'true']; + } + + public function labelAndArchive($label) + { + return $this->label($label) + $this->archive(); + } + + public function spam() + { + return [ + 'shouldSpam' => 'true', + 'shouldNeverSpam' => 'false', + ]; + } + + public function neverSpam() + { + return [ + 'shouldSpam' => 'false', + 'shouldNeverSpam' => 'true', + ]; + } + + public function trash() + { + return ['shouldTrash' => 'true']; + } +} diff --git a/tests/Unit/FilterTest.php b/tests/Unit/FilterTest.php new file mode 100644 index 0000000..c67f892 --- /dev/null +++ b/tests/Unit/FilterTest.php @@ -0,0 +1,121 @@ +filter = new Filter(); + } + + /** + * @covers Filter::has() + */ + public function testHas() + { + $this->assertEquals( + ['hasTheWord' => 'something'], + $this->filter->has('something') + ); + } + + /** + * @covers Filter::from() + */ + public function testFrom() + { + // Ensure that we can set one from address. + $this->assertEquals( + ['from' => ['foo@example.com']], + $this->filter->from('foo@example.com') + ); + + // Ensure that we can set multiple from addresses. + $this->assertEquals( + ['from' => ['foo@example.com', 'bar@example.com']], + $this->filter->from('foo@example.com', 'bar@example.com') + ); + } + + /** + * @covers Filter::label() + */ + public function testLabel() + { + $this->assertEquals(['label' => 'Foo'], $this->filter->label('Foo')); + } + + /** + * @covers Filter::archive() + */ + public function testArchive() + { + $this->assertEquals( + ['shouldArchive' => 'true'], + $this->filter->archive() + ); + } + + /** + * @covers Filter::labelAndArchive() + */ + public function testLabelAndArchive() + { + $this->assertEquals( + ['shouldArchive' => 'true', 'label' => 'Foo'], + $this->filter->labelAndArchive('Foo') + ); + } + + /** + * @covers Filter::spam() + */ + public function testSpam() + { + $this->assertEquals( + [ + 'shouldSpam' => 'true', + 'shouldNeverSpam' => 'false' + ], + $this->filter->spam() + ); + } + + /** + * @covers Filter::neverSpam() + */ + public function testNeverSpam() + { + $this->assertEquals( + [ + 'shouldSpam' => 'false', + 'shouldNeverSpam' => 'true' + ], + $this->filter->neverSpam() + ); + } + + /** + * @covers Filter::trash() + */ + public function testTrash() + { + $this->assertEquals( + ['shouldTrash' => 'true'], + $this->filter->trash() + ); + } +}