Skip to content

Commit 068a069

Browse files
committed
Improve remove method and add more tests for BungeeJsonFile class
- Handle single-part paths in `remove` method - Add test for removing a key and verifying remaining keys - Add test for removing a non-existent key - Add test for removing a nested key - Add test for removing all keys in a node - Add test for verifying keys after all values are removed
1 parent 6adb3b8 commit 068a069

File tree

2 files changed

+60
-5
lines changed

2 files changed

+60
-5
lines changed

SimpleAPI/src/main/java/com/bencodez/simpleapi/file/BungeeJsonFile.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,16 @@ public synchronized void setStringList(String path, List<String> value) {
216216
}
217217

218218
public synchronized void remove(String path) {
219-
JsonObject node = navigateToNode(path);
220-
if (node != null) {
221-
String lastPart = getLastPathPart(path);
222-
node.remove(lastPart);
223-
}
219+
if (!path.contains(".")) {
220+
conf.remove(path);
221+
return;
222+
}
223+
224+
JsonObject node = navigateToNode(path);
225+
if (node != null) {
226+
String lastPart = getLastPathPart(path);
227+
node.remove(lastPart);
228+
}
224229
}
225230

226231
public void reload() {

SimpleAPI/src/test/java/com/bencodez/simpleapi/tests/BungeeJsonFileTest.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,56 @@ public void testGetKeysInvalidPath() {
116116
assertTrue(keys.isEmpty());
117117
}
118118

119+
@Test
120+
public void getKeysAfterValueRemoved() {
121+
bungeeJsonFile.setString("test.keys2.remove.one", "1");
122+
bungeeJsonFile.setString("test.keys2.remove.two", "2");
123+
bungeeJsonFile.remove("test.keys2.remove.one");
124+
List<String> keys = bungeeJsonFile.getKeys("test.keys2.remove");
125+
assertNotNull(keys);
126+
assertEquals(1, keys.size());
127+
assertTrue(keys.contains("two"));
128+
}
129+
130+
@Test
131+
public void removeNonExistentKey() {
132+
bungeeJsonFile.remove("non.existent.key");
133+
String result = bungeeJsonFile.getString("non.existent.key", null);
134+
assertNull(result);
135+
}
136+
137+
@Test
138+
public void removeNestedKey() {
139+
bungeeJsonFile.setString("nested.key.one", "value1");
140+
bungeeJsonFile.setString("nested.key.two", "value2");
141+
bungeeJsonFile.remove("nested.key.one");
142+
List<String> keys = bungeeJsonFile.getKeys("nested.key");
143+
assertNotNull(keys);
144+
assertEquals(1, keys.size());
145+
assertTrue(keys.contains("two"));
146+
}
147+
148+
@Test
149+
public void removeAllKeysInNode() {
150+
bungeeJsonFile.setString("node.key.one", "value1");
151+
bungeeJsonFile.setString("node.key.two", "value2");
152+
bungeeJsonFile.remove("node");
153+
List<String> keys = bungeeJsonFile.getKeys("node");
154+
assertNotNull(keys);
155+
assertTrue(keys.isEmpty());
156+
}
157+
158+
@Test
159+
public void getKeysAfterAllValuesRemoved() {
160+
bungeeJsonFile.setString("test.keys3.remove.all.one", "1");
161+
bungeeJsonFile.setString("test.keys3.remove.all.two", "2");
162+
bungeeJsonFile.remove("test.keys3.remove.all.one");
163+
bungeeJsonFile.remove("test.keys3.remove.all.two");
164+
List<String> keys = bungeeJsonFile.getKeys("test.keys3.remove.all");
165+
assertNotNull(keys);
166+
assertTrue(keys.isEmpty());
167+
}
168+
119169
@Test
120170
public void testGetNode() {
121171
bungeeJsonFile.setString("test.node.key", "value");

0 commit comments

Comments
 (0)