Skip to content

Commit

Permalink
Add favorite share mapper tests
Browse files Browse the repository at this point in the history
Signed-off-by: Paul Schwörer <[email protected]>
  • Loading branch information
paulschwoerer committed Feb 5, 2020
1 parent 7bca800 commit 110e7ef
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 1 deletion.
3 changes: 3 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
{
"require": {
"lsolesen/pel": "^0.9.6"
},
"require-dev": {
"christophwurst/nextcloud_testing": "^0.9.1"
}
}
21 changes: 20 additions & 1 deletion lib/DB/FavoriteShareMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ public function findByToken($token) {
return $this->findEntity($qb);
}

/**
* @param $owner
* @param $category
* @return Entity
*/
public function create($owner, $category) {
$token = $this->secureRandom->generate(
Constants::TOKEN_LENGTH,
Expand All @@ -55,13 +60,17 @@ public function create($owner, $category) {
return $this->insert($newShare);
}

/**
* @param $owner
* @return array|Entity[]
*/
public function findAllByOwner($owner) {
$qb = $this->db->getQueryBuilder();

$qb->select("*")
->from($this->getTableName())
->where(
$qb->expr()->eq('owner', $qb->createNamedParameter($owner, IQueryBuilder::PARAM_INT))
$qb->expr()->eq('owner', $qb->createNamedParameter($owner, IQueryBuilder::PARAM_STR))
);

return $this->findEntities($qb);
Expand All @@ -88,6 +97,11 @@ public function findByOwnerAndCategory($owner, $category) {
return $this->findEntity($qb);
}

/**
* @param $owner
* @param $category
* @return Entity|null
*/
public function findOrCreateByOwnerAndCategory($owner, $category) {
/* @var Entity */
$entity = null;
Expand All @@ -101,6 +115,11 @@ public function findOrCreateByOwnerAndCategory($owner, $category) {
return $entity;
}

/**
* @param $owner
* @param $category
* @return bool
*/
public function removeByOwnerAndCategory($owner, $category) {
try {
$entity = $this->findByOwnerAndCategory($owner, $category);
Expand Down
103 changes: 103 additions & 0 deletions tests/Unit/Mapper/FavoriteShareMapperTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
<?php


namespace tests\Unit\Mapper;


use ChristophWurst\Nextcloud\Testing\DatabaseTransaction;
use ChristophWurst\Nextcloud\Testing\TestCase;
use OC;
use OCA\Maps\DB\FavoriteShare;
use OCA\Maps\DB\FavoriteShareMapper;
use OCP\AppFramework\Db\DoesNotExistException;

class FavoriteShareMapperTest extends TestCase {
use DatabaseTransaction;

/* @var FavoriteShareMapper */
private $favoriteShareMapper;

public function setUp(): void {
parent::setUp();

$this->favoriteShareMapper = new FavoriteShareMapper(
OC::$server->getDatabaseConnection(),
OC::$server->getSecureRandom()
);
}

public function testCreateByOwnerAndTokenIsSuccessful() {
/* @var FavoriteShare */
$share = $this->favoriteShareMapper->create("testUser", "testCategory");

$this->assertIsString($share->getToken());
$this->assertEquals("testUser", $share->getOwner());
$this->assertEquals("testCategory", $share->getCategory());
}

public function testFindByTokenIsSuccessful() {
/* @var FavoriteShare */
$shareExpected = $this->favoriteShareMapper->create("testUser", "testCategory");

/* @var FavoriteShare */
$shareActual = $this->favoriteShareMapper->findByToken($shareExpected->getToken());

$this->assertEquals($shareExpected->getToken(), $shareActual->getToken());
$this->assertEquals($shareExpected->getOwner(), $shareActual->getOwner());
$this->assertEquals($shareExpected->getCategory(), $shareActual->getCategory());
}

public function testFindByOwnerAndCategoryIsSuccessful() {
/* @var FavoriteShare */
$shareExpected = $this->favoriteShareMapper->create("testUser", "testCategory");

/* @var FavoriteShare */
$shareActual = $this->favoriteShareMapper->findByOwnerAndCategory("testUser", "testCategory");

$this->assertEquals($shareExpected->getToken(), $shareActual->getToken());
$this->assertEquals($shareExpected->getOwner(), $shareActual->getOwner());
$this->assertEquals($shareExpected->getCategory(), $shareActual->getCategory());
}

public function testFindAllByOwnerIsSuccessfulAndDoesNotContainOtherShares() {
/* @var FavoriteShare */
$share1 = $this->favoriteShareMapper->create("testUser", "testCategory1");

/* @var FavoriteShare */
$share2 = $this->favoriteShareMapper->create("testUser", "testCategory2");

$this->favoriteShareMapper->create("testUser2", "testCategory");

/* @var array */
$shares = $this->favoriteShareMapper->findAllByOwner("testUser");

$shareTokens = array_map(function ($share) {
return $share->getToken();
}, $shares);

$this->assertEquals(2, count($shareTokens));
$this->assertContains($share1->getToken(), $shareTokens);
$this->assertContains($share2->getToken(), $shareTokens);
}

public function testFindOrCreateByOwnerAndCategoryIsSuccessful() {
/* @var FavoriteShare */
$share = $this->favoriteShareMapper->findOrCreateByOwnerAndCategory("testUser", "testCategory");

$this->assertIsString($share->getToken());
$this->assertEquals("testUser", $share->getOwner());
$this->assertEquals("testCategory", $share->getCategory());
}

public function testRemoveByOwnerAndCategoryIsSuccessful() {
/* @var FavoriteShare */
$share = $this->favoriteShareMapper->create("testUser", "testCategory");

$this->favoriteShareMapper->removeByOwnerAndCategory($share->getOwner(), $share->getCategory());

$this->expectException(DoesNotExistException::class);

$this->favoriteShareMapper->findByOwnerAndCategory($share->getOwner(), $share->getCategory());
}

}

0 comments on commit 110e7ef

Please sign in to comment.