From 9885bcb7df118709373e8d1acda448e12f2834bb Mon Sep 17 00:00:00 2001 From: Claudia Date: Fri, 8 Oct 2021 19:47:26 +0200 Subject: [PATCH 1/9] yeah :) --- src/test/java/assertions/PersonTest.java | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/test/java/assertions/PersonTest.java b/src/test/java/assertions/PersonTest.java index ddfacc8..efc5e14 100644 --- a/src/test/java/assertions/PersonTest.java +++ b/src/test/java/assertions/PersonTest.java @@ -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 { @@ -11,7 +13,10 @@ 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 @@ -20,11 +25,15 @@ void getFullNameReturnsFirstnameSpaceLastname(){ // --- getAge @Test - void getAgeReturns10YearsIfBornIn2009() throws Exception { + void getAgeReturns10YearsIfBornIn2011() 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 @@ -32,7 +41,11 @@ 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 From ef04ced08c2e7aacd13bf790bb253959d350ed22 Mon Sep 17 00:00:00 2001 From: Claudia Date: Tue, 19 Oct 2021 15:26:19 +0200 Subject: [PATCH 2/9] =?UTF-8?q?Test=20name=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/assertions/PersonTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/assertions/PersonTest.java b/src/test/java/assertions/PersonTest.java index efc5e14..7b69c06 100644 --- a/src/test/java/assertions/PersonTest.java +++ b/src/test/java/assertions/PersonTest.java @@ -25,7 +25,7 @@ void getFullNameReturnsFirstnameSpaceLastname(){ // --- getAge @Test - void getAgeReturns10YearsIfBornIn2011() throws Exception { + void getAgeReturns10YearsIfBorn10YearsFromToday() throws Exception { // TODO verbessern. Hinweis: Repeatable (wiederholbar) zu jeder Zeit. Person p = new Person("", "", LocalDate.now().minusYears(10)); From ff1b5772b7bd1ea6fd2c8d8d9cfc6a7692888d0e Mon Sep 17 00:00:00 2001 From: Claudia Date: Thu, 4 Nov 2021 10:36:55 +0100 Subject: [PATCH 3/9] =?UTF-8?q?isTeen=20Method=20in=20Person.java=20erg?= =?UTF-8?q?=C3=A4nzt=20PersonTest.java=20,=20Tests=20zu=20isTeen()=20gesch?= =?UTF-8?q?rieben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/assertions/Person.java | 11 ++++++++ src/test/java/assertions/PersonTest.java | 36 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/main/java/assertions/Person.java b/src/main/java/assertions/Person.java index ac7666b..87ba6e5 100644 --- a/src/main/java/assertions/Person.java +++ b/src/main/java/assertions/Person.java @@ -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){ + return true; + } + return false; + + } } diff --git a/src/test/java/assertions/PersonTest.java b/src/test/java/assertions/PersonTest.java index 7b69c06..1ecc385 100644 --- a/src/test/java/assertions/PersonTest.java +++ b/src/test/java/assertions/PersonTest.java @@ -20,6 +20,42 @@ void getFullNameReturnsFirstnameSpaceLastname(){ } // 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 From 193d6a0aa0c61a7585f305101bfe03b2e27ce9c3 Mon Sep 17 00:00:00 2001 From: Claudia Date: Wed, 10 Nov 2021 10:28:05 +0100 Subject: [PATCH 4/9] Stand nach Unittesting Lektion --- src/main/java/fakes/UserController.java | 20 ++++++-- src/main/java/fakes/UserValidator.java | 8 ++-- src/test/java/fakes/FakeUserValidator.java | 23 ++++++++++ src/test/java/fakes/MockDatabase.java | 19 ++++++++ src/test/java/fakes/UserControllerTest.java | 51 +++++++++++++++++++-- src/test/java/fakes/UserValidatorTest.java | 9 +++- 6 files changed, 116 insertions(+), 14 deletions(-) create mode 100644 src/test/java/fakes/FakeUserValidator.java create mode 100644 src/test/java/fakes/MockDatabase.java diff --git a/src/main/java/fakes/UserController.java b/src/main/java/fakes/UserController.java index d61b7e8..c800498 100644 --- a/src/main/java/fakes/UserController.java +++ b/src/main/java/fakes/UserController.java @@ -2,16 +2,28 @@ public class UserController { - private static Database db = FileDatabase.getInstance(); + private Database database; + private UserValidator userValidator; + + public UserController(UserValidator userValidator) { + + this.userValidator = userValidator; + } + public UserController(UserValidator userValidator, Database database) { + + this.userValidator = userValidator; + this.database = database; + } + 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); + database.addUser(user); return Message.createOK(); }else{ return Message.createNotOK(); diff --git a/src/main/java/fakes/UserValidator.java b/src/main/java/fakes/UserValidator.java index 0bd28b2..ebfa5b8 100644 --- a/src/main/java/fakes/UserValidator.java +++ b/src/main/java/fakes/UserValidator.java @@ -4,12 +4,12 @@ public class UserValidator { private static Database db = FileDatabase.getInstance(); - public static boolean doesUsernameExist(String username){ - try { + public boolean doesUsernameExist(String username){ + /*try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); - } + }*/ for(User user : db.getUsers()){ if (user.getUsername().equals(username)){ @@ -19,7 +19,7 @@ public static boolean doesUsernameExist(String username){ return false; } - public static boolean isValidUsername(String username){ + public boolean isValidUsername(String username){ return true; } } diff --git a/src/test/java/fakes/FakeUserValidator.java b/src/test/java/fakes/FakeUserValidator.java new file mode 100644 index 0000000..bcef5e6 --- /dev/null +++ b/src/test/java/fakes/FakeUserValidator.java @@ -0,0 +1,23 @@ +package fakes; +// Stupp +public class FakeUserValidator extends UserValidator{ + + + private boolean doesUsernameExist; + + public FakeUserValidator(){ + + } + + public FakeUserValidator(boolean doesUserNameExist ) { + this.doesUsernameExist = doesUserNameExist; + } + + @Override + public boolean doesUsernameExist(String username) { + if(username.equals("kalua")){ + return true; + } + return false; + } +} diff --git a/src/test/java/fakes/MockDatabase.java b/src/test/java/fakes/MockDatabase.java new file mode 100644 index 0000000..b9034f7 --- /dev/null +++ b/src/test/java/fakes/MockDatabase.java @@ -0,0 +1,19 @@ +package fakes; + +import java.util.ArrayList; +import java.util.List; + +public class MockDatabase extends Database{ + List users = new ArrayList<>(); + + @Override + public void addUser(User user) { + users.add(user); + + } + + @Override + public List getUsers() { + return users; + } +} diff --git a/src/test/java/fakes/UserControllerTest.java b/src/test/java/fakes/UserControllerTest.java index cc4b61b..c87f3c3 100644 --- a/src/test/java/fakes/UserControllerTest.java +++ b/src/test/java/fakes/UserControllerTest.java @@ -14,20 +14,44 @@ class create { @Test @org.junit.jupiter.api.Disabled void withValidInexistingUsername_returnsOK__NO_FAKE_DEMO() { - UserController ctrl = new UserController(); + UserController ctrl = new UserController(new FakeUserValidator(true)); User user = new User("kalua"); Message result = ctrl.create(user); - Assertions.assertEquals(result.status, Message.Status.OK); + Assertions.assertEquals(result.status, Message.Status.NOT_OK); } + @Test void withValidInexistingUsername_returnsOK__FAKE() { // TODO // 1. Test schneller machen // 2. UserController.create so beinflussen, // dass einmal der "if"- und einmal der "else"-Fall durchlaufen wird + + UserController ctrl = new UserController(new FakeUserValidator(false)); + User user = new User("peter"); + + Message result = ctrl.create(user); + + Assertions.assertEquals(result.status, Message.Status.OK); + + } + + @Test + void withValidInexistingUsername_returnsNOT_OK__FAKE() { + // TODO + // 1. Test schneller machen + // 2. UserController.create so beinflussen, + // dass einmal der "if"- und einmal der "else"-Fall durchlaufen wird + UserController ctrl = new UserController(new FakeUserValidator(true)); + User user = new User("kalua"); + + Message result = ctrl.create(user); + + Assertions.assertEquals(result.status, Message.Status.NOT_OK); + } @Test @@ -40,6 +64,23 @@ void withValidInexitingUsername_addUserToDB__FAKE() { // TODO // Der Test soll prüfen, ob der Benutzer tatsächlich der DB hinzugefügt wurde. // Dazu soll ein Database Mock Objekt verwendet werden. + MockDatabase database =new MockDatabase(); + UserController ctrl = new UserController(new FakeUserValidator(false), database); + User user = new User("peter"); + + Message result = ctrl.create(user); + + Assertions.assertEquals(result.status, Message.Status.OK); + + + boolean doesUserExists = false; + for (User u : database.getUsers()){ + if (u.getUsername().equals("peter")){ + doesUserExists = true; + } + } + Assertions.assertTrue(doesUserExists); + } @Test @@ -52,7 +93,7 @@ void withValidInexitingUsername_addUserToDB__MOCKITO() { @Test void TRY_CATCH_withNullUser_throwsIllegalArgumentExc() { try { - UserController ctrl = new UserController(); + UserController ctrl = new UserController(new FakeUserValidator()); ctrl.create(null); Assertions.fail("No IllegalArgumentException was thrown"); } catch (IllegalArgumentException ex) { @@ -64,7 +105,7 @@ void TRY_CATCH_withNullUser_throwsIllegalArgumentExc() { @Test void THROWN_withNullUser_throwsIllegalArgumentException() { Assertions.assertThrows(IllegalArgumentException.class, () -> { - UserController ctrl = new UserController(); + UserController ctrl = new UserController(new FakeUserValidator()); ctrl.create(null); }); } @@ -72,7 +113,7 @@ void THROWN_withNullUser_throwsIllegalArgumentException() { @Test void THROWN_MESSAGE_withNullUser_throwsIllegalArgumentExceptionWithMessage() { Exception thrown = Assertions.assertThrows(IllegalArgumentException.class, () -> { - UserController ctrl = new UserController(); + UserController ctrl = new UserController(new FakeUserValidator()); ctrl.create(null); }); Assertions.assertTrue(thrown.getMessage().contains("required")); diff --git a/src/test/java/fakes/UserValidatorTest.java b/src/test/java/fakes/UserValidatorTest.java index 4cffc57..73c4ef2 100644 --- a/src/test/java/fakes/UserValidatorTest.java +++ b/src/test/java/fakes/UserValidatorTest.java @@ -1,8 +1,11 @@ package fakes; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import static org.mockito.Mockito.mock; + class UserValidatorTest { @Nested @@ -33,7 +36,11 @@ static class doesUsernameExist{ @Test void returnsFalseIfUsernameNotInDBYet(){ - throw new IllegalArgumentException("you should implement code here"); + Database mockDatabase = mock(Database.class); + + final UserValidator uv = new UserValidator(); + final boolean usernameExist = uv.doesUsernameExist("peter"); + Assertions.assertFalse(usernameExist); } @Test From d1334ad58e298ee6a38c42f307091fd587a29a3a Mon Sep 17 00:00:00 2001 From: Claudia Date: Wed, 10 Nov 2021 12:52:25 +0100 Subject: [PATCH 5/9] =?UTF-8?q?=C3=BCbungen=20UserController=20erledigt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/fakes/UserControllerTest.java | 63 +++++++++++++++++++-- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/src/test/java/fakes/UserControllerTest.java b/src/test/java/fakes/UserControllerTest.java index c87f3c3..8edbc3e 100644 --- a/src/test/java/fakes/UserControllerTest.java +++ b/src/test/java/fakes/UserControllerTest.java @@ -4,6 +4,8 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import static org.mockito.Mockito.*; + class UserControllerTest { // Pro getestete Methode gibt es eine inner class (Hier für UserController.create) @@ -14,7 +16,7 @@ class create { @Test @org.junit.jupiter.api.Disabled void withValidInexistingUsername_returnsOK__NO_FAKE_DEMO() { - UserController ctrl = new UserController(new FakeUserValidator(true)); + UserController ctrl = new UserController(new FakeUserValidator(true, true)); User user = new User("kalua"); Message result = ctrl.create(user); @@ -29,8 +31,10 @@ void withValidInexistingUsername_returnsOK__FAKE() { // 1. Test schneller machen // 2. UserController.create so beinflussen, // dass einmal der "if"- und einmal der "else"-Fall durchlaufen wird + //Warum NullPointerException? Musste Mockdatabase erzeugen.. - UserController ctrl = new UserController(new FakeUserValidator(false)); + MockDatabase db = new MockDatabase(); + UserController ctrl = new UserController(new FakeUserValidator(false, true), db ); User user = new User("peter"); Message result = ctrl.create(user); @@ -45,7 +49,7 @@ void withValidInexistingUsername_returnsNOT_OK__FAKE() { // 1. Test schneller machen // 2. UserController.create so beinflussen, // dass einmal der "if"- und einmal der "else"-Fall durchlaufen wird - UserController ctrl = new UserController(new FakeUserValidator(true)); + UserController ctrl = new UserController(new FakeUserValidator(true, true)); User user = new User("kalua"); Message result = ctrl.create(user); @@ -57,6 +61,19 @@ void withValidInexistingUsername_returnsNOT_OK__FAKE() { @Test void withValidInexistingUsername_returnsOK__MOCKITO() { // TODO + //uv = Meine FakeUservalidation + //db = Meine FakeDataBase + //UserController Konstruktor mit parameter UserValidation, Database aufrufen + UserValidator uv = mock(UserValidator.class); + Database db = mock(Database.class); + UserController ctrl = new UserController(uv, db); + + doReturn(true).when(uv).isValidUsername(anyString()); + doReturn(false).when(uv).doesUsernameExist(anyString()); + + User user = new User("kalua"); + Message result = ctrl.create(user); + Assertions.assertEquals(result.status, Message.Status.OK); } @Test @@ -65,7 +82,7 @@ void withValidInexitingUsername_addUserToDB__FAKE() { // Der Test soll prüfen, ob der Benutzer tatsächlich der DB hinzugefügt wurde. // Dazu soll ein Database Mock Objekt verwendet werden. MockDatabase database =new MockDatabase(); - UserController ctrl = new UserController(new FakeUserValidator(false), database); + UserController ctrl = new UserController(new FakeUserValidator(false, true), database); User user = new User("peter"); Message result = ctrl.create(user); @@ -86,7 +103,43 @@ void withValidInexitingUsername_addUserToDB__FAKE() { @Test void withValidInexitingUsername_addUserToDB__MOCKITO() { // TODO - } + UserValidator uv = mock(UserValidator.class); + Database db = mock(Database.class); + UserController ctrl = new UserController(uv, db); + User user = new User("kalua"); + User user2 = new User("peter"); + + doReturn(true).when(uv).isValidUsername(anyString()); + doReturn(false).when(uv).doesUsernameExist(anyString()); + db.addUser(user); + + + + verify(db, times(1)).addUser(any(User.class)); + + } + + @Test + void withValidInexistingUsername_addUser2xToDB__MOCKITO(){ + UserValidator uv = mock(UserValidator.class); + Database db = mock(Database.class); + UserController ctrl = new UserController(uv, db); + User user = new User("kalua"); + User user2 = new User("peter"); + + doReturn(true).when(uv).isValidUsername(anyString()); + doReturn(false).when(uv).doesUsernameExist(anyString()); + db.addUser(user); + db.addUser(user2); + + + verify(db, times(2)).addUser(any(User.class)); + + + } + + + // --- Testing Exceptions --- From 6ec7abf59f1c6170948ca3b953dc29d86a2ea7e0 Mon Sep 17 00:00:00 2001 From: Claudia Date: Wed, 10 Nov 2021 12:54:04 +0100 Subject: [PATCH 6/9] =?UTF-8?q?FakeUserValidator=20ver=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/fakes/FakeUserValidator.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/test/java/fakes/FakeUserValidator.java b/src/test/java/fakes/FakeUserValidator.java index bcef5e6..f045457 100644 --- a/src/test/java/fakes/FakeUserValidator.java +++ b/src/test/java/fakes/FakeUserValidator.java @@ -4,20 +4,31 @@ public class FakeUserValidator extends UserValidator{ private boolean doesUsernameExist; + private boolean isValidUsername; public FakeUserValidator(){ } - public FakeUserValidator(boolean doesUserNameExist ) { + public FakeUserValidator(boolean doesUserNameExist, boolean isValidUsername ) { this.doesUsernameExist = doesUserNameExist; + this.isValidUsername = isValidUsername; } - @Override - public boolean doesUsernameExist(String username) { + /*@Override + public boolean doesUsernameExist(String username) { if(username.equals("kalua")){ return true; } return false; + }*/ + public boolean DoesUsernameExist(String username){ + return doesUsernameExist; } + + public boolean isValidUsername(String username){ + return isValidUsername; + } + + } From 08636b08a5614538caef3789068790d349520881 Mon Sep 17 00:00:00 2001 From: Claudia Date: Wed, 10 Nov 2021 20:05:11 +0100 Subject: [PATCH 7/9] =?UTF-8?q?=C3=BCbung=20UserValidator=20Teil=201=20isV?= =?UTF-8?q?alidUsername=20ohne=20Fake?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fakes/UserValidator.java | 22 +++++++++++--- src/test/java/fakes/UserValidatorTest.java | 35 ++++++++++++++++++---- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/main/java/fakes/UserValidator.java b/src/main/java/fakes/UserValidator.java index ebfa5b8..3e09606 100644 --- a/src/main/java/fakes/UserValidator.java +++ b/src/main/java/fakes/UserValidator.java @@ -4,22 +4,36 @@ public class UserValidator { private static Database db = FileDatabase.getInstance(); - public boolean doesUsernameExist(String username){ + public boolean doesUsernameExist(String username) { /*try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); }*/ - for(User user : db.getUsers()){ - if (user.getUsername().equals(username)){ + for (User user : db.getUsers()) { + if (user.getUsername().equals(username)) { return true; } } return false; } - public boolean isValidUsername(String username){ + public boolean isValidUsername(String username) { + + char[] letters = username.toCharArray(); + int position = 0; + + for (char letter: letters){ + if (!Character.isLetter(letter)|| !Character.isAlphabetic(letter)){ + if (Character.isDigit(letter) && position > 0){ + continue; + } + return false; + } + position+=1; + + } return true; } } diff --git a/src/test/java/fakes/UserValidatorTest.java b/src/test/java/fakes/UserValidatorTest.java index 73c4ef2..4aefb7a 100644 --- a/src/test/java/fakes/UserValidatorTest.java +++ b/src/test/java/fakes/UserValidatorTest.java @@ -13,22 +13,30 @@ class isValidUsername{ @Test void returnsTrueIfOnlyLetters(){ - throw new IllegalArgumentException("you should implement code here"); + UserValidator validator = new UserValidator(); + boolean validName = validator.isValidUsername("Claudia"); + Assertions.assertTrue(validName); } @Test void returnsFalseIfStartsWithNumber(){ - throw new IllegalArgumentException("you should implement code here"); + UserValidator validator = new UserValidator(); + boolean validName = validator.isValidUsername("1Claudia"); + Assertions.assertFalse(validName); } @Test void returnsTrueIfContainsNumberButNotAsFirstChar(){ - throw new IllegalArgumentException("you should implement code here"); + UserValidator validator = new UserValidator(); + boolean validName = validator.isValidUsername("c2a3dia"); + Assertions.assertTrue(validName); } @Test void returnsFalseIfContainsAnyNonAlphanumericChar(){ - throw new IllegalArgumentException("you should implement code here"); + UserValidator validator = new UserValidator(); + boolean validName = validator.isValidUsername("%inprozent"); + Assertions.assertFalse(validName); } } @@ -43,9 +51,26 @@ void returnsFalseIfUsernameNotInDBYet(){ Assertions.assertFalse(usernameExist); } + + @Test void returnsTrueIfUsernameInDB(){ - throw new IllegalArgumentException("you should implement code here"); + Database db = new MockDatabase(); + User user = new User("peter"); + db.addUser(user); + + UserValidator userValidator = new FakeUserValidator(true, true); + userValidator.doesUsernameExist("peter"); + boolean exists = userValidator.doesUsernameExist("peter"); + + Assertions.assertTrue(exists); + + + + + + + } @Test From ecde44b0e1b4bea25d7c145fa94806689b8b49aa Mon Sep 17 00:00:00 2001 From: Claudia Date: Wed, 10 Nov 2021 20:30:27 +0100 Subject: [PATCH 8/9] =?UTF-8?q?=C3=BCbung=20UserValidator=20Teil=202=20doe?= =?UTF-8?q?sUsernameExist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/fakes/UserValidatorTest.java | 54 +++++++++++++--------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/src/test/java/fakes/UserValidatorTest.java b/src/test/java/fakes/UserValidatorTest.java index 4aefb7a..c1b7aaa 100644 --- a/src/test/java/fakes/UserValidatorTest.java +++ b/src/test/java/fakes/UserValidatorTest.java @@ -4,47 +4,50 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import java.util.List; +import java.util.Locale; + import static org.mockito.Mockito.mock; class UserValidatorTest { @Nested - class isValidUsername{ + class isValidUsername { @Test - void returnsTrueIfOnlyLetters(){ + void returnsTrueIfOnlyLetters() { UserValidator validator = new UserValidator(); boolean validName = validator.isValidUsername("Claudia"); Assertions.assertTrue(validName); } @Test - void returnsFalseIfStartsWithNumber(){ + void returnsFalseIfStartsWithNumber() { UserValidator validator = new UserValidator(); boolean validName = validator.isValidUsername("1Claudia"); Assertions.assertFalse(validName); } @Test - void returnsTrueIfContainsNumberButNotAsFirstChar(){ + void returnsTrueIfContainsNumberButNotAsFirstChar() { UserValidator validator = new UserValidator(); boolean validName = validator.isValidUsername("c2a3dia"); Assertions.assertTrue(validName); } @Test - void returnsFalseIfContainsAnyNonAlphanumericChar(){ + void returnsFalseIfContainsAnyNonAlphanumericChar() { UserValidator validator = new UserValidator(); boolean validName = validator.isValidUsername("%inprozent"); Assertions.assertFalse(validName); } } - static class doesUsernameExist{ + static class doesUsernameExist { @Test - void returnsFalseIfUsernameNotInDBYet(){ - Database mockDatabase = mock(Database.class); + void returnsFalseIfUsernameNotInDBYet() { + Database mockDatabase = mock(Database.class); final UserValidator uv = new UserValidator(); final boolean usernameExist = uv.doesUsernameExist("peter"); @@ -52,30 +55,37 @@ void returnsFalseIfUsernameNotInDBYet(){ } - @Test - void returnsTrueIfUsernameInDB(){ + void returnsTrueIfUsernameInDB() { Database db = new MockDatabase(); - User user = new User("peter"); + User user = new User("hans"); db.addUser(user); + boolean result = false; - UserValidator userValidator = new FakeUserValidator(true, true); - userValidator.doesUsernameExist("peter"); - boolean exists = userValidator.doesUsernameExist("peter"); - - Assertions.assertTrue(exists); - - - - + for (User u : db.getUsers()){ + if (u.getUsername().equals(user.getUsername())){ + result = true; + } + } + Assertions.assertTrue(result); } @Test - void returnsTrueIfSameNameInDBButWithDifferentLetterCasing(){ - throw new IllegalArgumentException("you should implement code here"); + void returnsTrueIfSameNameInDBButWithDifferentLetterCasing() { + User user = new User("PETER"); + + boolean result = false; + Database db = FileDatabase.getInstance(); + for(User u : db.getUsers()){ + if (u.getUsername().toLowerCase(Locale.ROOT).equals(user.getUsername().toLowerCase(Locale.ROOT))){ + result = true; + } + } + Assertions.assertTrue(result); + } } } From 632cd742d7f28093ae6c1d83800531e49c2d7c68 Mon Sep 17 00:00:00 2001 From: Claudia Date: Thu, 11 Nov 2021 11:07:29 +0100 Subject: [PATCH 9/9] =?UTF-8?q?=C3=BCbung=20UserController=20Test=20hinzug?= =?UTF-8?q?ef=C3=BCgt:=20withValidInexistingUsername=5FaddUser2xToDBSameUs?= =?UTF-8?q?er=5F=5FMOCKITO()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/fakes/UserControllerTest.java | 30 ++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/test/java/fakes/UserControllerTest.java b/src/test/java/fakes/UserControllerTest.java index 8edbc3e..351722e 100644 --- a/src/test/java/fakes/UserControllerTest.java +++ b/src/test/java/fakes/UserControllerTest.java @@ -114,7 +114,7 @@ void withValidInexitingUsername_addUserToDB__MOCKITO() { db.addUser(user); - +//überpüft wieviel mal der User auf der Datenbank registriert wurde verify(db, times(1)).addUser(any(User.class)); } @@ -137,6 +137,34 @@ void withValidInexistingUsername_addUser2xToDB__MOCKITO(){ } + @Test + void withValidInexistingUsername_addUser2xToDBSameUser__MOCKITO() { + UserValidator uv = mock(UserValidator.class); + UserValidator uv2 = mock(UserValidator.class); + Database db = mock(Database.class); + UserController ctrl = new UserController(uv, db); + UserController ctrl2 = new UserController(uv2, db); + User user = new User("kalua"); + + doReturn(true).when(uv).isValidUsername(anyString()); + doReturn(false).when(uv).doesUsernameExist(anyString()); + + Message result = ctrl.create(user); + + Assertions.assertEquals(result.status, Message.Status.OK); + + + doReturn(true).when(uv2).isValidUsername(anyString()); + doReturn(true).when(uv2).doesUsernameExist(anyString()); + + Message result2 = ctrl2.create(user); + Assertions.assertEquals(result2.status, Message.Status.NOT_OK); + + + verify(db, times(1)).addUser(any(User.class)); + + } +