Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
inventory-service
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
0
Merge Requests
0
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
inventory-service
Commits
d4075b8f
Commit
d4075b8f
authored
May 06, 2021
by
Khai Yuan Liew
Committed by
Sumaiyya Burney
May 06, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
AFP-55: Get all products
parent
892ead98
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
88 additions
and
4 deletions
+88
-4
.DS_Store
.DS_Store
+0
-0
.DS_Store
src/.DS_Store
+0
-0
.DS_Store
src/main/.DS_Store
+0
-0
ProductController.java
.../nisum/ascend/inventory/controller/ProductController.java
+11
-0
ProductDto.java
src/main/java/com/nisum/ascend/inventory/dto/ProductDto.java
+6
-3
Product.java
src/main/java/com/nisum/ascend/inventory/model/Product.java
+1
-1
ProductService.java
...va/com/nisum/ascend/inventory/service/ProductService.java
+7
-0
ProductControllerTest.java
...um/ascend/inventory/controller/ProductControllerTest.java
+63
-0
No files found.
.DS_Store
0 → 100644
View file @
d4075b8f
File added
src/.DS_Store
0 → 100644
View file @
d4075b8f
File added
src/main/.DS_Store
0 → 100644
View file @
d4075b8f
File added
src/main/java/com/nisum/ascend/inventory/controller/ProductController.java
View file @
d4075b8f
package
com
.
nisum
.
ascend
.
inventory
.
controller
;
package
com
.
nisum
.
ascend
.
inventory
.
controller
;
import
com.nisum.ascend.inventory.dto.ProductDto
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.nisum.ascend.inventory.service.ProductService
;
import
com.nisum.ascend.inventory.service.ProductService
;
import
reactor.core.publisher.Flux
;
@RestController
@RestController
@RequestMapping
(
"/api/products"
)
public
class
ProductController
{
public
class
ProductController
{
@Autowired
@Autowired
ProductService
productService
;
ProductService
productService
;
@GetMapping
()
public
ResponseEntity
<
Flux
<
ProductDto
>>
getAllProducts
()
{
return
ResponseEntity
.
ok
(
productService
.
findAllProducts
());
}
}
}
src/main/java/com/nisum/ascend/inventory/dto/ProductDto.java
View file @
d4075b8f
...
@@ -4,6 +4,9 @@ import lombok.AllArgsConstructor;
...
@@ -4,6 +4,9 @@ import lombok.AllArgsConstructor;
import
lombok.Getter
;
import
lombok.Getter
;
import
com.nisum.ascend.inventory.model.Product
;
import
com.nisum.ascend.inventory.model.Product
;
import
java.util.ArrayList
;
import
java.util.List
;
@Getter
@Getter
@AllArgsConstructor
@AllArgsConstructor
public
class
ProductDto
{
public
class
ProductDto
{
...
@@ -16,14 +19,14 @@ public class ProductDto {
...
@@ -16,14 +19,14 @@ public class ProductDto {
private
String
brand
;
private
String
brand
;
private
String
category
;
private
String
category
;
private
int
stock
;
private
int
stock
;
private
PromotionDto
promotion
;
private
List
<
PromotionDto
>
promotions
;
public
static
ProductDto
generateDtoFromProduct
(
Product
product
)
{
public
static
ProductDto
generateDtoFromProduct
(
Product
product
)
{
// TODO: Fetch the product's promotion from the Promotions com.nisum.ascend.inventory.service
// TODO: Fetch the product's promotion from the Promotions com.nisum.ascend.inventory.service
PromotionDto
promotion
=
new
PromotionDto
();
List
<
PromotionDto
>
promotions
=
new
ArrayList
<>
();
return
new
ProductDto
(
product
.
getSku
(),
product
.
getUpc
(),
product
.
getProductName
(),
product
.
getProductDescription
(),
product
.
getPrice
(),
product
.
getProductImageUrl
(),
product
.
getBrand
(),
product
.
getCategory
(),
product
.
getAvailableStock
(),
promotion
);
return
new
ProductDto
(
product
.
getSku
(),
product
.
getUpc
(),
product
.
getProductName
(),
product
.
getProductDescription
(),
product
.
getPrice
(),
product
.
getProductImageUrl
(),
product
.
getBrand
(),
product
.
getCategory
(),
product
.
getAvailableStock
(),
promotion
s
);
}
}
}
}
src/main/java/com/nisum/ascend/inventory/model/Product.java
View file @
d4075b8f
...
@@ -8,7 +8,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
...
@@ -8,7 +8,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Getter
@Getter
@Setter
@Setter
@Document
@Document
(
collection
=
"products"
)
public
class
Product
{
public
class
Product
{
@Id
@Id
private
String
id
;
private
String
id
;
...
...
src/main/java/com/nisum/ascend/inventory/service/ProductService.java
View file @
d4075b8f
package
com
.
nisum
.
ascend
.
inventory
.
service
;
package
com
.
nisum
.
ascend
.
inventory
.
service
;
import
com.nisum.ascend.inventory.dto.ProductDto
;
import
com.nisum.ascend.inventory.dto.ProductDto
;
import
com.nisum.ascend.inventory.model.Product
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Flux
;
...
@@ -11,4 +12,10 @@ public class ProductService {
...
@@ -11,4 +12,10 @@ public class ProductService {
@Autowired
@Autowired
ProductRepository
productRepository
;
ProductRepository
productRepository
;
public
Flux
<
ProductDto
>
findAllProducts
()
{
return
productRepository
.
findAll
()
.
map
(
ProductDto:
:
generateDtoFromProduct
);
}
}
}
src/test/java/com/nisum/ascend/inventory/controller/ProductControllerTest.java
0 → 100644
View file @
d4075b8f
package
com
.
nisum
.
ascend
.
inventory
.
controller
;
import
com.nisum.ascend.inventory.controller.ProductController
;
import
com.nisum.ascend.inventory.model.Product
;
import
com.nisum.ascend.inventory.repository.ProductRepository
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.extension.ExtendWith
;
import
org.mockito.Mock
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.mock.mockito.MockBean
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
import
org.springframework.test.annotation.DirtiesContext
;
import
org.springframework.test.context.ActiveProfiles
;
import
org.springframework.test.context.junit.jupiter.SpringExtension
;
import
org.springframework.test.web.reactive.server.WebTestClient
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
java.util.List
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertNotNull
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertTrue
;
@ExtendWith
(
SpringExtension
.
class
)
@SpringBootTest
(
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
)
@DirtiesContext
@AutoConfigureWebTestClient
@ActiveProfiles
(
"test"
)
@Slf4j
class
ProductControllerTest
{
@Autowired
private
WebTestClient
webTestClient
;
@BeforeEach
void
setUp
()
{
}
@Test
void
testFindAllProducts
(){
webTestClient
.
get
()
.
uri
(
"/api/products"
)
.
exchange
()
.
expectStatus
().
isOk
()
.
expectHeader
().
contentType
(
MediaType
.
APPLICATION_JSON_VALUE
)
.
expectBodyList
(
Product
.
class
)
.
consumeWith
(
product
->{
List
<
Product
>
products
=
product
.
getResponseBody
();
products
.
forEach
(
p
->{
assertNotNull
(
p
.
getSku
());
assertNotNull
(
p
.
getUpc
());
System
.
out
.
println
(
"Product SKU: "
+
p
.
getSku
());
System
.
out
.
println
(
"Product UPC: "
+
p
.
getUpc
());
});
});
}
}
\ 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