assertTrue($data->isBoolean()); $this->assertTrue($data->isTrue()); $this->assertFalse($data->isFalse()); $this->assertEquals(Table::LEVEL_NO, $data->getDelete()); } public function testBooleanFalse() { $data = ScopeData::fromRaw(false); $this->assertTrue($data->isBoolean()); $this->assertTrue($data->isFalse()); $this->assertFalse($data->isTrue()); $this->assertEquals(Table::LEVEL_NO, $data->getDelete()); } public function testNotBoolean() { $data = ScopeData::fromRaw((object) []); $this->assertFalse($data->isBoolean()); $this->assertFalse($data->isTrue()); $this->assertFalse($data->isFalse()); } public function testInvalid() { $this->expectException(InvalidArgumentException::class); ScopeData::fromRaw(null); } public function testRecord() { $raw = (object) [ Table::ACTION_CREATE => Table::LEVEL_YES, Table::ACTION_READ => Table::LEVEL_ALL, Table::ACTION_EDIT => Table::LEVEL_TEAM, Table::ACTION_DELETE => Table::LEVEL_NO, ]; $data = ScopeData::fromRaw($raw); $this->assertEquals(Table::LEVEL_YES, $data->getCreate()); $this->assertEquals(Table::LEVEL_ALL, $data->getRead()); $this->assertEquals(Table::LEVEL_TEAM, $data->getEdit()); $this->assertEquals(Table::LEVEL_NO, $data->getDelete()); $this->assertTrue($data->hasNotNo()); } public function testRecordEmpty() { $raw = (object) []; $data = ScopeData::fromRaw($raw); $this->assertEquals(Table::LEVEL_NO, $data->getDelete()); $this->assertFalse($data->hasNotNo()); } public function testRecordOnlyNo() { $raw = (object) [ Table::ACTION_CREATE => Table::LEVEL_NO, Table::ACTION_READ => Table::LEVEL_NO, Table::ACTION_EDIT => Table::LEVEL_NO, Table::ACTION_DELETE => Table::LEVEL_NO, ]; $data = ScopeData::fromRaw($raw); $this->assertEquals(Table::LEVEL_NO, $data->getDelete()); $this->assertFalse($data->hasNotNo()); } public function testAccessingProperty() { $this->expectException(RuntimeException::class); $data = ScopeData::fromRaw(false); $data->read; } public function testBadKey() { $this->expectException(RuntimeException::class); ScopeData::fromRaw((object) [ Table::ACTION_CREATE => false, ]); } }