Browse Source

Merge commit '916539f216d5797d72f72e5ec54329bd320ab33b' into HEAD

feature-pr-payment
JenkinsSonaImron 3 years ago
parent
commit
2eca3e35ca
  1. 15
      src/main/java/hs/fulda/de/ci/exam/project/Account.java
  2. 9
      src/main/java/hs/fulda/de/ci/exam/project/AccountRepository.java
  3. 41
      src/main/java/hs/fulda/de/ci/exam/project/Person.java
  4. 96
      src/test/java/hs/fulda/de/ci/exam/project/AccountTest.java
  5. 4
      src/test/java/hs/fulda/de/ci/exam/project/PersonTest.java

15
src/main/java/hs/fulda/de/ci/exam/project/Account.java

@ -1,6 +1,8 @@
package hs.fulda.de.ci.exam.project; package hs.fulda.de.ci.exam.project;
public class Account { public class Account {
private AccountRepository accountRepository;
public Account(String id, String password, AccountStatus status) { public Account(String id, String password, AccountStatus status) {
this.id = id; this.id = id;
this.password = password; this.password = password;
@ -50,6 +52,19 @@ public class Account {
return false; return false;
} }
public void validatePersonDetails(Person person){
person.validateName();
person.validateAddress();
person.validateEmailAddress();
person.validatePhoneNumber();
}
public void addAccountDetails(String name, Address address, String email, String phone){
Person person = new Person(name, address, email, phone);
validatePersonDetails(person);
accountRepository.addPersonalDetails(person);
}
} }

9
src/main/java/hs/fulda/de/ci/exam/project/AccountRepository.java

@ -0,0 +1,9 @@
package hs.fulda.de.ci.exam.project;
import java.util.ArrayList;
public interface AccountRepository {
ArrayList<Account> findAll();
void save(Account account);
boolean addPersonalDetails(Person person);
}

41
src/main/java/hs/fulda/de/ci/exam/project/Person.java

@ -1,6 +1,8 @@
package hs.fulda.de.ci.exam.project; package hs.fulda.de.ci.exam.project;
import java.util.HashSet; import java.util.HashSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Person { public class Person {
private String name; private String name;
@ -26,4 +28,43 @@ public class Person {
public String getPhone() { public String getPhone() {
return phone; return phone;
} }
public void validateName() {
if(this.name.isBlank())
throw new RuntimeException(("Name Cannot be null or empty"));
}
public void validateAddress(){
if(this.address.equals(null))
throw new RuntimeException(("Address Cannot be null"));
}
public void validateEmailAddress(){
Pattern pattern = Pattern.compile("^(.+)@(.+)$");
Matcher matcher = pattern.matcher(this.email);
if(email.isBlank()){
throw new RuntimeException("Email cannot be blank");
}
if(!matcher.matches()){
throw new RuntimeException("Email address is not Valid");
}
}
public void validatePhoneNumber(){
if(this.phone.isBlank()) {
throw new RuntimeException("Phone Number Cannot be null or empty");
}
if(this.phone.length()>13) {
throw new RuntimeException("Phone Number is too long");
}
if(this.phone.length()<9) {
throw new RuntimeException("Phone Number is too short");
}
if(this.phone.matches("\\d")) {
throw new RuntimeException("Phone Number Contain only digits");
}
if(!this.phone.startsWith("0")) {
throw new RuntimeException("Phone Number should start with 0");
}
}
} }

96
src/test/java/hs/fulda/de/ci/exam/project/AccountTest.java

@ -1,20 +1,108 @@
package hs.fulda.de.ci.exam.project; package hs.fulda.de.ci.exam.project;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.when;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class AccountTest { public class AccountTest {
@BeforeAll
public void setupAll(){
System.out.println("Should Print Before All Tests");
}
Address address1;
Account account2;
Person person1;
Account account1;
@BeforeEach
public void setup() {
address1 = new Address("Fuldaer str", "Fulda", "Hessen", "36037", "Germany");
account2 = new Account("453", "notactive", Account.AccountStatus.CANCELED);
person1 = new Person("Max Mustermann", address1, "max.mustermann@gmail.com", "015147890206");
account1 = new Account("123", "password", Account.AccountStatus.ACTIVE);
}
@Test @Test
void test_resetPassword(){ void test_resetPassword(){
Account account1 = new Account("123", "password", Account.AccountStatus.ACTIVE);
Account account2 = new Account("453", "notactive", Account.AccountStatus.CANCELED);
account1.resetPassword("newpass"); account1.resetPassword("newpass");
account2.resetPassword("notgood"); account2.resetPassword("notgood");
assertEquals("newpass", account1.getPassword(),"Password successfully changed."); assertEquals("newpass", account1.getPassword(),"Password successfully changed.");
assertEquals("notactive", account2.getPassword(),"Activate your account to change your password"); assertEquals("notactive", account2.getPassword(),"Activate your account to change your password");
}
@Test
@DisplayName("Should Not add Account details when Person Name is null")
public void shouldThrowRuntimeExceptionWhenPersonNameIsNull(){
assertThrows(RuntimeException.class, () -> {
account1.addAccountDetails(null, address1,"max.mustermann@gmail.com", "0151283290" );
});
}
@Test
@DisplayName("Should Not add Account details when Address is null")
public void shouldThrowRuntimeExceptionWhenPersonAddressIsNull(){
assertThrows(RuntimeException.class, () -> {
account1.addAccountDetails("John", null,"max.mustermann@gmail.com", "0151283290" );
});
}
@DisplayName("Check if the Email is valid")
@ParameterizedTest
@MethodSource("phoneNumberList")
public void shouldThrowRuntimeExceptionWhenPhoneNumberIsNull(String phoneNumber){
assertThrows(RuntimeException.class, () -> {
account1.addAccountDetails("John", address1,"max.mustermann@gmail.com", phoneNumber);
});
}
private static List<String> phoneNumberList() {
return Arrays.asList("1234567", "0123", "0125314622696456", "0abnajf");
}
@Test
@DisplayName("Should Not add Account details when Email is blank")
public void shouldThrowRuntimeExceptionWhenEmailIsNull(){
assertThrows(RuntimeException.class, () -> {
account1.addAccountDetails("John", address1," ", "0151283290" );
});
assertThrows(RuntimeException.class, () -> {
account1.addAccountDetails("John", address1,null, "0151283290" );
});
}
@ParameterizedTest
@MethodSource("EmailList")
@DisplayName("Should Not add Account details when Email Address is not valid")
public void shouldThrowRuntimeExceptionWhenEmailIsInvalid(String email){
try{
account1.addAccountDetails("John", address1, email, "0151283290");
}
catch(final RuntimeException e){
String msg2 = "Email address is not Valid";
assertEquals(msg2, e.getMessage());
}
}
private static List<String> EmailList() {
return Arrays.asList("max.musterman", "12245.com");
} }
} }

4
src/test/java/hs/fulda/de/ci/exam/project/PersonTest.java

@ -1,6 +1,9 @@
package hs.fulda.de.ci.exam.project; package hs.fulda.de.ci.exam.project;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
@ -26,5 +29,4 @@ public class PersonTest {
void test_getPhone() { void test_getPhone() {
assertThat(person1.getPhone()).describedAs("get person phone").isEqualTo("015147890206"); assertThat(person1.getPhone()).describedAs("get person phone").isEqualTo("015147890206");
} }
} }
Loading…
Cancel
Save