@@ -234,6 +234,58 @@ default void unsatisfiedPlayerConditionalResultsAreCleaned() {
234234 checkThatPlayerDataExists (ConditionalExtension .condition );
235235 }
236236
237+ @ Test
238+ default void unsatisfiedPlayerConditionalResultsAreCleanedCompletely () {
239+ db ().executeTransaction (new PlayerRegisterTransaction (playerUUID , System ::currentTimeMillis , TestConstants .PLAYER_ONE_NAME ));
240+
241+ ExtensionSvc extensionService = extensionService ();
242+
243+ extensionService .register (new RemovingConditionalExtension ());
244+
245+ RemovingConditionalExtension .condition = true ;
246+ extensionService .updatePlayerValues (playerUUID , TestConstants .PLAYER_ONE_NAME , CallEvents .MANUAL );
247+
248+ List <ExtensionData > ofServer = db ().query (new ExtensionPlayerDataQuery (playerUUID )).get (serverUUID ());
249+ assertTrue (ofServer != null && !ofServer .isEmpty () && !ofServer .get (0 ).getTabs ().isEmpty (), "There was no data left" );
250+ ExtensionTabData tabData = ofServer .get (0 ).getTabs ().get (0 );
251+ assertEquals (RemovingConditionalExtension .condition , tabData .getString ("conditionalValue" ).isPresent ());
252+
253+ // Reverse condition
254+ RemovingConditionalExtension .condition = false ;
255+ extensionService .updatePlayerValues (playerUUID , TestConstants .PLAYER_ONE_NAME , CallEvents .MANUAL );
256+
257+ ofServer = db ().query (new ExtensionPlayerDataQuery (playerUUID )).get (serverUUID ());
258+ assertTrue (ofServer != null && !ofServer .isEmpty () && !ofServer .get (0 ).getTabs ().isEmpty (), "There was no data left" );
259+ tabData = ofServer .get (0 ).getTabs ().get (0 );
260+ assertEquals (RemovingConditionalExtension .condition , tabData .getString ("conditionalValue" ).isPresent ());
261+ }
262+
263+ @ Test
264+ default void unsatisfiedServerConditionalResultsAreCleanedCompletely () {
265+ db ().executeTransaction (new PlayerRegisterTransaction (playerUUID , System ::currentTimeMillis , TestConstants .PLAYER_ONE_NAME ));
266+
267+ ExtensionSvc extensionService = extensionService ();
268+
269+ extensionService .register (new RemovingConditionalExtension ());
270+
271+ RemovingConditionalExtension .condition = true ;
272+ extensionService .updateServerValues (CallEvents .MANUAL );
273+
274+ List <ExtensionData > ofServer = db ().query (new ExtensionServerDataQuery (serverUUID ()));
275+ assertTrue (ofServer != null && !ofServer .isEmpty () && !ofServer .get (0 ).getTabs ().isEmpty (), "There was no data left" );
276+ ExtensionTabData tabData = ofServer .get (0 ).getTabs ().get (0 );
277+ assertEquals (RemovingConditionalExtension .condition , tabData .getString ("conditionalValue" ).isPresent ());
278+
279+ // Reverse condition
280+ RemovingConditionalExtension .condition = false ;
281+ extensionService .updateServerValues (CallEvents .MANUAL );
282+
283+ ofServer = db ().query (new ExtensionServerDataQuery (serverUUID ()));
284+ assertTrue (ofServer != null && !ofServer .isEmpty () && !ofServer .get (0 ).getTabs ().isEmpty (), "There was no data left" );
285+ tabData = ofServer .get (0 ).getTabs ().get (0 );
286+ assertEquals (RemovingConditionalExtension .condition , tabData .getString ("conditionalValue" ).isPresent ());
287+ }
288+
237289 default void checkThatPlayerDataExists (boolean condition ) {
238290 if (condition ) { // Condition is true, conditional values exist
239291 List <ExtensionData > ofServer = db ().query (new ExtensionPlayerDataQuery (playerUUID )).get (serverUUID ());
@@ -437,6 +489,34 @@ public String unconditional() {
437489 }
438490 }
439491
492+ @ PluginInfo (name = "ConditionalExtension" )
493+ class RemovingConditionalExtension implements DataExtension {
494+
495+ static boolean condition = true ;
496+
497+ @ BooleanProvider (text = "a boolean" , conditionName = "condition" )
498+ public boolean isCondition (UUID playerUUID ) {
499+ return condition ;
500+ }
501+
502+ @ StringProvider (text = "Conditional Value" )
503+ @ Conditional ("condition" )
504+ public String conditionalValue (UUID playerUUID ) {
505+ return "Conditional" ;
506+ }
507+
508+ @ BooleanProvider (text = "a boolean" , conditionName = "condition" )
509+ public boolean isCondition () {
510+ return condition ;
511+ }
512+
513+ @ StringProvider (text = "Conditional Value" )
514+ @ Conditional ("condition" )
515+ public String conditionalValue () {
516+ return "Conditional" ;
517+ }
518+ }
519+
440520 @ PluginInfo (name = "ServerExtension" )
441521 class ServerExtension implements DataExtension {
442522 @ NumberProvider (text = "a number" )
0 commit comments