Consider extracting the username generation logic as a dependency on the UserService.
interface UserNameGenerator { Strign generate(); }
UserNameGenerator wire is the same as UserDao . And change the code to:
public class UserService { @Autowired private UserDao dao; @Autowired private UserNameGenerator nameGenerator; public void addUser(String username, String password) { if (username.length() < 8 ) { username = nameGenerator.generate(); } User user = new User(username, password); dao.save(user); } }
Then create a standard implementation of UserNameGenerator and move the name generation logic there.
Now you can easily check the behavior by taunting UserNameGenerator and UserDao .
To check use case when username is less than 8
String username = "123"; String password = "pass"; String generatedName = "random";
To check use case when username is longer than 8
String username = "123456789"; String password = "pass"; String generatedName = "random";
Mairbek khadikov
source share