diff --git a/src/Builder.php b/src/Builder.php
index 094795d..9c42b46 100644
--- a/src/Builder.php
+++ b/src/Builder.php
@@ -12,5 +12,44 @@ class Builder
public function build()
{
+ $prefix = "";
+ $suffix = '';
+
+ $xml = collect($this->filters)->map(function ($items) {
+ return $this->buildEntry($items);
+ })->implode('');
+
+ return $prefix . $xml . $suffix;
+ }
+
+ /**
+ * @param array $items
+ *
+ * @return string
+ */
+ private function buildEntry(array $items)
+ {
+ $entry = collect($items)->map(function ($value, $key) {
+ return $this->buildProperty($value, $key);
+ })->implode('');
+
+ return "{$entry}";
+ }
+
+ /**
+ * Build XML for a property.
+ *
+ * @param string $value
+ * @param string $key
+ *
+ * @return string
+ */
+ private function buildProperty($value, $key)
+ {
+ if ($key == 'from') {
+ $value = collect($value)->implode('|');
+ }
+
+ return "";
}
}
diff --git a/tests/Unit/BuilderTest.php b/tests/Unit/BuilderTest.php
index eb66502..dd417f7 100644
--- a/tests/Unit/BuilderTest.php
+++ b/tests/Unit/BuilderTest.php
@@ -8,33 +8,37 @@ class BuilderTest extends TestCase
{
public function testBuild()
{
- $filterA = $this->getMockBuilder(Filter::class)
- ->setMethods(['getProperties'])
- ->getMock();
+ $filterA = (new Filter())
+ ->from('foo@example.com', 'test@example.com')
+ ->label('Some label')
+ ->archive();
- $filterB = $this->getMockBuilder(Filter::class)
- ->setMethods(['getProperties'])
- ->getMock();
-
- $filterA->method('getProperties')
- ->willReturn(
- [
- ['from' => 'foo@example.com'],
- ['shouldStar' => true],
- ]
- );
-
- $filterB->method('getProperties')
- ->willReturn(
- [
- ['to' => 'bar@example.com'],
- ]
- );
+ $filterB = (new Filter())
+ ->has('from:bar@example.com')
+ ->star()
+ ->important();
$builder = new Builder([
$filterA->getProperties(),
$filterB->getProperties(),
]);
- $builder->build();
+
+ $result = $builder->build();
+
+ $expected = "";
+ $expected .= "";
+ $expected .= '';
+ $expected .= "";
+ $expected .= "";
+ $expected .= "";
+ $expected .= '';
+ $expected .= '';
+ $expected .= "";
+ $expected .= "";
+ $expected .= "";
+ $expected .= '';
+ $expected .= '';
+
+ $this->assertEquals($expected, $result);
}
}