1
1
Fork 0
mirror of https://code.mensbeam.com/MensBeam/Arsse.git synced 2024-12-22 21:22:40 +00:00

Additional service tests

This commit is contained in:
J. King 2019-10-19 12:14:13 -04:00
parent bad86cedb3
commit 728eecfbb5
4 changed files with 26 additions and 1 deletions

View file

@ -264,6 +264,7 @@ class Conf {
$type |= Value::M_NULL; $type |= Value::M_NULL;
} }
} else { } else {
// catch-all for custom properties
$type = Value::T_MIXED; // @codeCoverageIgnore $type = Value::T_MIXED; // @codeCoverageIgnore
} }
$out[$p->name] = ['name' => $match[0], 'const' => $type]; $out[$p->name] = ['name' => $match[0], 'const' => $type];
@ -286,6 +287,7 @@ class Conf {
} }
switch (self::EXPECTED_TYPES[$key] ?? gettype($this->$key)) { switch (self::EXPECTED_TYPES[$key] ?? gettype($this->$key)) {
case "integer": case "integer":
// no properties are currently typed as integers
return Value::normalize($value, Value::T_INT | $mode); // @codeCoverageIgnore return Value::normalize($value, Value::T_INT | $mode); // @codeCoverageIgnore
case "double": case "double":
return Value::normalize($value, Value::T_FLOAT | $mode); return Value::normalize($value, Value::T_FLOAT | $mode);
@ -293,6 +295,7 @@ class Conf {
case "object": case "object":
return $value; return $value;
default: default:
// this should never occur
throw new Conf\Exception("ambiguousDefault", ['param' => $key]); // @codeCoverageIgnore throw new Conf\Exception("ambiguousDefault", ['param' => $key]); // @codeCoverageIgnore
} }
} }

View file

@ -207,7 +207,7 @@ class API extends \JKingWeb\Arsse\REST\AbstractHandler {
// indexed arrays // indexed arrays
$p->appendChild($this->makeXMLIndexed($v, $d->createElement($k), substr($k, 0, strlen($k) - 1))); $p->appendChild($this->makeXMLIndexed($v, $d->createElement($k), substr($k, 0, strlen($k) - 1)));
} else { } else {
// this case does not actually occur in a proper Fever response // this case is never encountered with Fever's output
$p->appendChild($this->makeXMLAssoc($v, $d->createElement($k))); // @codeCoverageIgnore $p->appendChild($this->makeXMLAssoc($v, $d->createElement($k))); // @codeCoverageIgnore
} }
} }

View file

@ -40,11 +40,13 @@ class Service {
} }
static::cleanupPost(); static::cleanupPost();
$t->add($this->interval); $t->add($this->interval);
// @codeCoverageIgnoreStart
if ($loop) { if ($loop) {
do { do {
@time_sleep_until($t->getTimestamp()); @time_sleep_until($t->getTimestamp());
} while ($t->getTimestamp() > time()); } while ($t->getTimestamp() > time());
} }
// @codeCoverageIgnoreEnd
} while ($loop); } while ($loop);
return $t; return $t;
} }

View file

@ -39,4 +39,24 @@ class TestService extends \JKingWeb\Arsse\Test\AbstractTest {
$this->assertTrue(Service::hasCheckedIn()); $this->assertTrue(Service::hasCheckedIn());
$this->assertFalse(Service::hasCheckedIn()); $this->assertFalse(Service::hasCheckedIn());
} }
public function testPerformPreCleanup() {
$this->assertTrue(Service::cleanupPre());
\Phake::verify(Arsse::$db)->feedCleanup();
\Phake::verify(Arsse::$db)->sessionCleanup();
}
public function testPerformShortPostCleanup() {
\Phake::when(Arsse::$db)->articleCleanup()->thenReturn(0);
$this->assertTrue(Service::cleanupPost());
\Phake::verify(Arsse::$db)->articleCleanup();
\Phake::verify(Arsse::$db, \Phake::times(0))->driverMaintenance();
}
public function testPerformFullPostCleanup() {
\Phake::when(Arsse::$db)->articleCleanup()->thenReturn(1);
$this->assertTrue(Service::cleanupPost());
\Phake::verify(Arsse::$db)->articleCleanup();
\Phake::verify(Arsse::$db)->driverMaintenance();
}
} }