nextcloud-custom-apps-face-.../git_facerecognition/tests/Integration/ResetAllTest.php
2024-09-03 09:12:12 +05:00

99 lines
4.1 KiB
PHP

<?php
/**
* @copyright Copyright (c) 2017, Matias De lellis <mati86dl@gmail.com>
* @copyright Copyright (c) 2018, Branko Kokanovic <branko@kokanovic.org>
*
* @author Branko Kokanovic <branko@kokanovic.org>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\FaceRecognition\Tests\Integration;
use OC;
use OC\Files\View;
use OCP\IConfig;
use OCP\IUser;
use OCP\AppFramework\App;
use OCP\AppFramework\IAppContainer;
use OCA\FaceRecognition\Service\FaceManagementService;
use OCA\FaceRecognition\BackgroundJob\FaceRecognitionContext;
use OCA\FaceRecognition\BackgroundJob\FaceRecognitionLogger;
use OCA\FaceRecognition\BackgroundJob\Tasks\AddMissingImagesTask;
use OCA\FaceRecognition\Db\Face;
use OCA\FaceRecognition\Db\Image;
use OCA\FaceRecognition\Db\Person;
use OCA\FaceRecognition\Model\ModelManager;
use Test\TestCase;
class ResetAllTest extends IntegrationTestCase {
/**
* Test that AddMissingImagesTask is updating app config that it finished full scan.
* Note that, in this test, we cannot check number of newly found images,
* as this instance might be in use and can lead to wrong results
*/
public function testResetAll() {
// Add one image to DB
$imageMapper = $this->container->query('OCA\FaceRecognition\Db\ImageMapper');
$image = new Image();
$image->setUser($this->user->getUid());
$image->setFile(1);
$image->setModel(ModelManager::DEFAULT_FACE_MODEL_ID);
$image = $imageMapper->insert($image);
$imageCount = $imageMapper->countUserImages($this->user->getUID(), ModelManager::DEFAULT_FACE_MODEL_ID);
$this->assertEquals(1, $imageCount);
// Add one person to DB
$personMapper = $this->container->query('OCA\FaceRecognition\Db\PersonMapper');
$person = new Person();
$person->setUser($this->user->getUID());
$person->setIsValid(true);
$person->setName('foo');
$person = $personMapper->insert($person);
$personCount = $personMapper->countPersons($this->user->getUID(), ModelManager::DEFAULT_FACE_MODEL_ID);
$this->assertEquals(0, $personCount); // Still 0 due it has no associated faces
// Add one face to DB
$faceMapper = $this->container->query('OCA\FaceRecognition\Db\FaceMapper');
$face = Face::fromModel($image->getId(), array("left"=>0, "right"=>100, "top"=>0, "bottom"=>100, "detection_confidence"=>1.0));
$face->setPerson($person->getId());
$face = $faceMapper->insertFace($face);
$faceCount = $faceMapper->countFaces($this->user->getUID(), ModelManager::DEFAULT_FACE_MODEL_ID);
$this->assertEquals(1, $faceCount);
// Check faces with all correct relationships
$personCount = $personMapper->countPersons($this->user->getUID(), ModelManager::DEFAULT_FACE_MODEL_ID);
$this->assertEquals(1, $personCount);
// Execute reset all
$userManager = $this->container->query('OCP\IUserManager');
$settingsService = $this->container->query('OCA\FaceRecognition\Service\SettingsService');
$faceMgmtService = new FaceManagementService($userManager, $faceMapper, $imageMapper, $personMapper, $settingsService);
$faceMgmtService->resetAllForUser($this->user->getUID());
// Check that everything is gone
$imageCount = $imageMapper->countUserImages($this->user->getUID(), ModelManager::DEFAULT_FACE_MODEL_ID);
$this->assertEquals(0, $imageCount);
$faceCount = $faceMapper->countFaces($this->user->getUID(), ModelManager::DEFAULT_FACE_MODEL_ID);
$this->assertEquals(0, $faceCount);
$personCount = $personMapper->countPersons($this->user->getUID(), ModelManager::DEFAULT_FACE_MODEL_ID);
$this->assertEquals(0, $personCount);
}
}