### Question:
CommandManager implements Reloadable { public void runCommandsOnFirstLogin(Player player, List<String> otherAccounts) { final int numberOfOtherAccounts = otherAccounts.size(); executeCommands(player, onFirstLoginCommands.getAdaptedItems(player), cmd -> shouldCommandBeRun(cmd, numberOfOtherAccounts)); } @Inject  CommandManager(@DataFolder File dataFolder, BukkitService bukkitService, GeoIpService geoIpService,
                   CommandMigrationService commandMigrationService); void runCommandsOnJoin(Player player); void runCommandsOnRegister(Player player); void runCommandsOnLogin(Player player, List<String> otherAccounts); void runCommandsOnSessionLogin(Player player); void runCommandsOnFirstLogin(Player player, List<String> otherAccounts); void runCommandsOnUnregister(Player player); void runCommandsOnLogout(Player player); @Override void reload();  }### Answer:
@Test public void shouldExecuteCommandsOnFirstLogin() { copyJarFileAsCommandsYml(TEST_FILES_FOLDER + "commands.complete.yml"); initManager(); manager.runCommandsOnFirstLogin(player, Collections.emptyList()); verify(bukkitService).dispatchConsoleCommand("pay Bobby 30"); verifyNoMoreInteractions(bukkitService); verifyZeroInteractions(geoIpService); }
@Test public void shouldNotExecuteFirstLoginCommandWhoseThresholdIsNotMet() { copyJarFileAsCommandsYml(TEST_FILES_FOLDER + "commands.complete.yml"); initManager(); manager.runCommandsOnFirstLogin(player, Arrays.asList("u", "wot", "m8")); verifyZeroInteractions(bukkitService, geoIpService); }