Repository navigation
Expand file tree
/
Copy pathUnsetMethodTest.php
More file actions
101 lines (72 loc) · 2.42 KB
/
Copy pathUnsetMethodTest.php
File metadata and controls
101 lines (72 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
/*
* This file is part of https://github.com/josantonius/php-json repository.
*
* (c) Josantonius <hello@josantonius.dev>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
*/
namespace Josantonius\Json\Tests;
use Josantonius\Json\Json;
use PHPUnit\Framework\TestCase;
use Josantonius\Json\Exceptions\GetFileException;
use Josantonius\Json\Exceptions\JsonErrorException;
use Josantonius\Json\Exceptions\NoIterableFileException;
class UnsetMethodTest extends TestCase
{
private string $filepath = __DIR__ . '/filename.json';
public function setUp(): void
{
parent::setup();
}
public function tearDown(): void
{
if (file_exists($this->filepath)) {
unlink($this->filepath);
}
}
public function test_should_unset_element_by_numeric_key(): void
{
$jsonFile = new Json($this->filepath);
$jsonFile->set([1, 2, 3]);
$value = $jsonFile->unset(1);
$this->assertEquals([0 => 1, 2 => 3], $value);
}
public function test_should_unset_element_by_numeric_key_and_reindexed(): void
{
$jsonFile = new Json($this->filepath);
$jsonFile->set([1, 2, 3]);
$value = $jsonFile->unset(1, reindexed: true);
$this->assertEquals([1, 3], $value);
}
public function test_should_unset_element_by_string_key(): void
{
$jsonFile = new Json($this->filepath);
$jsonFile->set(['foo' => 'bar']);
$value = $jsonFile->unset('foo');
$this->assertEquals([], $value);
}
public function test_should_fail_if_the_file_does_not_contain_an_array()
{
$jsonFile = new Json($this->filepath);
$jsonFile->set('foo');
$this->expectException(NoIterableFileException::class);
$jsonFile->unset('foo');
}
public function test_should_fail_if_the_file_does_not_exists(): void
{
$jsonFile = new Json($this->filepath);
$this->expectException(GetFileException::class);
$jsonFile->unset('foo');
}
public function test_should_fail_when_there_are_json_errors_in_the_file(): void
{
$jsonFile = new Json($this->filepath);
file_put_contents($this->filepath, '{');
$this->expectException(JsonErrorException::class);
$jsonFile->unset('foo');
}
}