Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
Order Management for Retail Store
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
Bhargava Rellu
Order Management for Retail Store
Commits
ce7fee8c
Commit
ce7fee8c
authored
Jun 14, 2022
by
Bhargava Rellu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changes according to the review comments,
Added test cases.
parent
4abed227
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
291 additions
and
234 deletions
+291
-234
.gitignore
.gitignore
+78
-0
build.gradle
build.gradle
+3
-1
OrderManagement.java
...ailstore/ordermanagement/application/OrderManagement.java
+28
-22
Category.java
...a/com/retailstore/ordermanagement/constants/Category.java
+1
-1
Color.java
...java/com/retailstore/ordermanagement/constants/Color.java
+1
-1
Gender.java
...ava/com/retailstore/ordermanagement/constants/Gender.java
+4
-4
Size.java
.../java/com/retailstore/ordermanagement/constants/Size.java
+1
-1
Order.java
...ain/java/com/retailstore/ordermanagement/model/Order.java
+1
-1
OrderedProduct.java
...com/retailstore/ordermanagement/model/OrderedProduct.java
+5
-5
Product.java
...n/java/com/retailstore/ordermanagement/model/Product.java
+5
-5
ProductService.java
...m/retailstore/ordermanagement/service/ProductService.java
+1
-1
RetailStoreService.java
...tailstore/ordermanagement/service/RetailStoreService.java
+1
-1
RetailStoreServiceImpl.java
...store/ordermanagement/service/RetailStoreServiceImpl.java
+100
-95
DBUtil.java
...in/java/com/retailstore/ordermanagement/utils/DBUtil.java
+2
-2
InputUtil.java
...java/com/retailstore/ordermanagement/utils/InputUtil.java
+28
-31
ProductServiceTest.java
...tailstore/ordermanagement/service/ProductServiceTest.java
+10
-7
RetailStoreServiceTest.java
...store/ordermanagement/service/RetailStoreServiceTest.java
+22
-56
No files found.
.gitignore
0 → 100644
View file @
ce7fee8c
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
build/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
\ No newline at end of file
build.gradle
View file @
ce7fee8c
...
...
@@ -2,7 +2,7 @@ plugins {
id
'java'
}
group
'
org.example
'
group
'
com.retailstore.ordermanagement
'
version
'1.0-SNAPSHOT'
repositories
{
...
...
@@ -19,6 +19,8 @@ dependencies {
annotationProcessor
'org.projectlombok:lombok:1.18.22'
// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
testImplementation
group:
'org.junit.jupiter'
,
name:
'junit-jupiter-api'
,
version:
'5.8.2'
// https://mvnrepository.com/artifact/org.mockito/mockito-core
testImplementation
group:
'org.mockito'
,
name:
'mockito-inline'
,
version:
'3.4.4'
}
test
{
...
...
src/main/java/com/retailstore/ordermanagement/application/OrderManagement.java
View file @
ce7fee8c
package
com
.
retail
_store
.
order_
management
.
application
;
package
com
.
retail
store
.
order
management
.
application
;
import
com.retail_store.order_management.service.RetailStore
;
import
com.retail_store.order_management.service.RetailStoreService
;
import
com.retailstore.ordermanagement.service.RetailStoreService
;
import
com.retailstore.ordermanagement.service.RetailStoreServiceImpl
;
import
com.retailstore.ordermanagement.utils.DBUtil
;
import
lombok.extern.java.Log
;
import
java.sql.SQLException
;
import
java.util.Scanner
;
import
java.util.logging.Logger
;
import
static
com
.
retail
_store
.
order_management
.
utils
.
Utility
.
getInt
;
import
static
com
.
retail
store
.
ordermanagement
.
utils
.
InputUtil
.
validateInputNumber
;
/**
* The project run starts from here
*/
@Log
public
class
OrderManagement
{
private
Scanner
scanner
;
private
final
Logger
logger
;
/**
* No-Arg Constructor for class OrderManagement with their private
...
...
@@ -23,7 +25,6 @@ public class OrderManagement {
System
.
setProperty
(
"java.util.logging.SimpleFormatter.format"
,
"%5$s %n"
);
this
.
scanner
=
new
Scanner
(
System
.
in
);
this
.
logger
=
Logger
.
getLogger
(
OrderManagement
.
class
.
getName
());
}
/**
...
...
@@ -40,44 +41,49 @@ public class OrderManagement {
String
enterForMenu
=
"Please enter 5 for menu"
;
boolean
flag
=
true
;
log
ger
.
info
(
"Welcome to RetailStore Business Management"
);
RetailStore
gap
=
new
RetailStoreService
();
log
.
info
(
"Welcome to RetailStore Business Management"
);
RetailStore
Service
gap
=
new
RetailStoreServiceImpl
();
String
menu
=
"\n------------------------\nMenu\n------------------------\n"
+
option1
+
"\n------------------------\n"
+
option2
+
"\n------------------------\n"
+
option3
+
"\n------------------------\n"
+
option4
;
log
ger
.
info
(
menu
);
log
.
info
(
menu
);
while
(
flag
)
{
int
menuOption
;
menuOption
=
getInt
();
menuOption
=
validateInputNumber
();
switch
(
menuOption
)
{
case
1
:
gap
.
addProducts
();
log
ger
.
info
(
"\n------------------------\nPlease enter 5 for menu
\n------------------------\n"
+
"To exit please enter 4
\n------------------------\n"
+
"To Add more enter 1
\n------------------------\n"
);
log
.
info
(
"\n------------------------\n"
+
enterForMenu
+
"
\n------------------------\n"
+
toExit
+
"
\n------------------------\n"
+
toAddMore
+
"
\n------------------------\n"
);
break
;
case
2
:
gap
.
placeOrders
();
log
ger
.
info
(
"\n------------------------\nPlease enter 5 for menu
\n------------------------\n"
+
"To exit please enter 4"
);
log
.
info
(
"\n------------------------\n"
+
enterForMenu
+
"
\n------------------------\n"
+
toExit
);
break
;
case
3
:
gap
.
showOrders
();
log
ger
.
info
(
"\n------------------------\nPlease enter 5 for menu
\n------------------------\n"
+
"To exit please enter 4"
);
log
.
info
(
"\n------------------------\n"
+
enterForMenu
+
"
\n------------------------\n"
+
toExit
);
break
;
case
4
:
log
ger
.
info
(
"Good Bye."
);
log
.
info
(
"Good Bye."
);
flag
=
false
;
try
{
DBUtil
.
getConnection
().
close
();
}
catch
(
SQLException
e
)
{
log
.
warning
(
e
.
getMessage
());
}
break
;
case
5
:
log
ger
.
info
(
menu
);
log
.
info
(
menu
);
break
;
default
:
log
ger
.
warning
(
"\n------------------------\nPlease enter valid menu option\n------------------------\n"
);
log
ger
.
info
(
menu
);
log
.
warning
(
"\n------------------------\nPlease enter valid menu option\n------------------------\n"
);
log
.
info
(
menu
);
}
}
}
...
...
src/main/java/com/retailstore/ordermanagement/constants/Category.java
View file @
ce7fee8c
package
com
.
retail
_store
.
order_
management
.
constants
;
package
com
.
retail
store
.
order
management
.
constants
;
/**
* Here using Enum class types as the requirement has constants to
...
...
src/main/java/com/retailstore/ordermanagement/constants/Color.java
View file @
ce7fee8c
package
com
.
retail
_store
.
order_
management
.
constants
;
package
com
.
retail
store
.
order
management
.
constants
;
/**
* Enumeration class of name Color
...
...
src/main/java/com/retailstore/ordermanagement/constants/Gender.java
View file @
ce7fee8c
package
com
.
retail
_store
.
order_
management
.
constants
;
package
com
.
retail
store
.
order
management
.
constants
;
/**
* Enumeration class of name Gender
...
...
@@ -11,7 +11,7 @@ public enum Gender {
*/
EXIT
(
0
,
"exit"
),
MEN
(
1
,
"Men"
),
WOMEN
(
2
,
"Women"
);
int
option
;
String
ge
nder
;
String
ge
tName
;
/**
* Method is used to return option value
...
...
@@ -30,7 +30,7 @@ public enum Gender {
* @return
*/
public
String
getGender
()
{
return
ge
nder
;
return
ge
tName
;
}
/**
...
...
@@ -41,6 +41,6 @@ public enum Gender {
*/
Gender
(
int
option
,
String
gender
)
{
this
.
option
=
option
;
this
.
ge
nder
=
gender
;
this
.
ge
tName
=
gender
;
}
}
src/main/java/com/retailstore/ordermanagement/constants/Size.java
View file @
ce7fee8c
package
com
.
retail
_store
.
order_
management
.
constants
;
package
com
.
retail
store
.
order
management
.
constants
;
/**
* Enumeration class name Size
...
...
src/main/java/com/retailstore/ordermanagement/model/Order.java
View file @
ce7fee8c
package
com
.
retail
_store
.
order_
management
.
model
;
package
com
.
retail
store
.
order
management
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
...
...
src/main/java/com/retailstore/ordermanagement/model/OrderedProduct.java
View file @
ce7fee8c
package
com
.
retail
_store
.
order_
management
.
model
;
package
com
.
retail
store
.
order
management
.
model
;
import
com.retail
_store.order_
management.constants.Category
;
import
com.retail
_store.order_
management.constants.Color
;
import
com.retail
_store.order_
management.constants.Gender
;
import
com.retail
_store.order_
management.constants.Size
;
import
com.retail
store.order
management.constants.Category
;
import
com.retail
store.order
management.constants.Color
;
import
com.retail
store.order
management.constants.Gender
;
import
com.retail
store.order
management.constants.Size
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
...
...
src/main/java/com/retailstore/ordermanagement/model/Product.java
View file @
ce7fee8c
package
com
.
retail
_store
.
order_
management
.
model
;
package
com
.
retail
store
.
order
management
.
model
;
import
com.retail
_store.order_
management.constants.Category
;
import
com.retail
_store.order_
management.constants.Color
;
import
com.retail
_store.order_
management.constants.Gender
;
import
com.retail
_store.order_
management.constants.Size
;
import
com.retail
store.order
management.constants.Category
;
import
com.retail
store.order
management.constants.Color
;
import
com.retail
store.order
management.constants.Gender
;
import
com.retail
store.order
management.constants.Size
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
...
...
src/main/java/com/retailstore/ordermanagement/service/ProductService.java
View file @
ce7fee8c
...
...
@@ -14,7 +14,7 @@ import java.util.Map;
* This is an interface to filter the products according to
* respective of taken methods in this interface
*/
public
interface
Product
Filter
{
public
interface
Product
Service
{
/**
* This is an abstract method gives the
* categories of product according selection of gender type
...
...
src/main/java/com/retailstore/ordermanagement/service/RetailStoreService.java
View file @
ce7fee8c
...
...
@@ -12,7 +12,7 @@ import java.util.Collection;
* In this interface there present different abstract methods to perform
* various functions of the project
*/
public
interface
RetailStore
{
public
interface
RetailStore
Service
{
/**
* This abstract method is used to add the products seemly according to the
* given process in the console, if added then shows message accordingly
...
...
src/main/java/com/retailstore/ordermanagement/service/RetailStoreServiceImpl.java
View file @
ce7fee8c
This diff is collapsed.
Click to expand it.
src/main/java/com/retailstore/ordermanagement/utils/DBUtil.java
View file @
ce7fee8c
...
...
@@ -9,14 +9,14 @@ import java.sql.SQLException;
* This is a final class in which all the configurations of the database are present to
* establish the connection to the database to the project
*/
public
final
class
D
atabase
{
public
final
class
D
BUtil
{
private
static
Connection
connection
;
/**
* Private constructor that will not
* allow to create object
*/
private
D
atabase
()
{
private
D
BUtil
()
{
}
/**
...
...
src/main/java/com/retailstore/ordermanagement/utils/InputUtil.java
View file @
ce7fee8c
This diff is collapsed.
Click to expand it.
src/test/java/com/retailstore/ordermanagement/service/ProductServiceTest.java
View file @
ce7fee8c
...
...
@@ -11,17 +11,20 @@ import org.junit.jupiter.api.Test;
import
org.mockito.Mock
;
import
java.sql.Connection
;
import
java.util.*
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.ArrayList
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
class
Product
Filter
Test
{
class
Product
Service
Test
{
@Mock
Connection
connection
;
RetailStoreService
service
;
RetailStoreService
Impl
service
;
@BeforeEach
void
createretailsStoreObject
()
{
service
=
new
RetailStoreService
();
service
=
new
RetailStoreService
Impl
();
}
@AfterEach
...
...
@@ -31,7 +34,7 @@ class ProductFilterTest {
@Test
void
getCategoriesByGenderTest
()
{
Map
<
Integer
,
Category
>
categoryMap
=
new
HashMap
<>();
Map
<
Integer
,
Category
>
categoryMap
=
new
Linked
HashMap
<>();
categoryMap
.
put
(
1
,
Category
.
SWEATSHIRTS
);
categoryMap
.
put
(
2
,
Category
.
T_SHIRTS
);
categoryMap
.
put
(
3
,
Category
.
SHIRTS
);
...
...
@@ -57,7 +60,7 @@ class ProductFilterTest {
@Test
void
getColorsByGenderAndCategoryTest
()
{
Map
<
Integer
,
Color
>
colorMap
=
new
HashMap
<>();
Map
<
Integer
,
Color
>
colorMap
=
new
Linked
HashMap
<>();
colorMap
.
put
(
1
,
Color
.
BLUE
);
colorMap
.
put
(
2
,
Color
.
GREY
);
colorMap
.
put
(
3
,
Color
.
BLACK
);
...
...
@@ -69,7 +72,7 @@ class ProductFilterTest {
@Test
void
getOrdersTest
()
{
List
<
Order
>
orderList
=
new
ArrayList
<>();
Map
<
Integer
,
Order
>
ordersMap
=
new
HashMap
<>();
Map
<
Integer
,
Order
>
ordersMap
=
new
Linked
HashMap
<>();
Assertions
.
assertEquals
(
ordersMap
,
service
.
getOrders
(
connection
));
}
}
\ No newline at end of file
src/test/java/com/retailstore/ordermanagement/service/RetailStoreServiceTest.java
View file @
ce7fee8c
...
...
@@ -4,83 +4,49 @@ import com.retailstore.ordermanagement.constants.Category;
import
com.retailstore.ordermanagement.constants.Color
;
import
com.retailstore.ordermanagement.constants.Gender
;
import
com.retailstore.ordermanagement.constants.Size
;
import
com.retailstore.ordermanagement.model.Order
;
import
com.retailstore.ordermanagement.model.OrderedProduct
;
import
com.retailstore.ordermanagement.utils.Utility
;
import
org.junit.jupiter.api.AfterEach
;
import
com.retailstore.ordermanagement.utils.InputUtil
;
import
org.junit.jupiter.api.Assertions
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.MockedStatic
;
import
org.mockito.Mockito
;
import
org.mockito.Spy
;
import
java.io.ByteArrayInputStream
;
import
java.io.InputStream
;
import
java.sql.Connection
;
import
java.time.LocalDate
;
import
java.time.LocalTime
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Scanner
;
class
RetailStoreTest
{
class
RetailStore
Service
Test
{
@Mock
Connection
connection
;
RetailStoreService
service
;
@Spy
@InjectMocks
Utility
utility
;
@BeforeEach
void
createretailsStoreObject
()
{
service
=
new
RetailStoreService
();
}
@AfterEach
void
removeretailsStoreObject
()
{
service
=
null
;
}
RetailStoreServiceImpl
service
;
@Test
void
addProducts
()
{
LinkedHashMap
<
Size
,
Integer
>
sizeMap
=
new
LinkedHashMap
<>();
Scanner
scanner
=
Mockito
.
mock
(
Scanner
.
class
);
Map
<
Size
,
Integer
>
sizeMap
=
new
LinkedHashMap
<>();
sizeMap
.
put
(
Size
.
S
,
2
);
sizeMap
.
put
(
Size
.
M
,
2
);
sizeMap
.
put
(
Size
.
L
,
2
);
sizeMap
.
put
(
Size
.
XL
,
2
);
sizeMap
.
put
(
Size
.
XXL
,
2
);
Mockito
.
when
(
utility
.
productIdGenerator
()).
thenReturn
(
"TestMethod"
+
LocalDate
.
now
()
+
LocalTime
.
now
());
Mockito
.
when
(
Utility
.
getScanner
().
nextLine
()).
thenReturn
(
"TestProduct"
);
Mockito
.
when
(
Utility
.
getCategory
(
true
,
"Test check"
)).
thenReturn
(
Category
.
JEANS
);
Mockito
.
when
(
Utility
.
getColor
(
true
,
"Test check"
)).
thenReturn
(
Color
.
BLACK
);
Mockito
.
when
(
Utility
.
getGender
(
true
,
"Test check"
)).
thenReturn
(
Gender
.
WOMEN
);
Mockito
.
when
(
Utility
.
getDouble
(
true
,
"Test price"
)).
thenReturn
(
1350.00
);
Mockito
.
when
(
Utility
.
getProductSizes
()).
thenReturn
(
sizeMap
);
try
(
MockedStatic
<
InputUtil
>
inputUtil
=
Mockito
.
mockStatic
(
InputUtil
.
class
))
{
inputUtil
.
when
(()
->
InputUtil
.
productIdGenerator
()).
thenReturn
(
"TestMethod"
+
LocalDate
.
now
()
+
LocalTime
.
now
());
String
input
=
"Test Input"
;
InputStream
in
=
new
ByteArrayInputStream
(
input
.
getBytes
());
System
.
setIn
(
in
);
inputUtil
.
when
(()
->
InputUtil
.
validateInputNumber
()).
thenReturn
(
2
);
inputUtil
.
when
(()
->
InputUtil
.
getCategory
(
true
,
"Test check"
)).
thenReturn
(
Category
.
JEANS
);
inputUtil
.
when
(()
->
InputUtil
.
getColor
(
true
,
"Test check"
)).
thenReturn
(
Color
.
BLACK
);
inputUtil
.
when
(()
->
InputUtil
.
getGender
(
true
,
"Test check"
)).
thenReturn
(
Gender
.
WOMEN
);
inputUtil
.
when
(()
->
InputUtil
.
validateInputPrice
(
true
,
"Test price"
)).
thenReturn
(
1350.00
);
inputUtil
.
when
(()
->
InputUtil
.
getProductSizes
()).
thenReturn
(
sizeMap
);
}
Assertions
.
assertEquals
(
true
,
service
.
addProducts
());
}
@Test
void
placeOrders
()
{
}
@Test
void
showOrdersTest
()
{
Map
<
Integer
,
Order
>
ordersMap
=
Mockito
.
mock
(
LinkedHashMap
.
class
);
List
<
OrderedProduct
>
orderedProductList
=
Mockito
.
mock
(
ArrayList
.
class
);
ordersMap
.
put
(
1
,
new
Order
(
"10bc46f3#Order"
,
LocalDate
.
now
(),
LocalTime
.
now
(),
"Customer"
,
"9633214574"
,
2500.00
,
new
ArrayList
<
OrderedProduct
>()));
Mockito
.
when
(
service
.
getOrders
(
connection
)).
thenReturn
(
ordersMap
);
}
@Test
void
createOrder
()
{
ArrayList
<
OrderedProduct
>
orderedProducts
=
new
ArrayList
<>();
orderedProducts
.
add
(
new
OrderedProduct
(
"test1"
,
"testname"
,
Category
.
JEANS
,
Color
.
BLACK
,
1200.00
,
Gender
.
MEN
,
Size
.
L
,
2
));
// Mockito.when(getGender(true, "Test check")).thenReturn(Gender.WOMEN);
}
@Test
void
addProductToCart
()
{
}
}
\ No newline at end of file
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