Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
order-management-backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ascend
order-management-backend
Commits
2339acad
Commit
2339acad
authored
May 07, 2021
by
Alex Segers
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/manager_model' into 'dev'
Manager model, validations, and seeder See merge request
!6
parents
e7b8d407
5ceb875a
Pipeline
#1665
failed with stage
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
183 additions
and
52 deletions
+183
-52
pom.xml
backend/order-management/pom.xml
+26
-3
Manager.java
.../src/main/java/com/afp/ordermanagement/model/Manager.java
+30
-48
Order.java
...nt/src/main/java/com/afp/ordermanagement/model/Order.java
+1
-1
ManagerSeeder.java
...in/java/com/afp/ordermanagement/seeder/ManagerSeeder.java
+43
-0
.DS_Store
...rc/test/java/com/afp/ordermanagement/UNIT_TESTS/.DS_Store
+0
-0
ValidatableEntity.java
.../ordermanagement/UNIT_TESTS/helper/ValidatableEntity.java
+49
-0
ManagerTests.java
...om/afp/ordermanagement/UNIT_TESTS/model/ManagerTests.java
+34
-0
No files found.
backend/order-management/pom.xml
View file @
2339acad
...
...
@@ -31,7 +31,6 @@
<artifactId>
spring-kafka
</artifactId>
<version>
2.7.0
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka-dist -->
<dependency>
<groupId>
org.springframework.kafka
</groupId>
...
...
@@ -56,6 +55,32 @@
<artifactId>
reactor-test
</artifactId>
<scope>
test
</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.16
</version>
<scope>
provided
</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.javafaker/javafaker -->
<dependency>
<groupId>
com.github.javafaker
</groupId>
<artifactId>
javafaker
</artifactId>
<version>
1.0.2
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-validation
</artifactId>
<version>
2.4.4
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>
org.testng
</groupId>
<artifactId>
testng
</artifactId>
<version>
7.4.0
</version>
<scope>
test
</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>
io.springfox
</groupId>
...
...
@@ -73,7 +98,6 @@
<version>
1.5
</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
...
...
@@ -82,5 +106,4 @@
</plugin>
</plugins>
</build>
</project>
backend/order-management/src/main/java/com/afp/ordermanagement/model/Manager.java
View file @
2339acad
package
com
.
afp
.
ordermanagement
.
model
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.validator.constraints.URL
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
javax.validation.constraints.*
;
import
java.lang.reflect.Field
;
import
static
java
.
util
.
Objects
.
isNull
;
@Data
@NoArgsConstructor
@Document
(
collection
=
"managers"
)
public
class
Manager
{
@Id
private
String
id
;
private
String
managerId
;
private
String
email
;
private
String
firstName
;
private
String
lastName
;
private
String
passwordDigest
;
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getManagerId
()
{
return
managerId
;
}
public
void
setManagerId
(
String
managerId
)
{
this
.
managerId
=
managerId
;
}
@Size
(
min
=
1
,
max
=
250
,
message
=
"'firstName' must be between 1 & 250 characters"
)
@NotNull
private
String
firstName
,
lastName
;
public
String
getEmail
()
{
return
email
;
}
public
void
setEmail
(
String
email
)
{
this
.
email
=
email
;
}
public
String
getFirstName
()
{
return
firstName
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
@Email
private
String
email
;
public
String
getLastName
()
{
return
lastName
;
}
@NotNull
@Size
(
min
=
21
,
max
=
21
,
message
=
"'googleId' is invalid"
)
private
String
googleId
;
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
@URL
(
message
=
"'imageUrl' must be a valid URL"
)
private
String
imageUrl
;
public
String
getPasswordDigest
()
{
return
passwordDigest
;
}
static
public
Manager
combine
(
Manager
target
,
Manager
source
)
{
try
{
for
(
Field
field:
Manager
.
class
.
getDeclaredFields
())
{
String
fieldName
=
field
.
getName
();
Object
sourceValue
=
field
.
get
(
source
);
if
(!
isNull
(
sourceValue
)
&&
!
fieldName
.
equals
(
"id"
))
field
.
set
(
target
,
sourceValue
);
}
}
catch
(
Exception
ignore
)
{
}
public
void
setPasswordDigest
(
String
passwordDigest
)
{
this
.
passwordDigest
=
passwordDigest
;
return
target
;
}
}
backend/order-management/src/main/java/com/afp/ordermanagement/model/Order.java
View file @
2339acad
package
com
.
afp
.
ordermanagement
.
model
;
package
com
.
afp
.
ordermanagement
.
UNIT_TESTS
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
...
...
backend/order-management/src/main/java/com/afp/ordermanagement/seeder/ManagerSeeder.java
0 → 100644
View file @
2339acad
package
com
.
afp
.
ordermanagement
.
seeder
;
import
com.afp.ordermanagement.model.Manager
;
import
com.afp.ordermanagement.repository.ManagerRepository
;
import
com.github.javafaker.Faker
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.event.ContextRefreshedEvent
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.stereotype.Component
;
import
java.util.stream.IntStream
;
@Component
public
class
ManagerSeeder
{
@Autowired
ManagerRepository
managerRepository
;
static
private
final
Faker
FAKER
=
new
Faker
();
static
private
final
int
SEED_COUNT
=
1
;
@EventListener
public
void
seedManager
(
ContextRefreshedEvent
event
)
{
managerRepository
.
deleteAll
()
.
subscribe
();
IntStream
.
range
(
0
,
SEED_COUNT
).
forEach
(
n
->
{
managerRepository
.
insert
(
generateManager
())
.
subscribe
();
});
}
private
Manager
generateManager
(){
Manager
manager
=
new
Manager
();
manager
.
setFirstName
(
FAKER
.
name
().
firstName
());
manager
.
setLastName
(
FAKER
.
name
().
lastName
());
manager
.
setEmail
(
FAKER
.
internet
().
emailAddress
());
manager
.
setGoogleId
(
FAKER
.
number
().
digits
(
21
));
manager
.
setImageUrl
(
FAKER
.
internet
().
url
());
return
manager
;
}
}
backend/order-management/src/test/java/com/afp/ordermanagement/UNIT_TESTS/.DS_Store
0 → 100644
View file @
2339acad
File added
backend/order-management/src/test/java/com/afp/ordermanagement/UNIT_TESTS/helper/ValidatableEntity.java
0 → 100644
View file @
2339acad
package
com
.
afp
.
ordermanagement
.
UNIT_TESTS
.
helper
;
import
com.github.javafaker.Faker
;
//import com.sun.tools.javac.util.List;
import
org.junit.jupiter.api.Assertions
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validation
;
import
javax.validation.Validator
;
import
java.lang.reflect.ParameterizedType
;
import
java.util.List
;
public
abstract
class
ValidatableEntity
<
E
>
{
private
final
Class
<
E
>
childClass
;
static
private
final
Faker
FAKER
=
new
Faker
();
@SuppressWarnings
(
"unchecked"
)
public
ValidatableEntity
()
{
this
.
childClass
=
(
(
Class
<
E
>)
(
(
ParameterizedType
)
this
.
getClass
()
.
getGenericSuperclass
()
)
.
getActualTypeArguments
()[
0
]
);
}
private
static
final
Validator
validator
=
Validation
.
buildDefaultValidatorFactory
().
getValidator
();
// assertFieldValidation(String fieldName, Object input, boolean isValidInput)
public
ConstraintViolation
<
E
>
createViolation
(
String
fieldName
,
Object
fieldValue
)
{
return
validator
.
validateValue
(
this
.
childClass
,
fieldName
,
fieldValue
)
.
stream
()
.
findAny
()
.
orElse
(
null
);
}
// assertFieldValidation(String fieldName, Object input, boolean isValidInput)
public
void
assertFieldValidation
(
String
fieldName
,
Object
input
,
boolean
expected
)
{
boolean
isValid
=
validator
.
validateValue
(
this
.
childClass
,
fieldName
,
input
).
isEmpty
();
String
v
=
expected
?
"valid"
:
"invalid"
;
String
errMsg
=
String
.
format
(
"Expected '%s' to be a %s value for field '%s'"
,
input
,
v
,
fieldName
);
if
(
isValid
!=
expected
)
fail
(
errMsg
);
}
}
backend/order-management/src/test/java/com/afp/ordermanagement/UNIT_TESTS/model/ManagerTests.java
0 → 100644
View file @
2339acad
package
com
.
afp
.
ordermanagement
.
UNIT_TESTS
.
model
;
import
com.afp.ordermanagement.UNIT_TESTS.helper.ValidatableEntity
;
import
com.afp.ordermanagement.model.Manager
;
import
org.junit.jupiter.params.ParameterizedTest
;
import
org.junit.jupiter.params.provider.CsvSource
;
public
class
ManagerTests
extends
ValidatableEntity
<
Manager
>
{
@ParameterizedTest
@CsvSource
(
value
=
{
"null:false"
,
"\"\":false"
,
"Jerry:true"
},
delimiter
=
':'
)
public
void
shouldValidateNameFields
(
String
input
,
boolean
expected
)
{
assertFieldValidation
(
"firstName"
,
input
,
expected
);
assertFieldValidation
(
"lastName"
,
input
,
expected
);
}
@ParameterizedTest
@CsvSource
(
value
=
{
"null:false"
,
"\"\":false"
,
"poop:false"
,
"jerry@hotmail.com:true"
},
delimiter
=
':'
)
public
void
shouldValidateEmailField
(
String
input
,
boolean
expected
)
{
assertFieldValidation
(
"email"
,
input
,
expected
);
}
@ParameterizedTest
@CsvSource
(
value
=
{
"null:false"
,
"\"\":false"
},
delimiter
=
':'
)
public
void
shouldValidateGoogleIdField
(
String
input
,
boolean
expected
)
{
assertFieldValidation
(
"googleId"
,
input
,
expected
);
}
@ParameterizedTest
@CsvSource
(
value
=
{
"\"\",false"
,
"https://picsum.photos/200,true"
,
"htps: picsum.photos/200,false"
})
public
void
shouldValidateImageUrl
(
String
input
,
boolean
expected
)
{
assertFieldValidation
(
"imageUrl"
,
input
,
expected
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment