summaryrefslogtreecommitdiff
path: root/tests/Unit/Models
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Unit/Models')
-rw-r--r--tests/Unit/Models/EventConfigTest.php128
1 files changed, 128 insertions, 0 deletions
diff --git a/tests/Unit/Models/EventConfigTest.php b/tests/Unit/Models/EventConfigTest.php
new file mode 100644
index 00000000..f08e8801
--- /dev/null
+++ b/tests/Unit/Models/EventConfigTest.php
@@ -0,0 +1,128 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Models;
+
+use Carbon\Carbon;
+use Engelsystem\Models\EventConfig;
+use Engelsystem\Test\Unit\HasDatabase;
+use PHPUnit\Framework\TestCase;
+
+class EventConfigTest extends TestCase
+{
+ use HasDatabase;
+
+ /**
+ * @covers \Engelsystem\Models\EventConfig::setValueAttribute
+ */
+ public function testSetValueAttribute()
+ {
+ (new EventConfig())
+ ->setAttribute('name', 'foo')
+ ->setAttribute('value', 'bar')
+ ->save();
+ $this->assertEquals(
+ '"bar"',
+ $this->database
+ ->selectOne("SELECT `value` FROM event_config WHERE name='foo'")
+ ->value
+ );
+
+ (new EventConfig())
+ ->setAttribute('name', 'buildup_start')
+ ->setAttribute('value', new Carbon('2000-01-01 10:20'))
+ ->save();
+ $this->assertEquals(
+ '"2000-01-01"',
+ $this->database
+ ->selectOne("SELECT `value` FROM event_config WHERE name='buildup_start'")
+ ->value
+ );
+
+ ($this->getEventConfig())
+ ->setAttribute('name', 'event_start')
+ ->setValueCast('event_start', 'datetime')
+ ->setAttribute('value', new Carbon('2010-11-11 20:22'))
+ ->save();
+ $this->assertEquals(
+ '"' . (new Carbon('2010-11-11 20:22'))->format(Carbon::ATOM) . '"',
+ $this->database
+ ->selectOne("SELECT `value` FROM event_config WHERE name='event_start'")
+ ->value
+ );
+ }
+
+ /**
+ * @covers \Engelsystem\Models\EventConfig::getValueAttribute
+ */
+ public function testGetValueAttribute()
+ {
+ $model = new EventConfig(['name', 'buildup_start', 'value' => '']);
+ $this->assertEquals('', $model->value);
+
+ (new EventConfig())
+ ->setAttribute('name', 'buildup_start')
+ ->setAttribute('value', new Carbon('2001-02-03 11:12'))
+ ->save();
+ $this->assertEquals(
+ '2001-02-03 00:00',
+ EventConfig::find('buildup_start')
+ ->value
+ ->format('Y-m-d H:i')
+ );
+
+ ($this->getEventConfig())
+ ->setAttribute('name', 'event_start')
+ ->setValueCast('event_start', 'datetime')
+ ->setAttribute('value', new Carbon('2010-11-11 20:22'))
+ ->save();
+ $this->assertEquals(
+ '2010-11-11 20:22',
+ ($this->getEventConfig())->find('event_start')
+ ->setValueCast('event_start', 'datetime')
+ ->value
+ ->format('Y-m-d H:i')
+ );
+ }
+
+ /**
+ * @covers \Engelsystem\Models\EventConfig::getValueCast
+ */
+ public function testGetValueCast()
+ {
+ $model = new EventConfig(['value' => 'bar']);
+ $this->assertEquals('bar', $model->value);
+
+ return;
+ }
+
+ /**
+ * Init a new EventConfig class
+ *
+ * @return EventConfig
+ */
+ protected function getEventConfig()
+ {
+ return new class extends EventConfig
+ {
+ /**
+ * @param string $value
+ * @param string $type
+ * @return EventConfig
+ */
+ public function setValueCast($value, $type)
+ {
+ $this->valueCasts[$value] = $type;
+
+ return $this;
+ }
+ };
+ }
+
+ /**
+ * Prepare test
+ */
+ protected function setUp()
+ {
+ $this->initDatabase();
+ }
+}