Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/main/java/assertions/Person.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,15 @@ public String getFullName(){
public Period getAge(){
return Period.between(birthDate, LocalDate.now());
}

public Boolean isTeen(int years){
// Is teen if Age 12 <= && >=18
Period age = getAge();
years = age.getYears();
if (years >= 12 && years <= 18){

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

teen kommt von "thirTEEN" und nicht von "twelve" ;)

return true;
}
return false;

}
}
4 changes: 3 additions & 1 deletion src/main/java/fakes/User.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package fakes;

import java.util.Locale;

public class User {

private String username;

public User(String username){
this.username = username;
this.username = username.toLowerCase(Locale.ROOT);
}

public String getUsername() {
Expand Down
25 changes: 22 additions & 3 deletions src/main/java/fakes/UserController.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,34 @@
package fakes;

import java.util.List;

public class UserController {

private static Database db = FileDatabase.getInstance();


private Database db = FileDatabase.getInstance();


private UserValidator userValidator = new UserValidator();

public UserController(){}

//übergabe von erzeugtem FakeUserValidator (Constructor injection)
public UserController(UserValidator userValidator) {
this.userValidator = userValidator;
}

public UserController(Database db, UserValidator userValidator) {
this.db = db;
this.userValidator = userValidator;
}

public Message create(User user){
if(user == null){
throw new IllegalArgumentException("user required");
}
Boolean canCreate = UserValidator.isValidUsername(user.getUsername())
&& !UserValidator.doesUsernameExist(user.getUsername());
Boolean canCreate = this.userValidator.isValidUsername(user.getUsername())
&& !this.userValidator.doesUsernameExist(user.getUsername());
if(canCreate){
db.addUser(user);
return Message.createOK();
Expand Down
43 changes: 33 additions & 10 deletions src/main/java/fakes/UserValidator.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,48 @@
package fakes;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

public class UserValidator {

private static Database db = FileDatabase.getInstance();
private Database db = FileDatabase.getInstance();

public static boolean doesUsernameExist(String username){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
public UserValidator() {
}

for(User user : db.getUsers()){
if (user.getUsername().equals(username)){
public UserValidator(Database db) {
this.db = db;
}

public boolean doesUsernameExist(String username) {
for (User user : this.db.getUsers()) {
if (user.getUsername().equals(username.toLowerCase(Locale.ROOT))) {
return true;
}
}
return false;
}

public static boolean isValidUsername(String username){
public boolean isValidUsername(String username) {
List<Character> chars = new ArrayList<>();
int position = 0;

for (char ch : username.toCharArray()) {
chars.add(ch);
if (!Character.isAlphabetic(ch) ||!Character.isLetter(ch) ) {
if (Character.isDigit(ch) && position > 0 ) {
continue;

}
return false;
}
position+=1;



}
return true;
}

}
59 changes: 54 additions & 5 deletions src/test/java/assertions/PersonTest.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package assertions;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.time.LocalDate;
import java.time.Period;

class PersonTest {

Expand All @@ -11,28 +13,75 @@ class PersonTest {
@Test
void getFullNameReturnsFirstnameSpaceLastname(){
// TODO implement
throw new IllegalArgumentException("you should implement code here");
// throw new IllegalArgumentException("you should implement code here");
Person pers1 = new Person("Tobias", "Meier", null);
Assertions.assertEquals("Tobias Meier",pers1.getFullName());

}

// TODO some more useful tests
@Test
void getFullNameCheckSpaceBetween(){
Person pers1 = new Person("Tobias", "Meier", null);
String fullName = pers1.getFullName();
Assertions.assertTrue(fullName.contains(" "), "True if space between firstname and lastname");
}

@Test
void isTeenAge18_12ReturnTrue(){
Person pers1 = new Person("", "", LocalDate.of(2003, 3,11));
Person pers2 = new Person("", "", LocalDate.of(2009, 3, 11));
Period age1 = pers1.getAge();
Period age2 = pers2.getAge();
int years1 = age1.getYears();
int years2 = age2.getYears();

Assertions.assertEquals(18, age1.getYears());
Assertions.assertEquals(12, age2.getYears());
Assertions.assertTrue(pers1.isTeen(years1),"Is teen = true");
Assertions.assertTrue(pers2.isTeen(years2),"Is teen = true");

}
@Test
void isNotTeenAge11_19ReturnFalse(){
Person pers1 = new Person("", "", LocalDate.of(2010, 3,11));
Person pers2 = new Person("", "", LocalDate.of(2002, 3, 11));
Period age1 = pers1.getAge();
Period age2 = pers2.getAge();
int years1 = age1.getYears();
int years2 = age2.getYears();

Assertions.assertEquals(11, age1.getYears());
Assertions.assertEquals(19, age2.getYears());
Assertions.assertFalse(pers1.isTeen(years1), "Not teen = false");
Assertions.assertFalse(pers2.isTeen(years2), "Not teen = false");
}


// --- getAge

@Test
void getAgeReturns10YearsIfBornIn2009() throws Exception {
void getAgeReturns10YearsIfBorn10YearsFromToday() throws Exception {
// TODO verbessern. Hinweis: Repeatable (wiederholbar) zu jeder Zeit.
Person p = new Person("", "", LocalDate.of(2009, 1, 1));
Person p = new Person("", "", LocalDate.now().minusYears(10));

throw new IllegalArgumentException("you should implement code here");
//throw new IllegalArgumentException("you should implement code here");
Period age = p.getAge();
Assertions.assertEquals(10,age.getYears());
Assertions.assertEquals(0, age.getMonths());
Assertions.assertEquals(0, age.getDays());
}

@Test
void getAgeReturns1DayIfYesterday() throws Exception {
Person p = new Person("", "", LocalDate.now().minusDays(1));

// TODO implement
throw new IllegalArgumentException("you should implement code here");
//throw new IllegalArgumentException("you should implement code here");
Period age = p.getAge();
Assertions.assertEquals(1,age.getDays());
Assertions.assertEquals(0, age.getMonths());
Assertions.assertEquals(0, age.getYears());
}

// TODO some more useful tests
Expand Down
23 changes: 23 additions & 0 deletions src/test/java/fakes/FakeUserValidator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package fakes;

public class FakeUserValidator extends UserValidator {

private boolean usernameExist;
private boolean validUsername;

public FakeUserValidator(boolean usernameExist, boolean validUsername) {
this.usernameExist = usernameExist;
this.validUsername = validUsername;
}


@Override
public boolean doesUsernameExist(String username) {
return this.usernameExist;
}

@Override
public boolean isValidUsername(String username) {
return this.validUsername;
}
}
20 changes: 20 additions & 0 deletions src/test/java/fakes/MockDatabase.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package fakes;

import java.util.ArrayList;
import java.util.List;

public class MockDatabase extends Database {

List<User> users = new ArrayList<>();

@Override
public void addUser(User user) {
users.add(user);

}

@Override
public List<User> getUsers() {
return users;
}
}
Loading