Merge pull request 'tibor' (#17) from tibor into master
Reviewed-on: https://git.workouttest.org/bossanyit/aitrainer_server/pulls/17
This commit is contained in:
commit
8d0c79b98b
@ -11,7 +11,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "com.aitrainer"
|
group = "com.aitrainer"
|
||||||
version = "1.2.2"
|
version = "1.2.4"
|
||||||
java.sourceCompatibility = JavaVersion.VERSION_17
|
java.sourceCompatibility = JavaVersion.VERSION_17
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
23
data/db/update_1_2_3.sql
Normal file
23
data/db/update_1_2_3.sql
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
ALTER TABLE `meal`
|
||||||
|
ADD COLUMN `normalized_name` CHAR(100) NOT NULL DEFAULT '0' AFTER `name`,
|
||||||
|
ADD COLUMN `serving` DOUBLE(10,2) NULL DEFAULT '0.00' AFTER `quantity_unit`,
|
||||||
|
ADD COLUMN `serving_unit` CHAR(50) NULL DEFAULT '' AFTER `serving`;
|
||||||
|
|
||||||
|
ALTER TABLE `diet_meal`
|
||||||
|
ADD COLUMN `normalized_name` CHAR(100) NOT NULL DEFAULT '0' AFTER `meal_name`,
|
||||||
|
ADD COLUMN `serving` DOUBLE(10,2) NULL DEFAULT '0.00' AFTER `quantity_unit`,
|
||||||
|
ADD COLUMN `serving_unit` CHAR(50) NULL DEFAULT '' AFTER `serving`;
|
||||||
|
|
||||||
|
ALTER TABLE `recipe_meal`
|
||||||
|
CHANGE COLUMN `quantity` `quantity` DOUBLE NULL DEFAULT NULL AFTER `recipe_id`,
|
||||||
|
ADD COLUMN `quantity_unit` CHAR(50) NULL DEFAULT NULL AFTER `quantity`;
|
||||||
|
|
||||||
|
ALTER TABLE `meal`
|
||||||
|
DROP INDEX `name_quantity`,
|
||||||
|
ADD UNIQUE INDEX `id_normalized_name` (`id`, `normalized_name`);
|
||||||
|
|
||||||
|
UPDATE configuration set config_value = "1.2.3", date_change=CURRENT_DATE WHERE config_key = "db_version";
|
||||||
|
|
||||||
|
COMMIT;
|
9
data/db/update_1_2_4.sql
Normal file
9
data/db/update_1_2_4.sql
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
ALTER TABLE `meal`
|
||||||
|
DROP INDEX `name_quantity`,
|
||||||
|
ADD UNIQUE INDEX `normalized_name` (`normalized_name`);
|
||||||
|
|
||||||
|
UPDATE configuration set config_value = "1.2.4", date_change=CURRENT_DATE WHERE config_key = "db_version";
|
||||||
|
|
||||||
|
COMMIT;
|
@ -45,7 +45,7 @@ class OpenAIController() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(BetaOpenAI::class, DelicateCoroutinesApi::class)
|
@OptIn(BetaOpenAI::class, DelicateCoroutinesApi::class)
|
||||||
@PostMapping("/openai/chat_completion")
|
@PostMapping("/openai/chat_completion", produces = [org.springframework.http.MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8"])
|
||||||
fun getOpenAIChatCompletion(@RequestBody openai: OpenAIChat, @Value("\${openai.key}") openaiKey: String, ) : String {
|
fun getOpenAIChatCompletion(@RequestBody openai: OpenAIChat, @Value("\${openai.key}") openaiKey: String, ) : String {
|
||||||
var result: String
|
var result: String
|
||||||
val openAIService = OpenAIService(openaiKey, openai.modelName, openai.temperature)
|
val openAIService = OpenAIService(openaiKey, openai.modelName, openai.temperature)
|
||||||
|
@ -12,8 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import com.google.gson.GsonBuilder
|
import com.google.gson.GsonBuilder
|
||||||
import org.springframework.web.bind.annotation.CrossOrigin
|
import org.springframework.http.MediaType
|
||||||
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api")
|
@RequestMapping("/api")
|
||||||
@ -42,8 +41,7 @@ class PackageController(private val exerciseAbilityRepository: ExerciseAbilityRe
|
|||||||
private val dietSensitivityRepository: DietSensitivityRepository
|
private val dietSensitivityRepository: DietSensitivityRepository
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@GetMapping("/diet_package")
|
@GetMapping("/diet_package", produces = [MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8"])
|
||||||
@CrossOrigin(origins = ["http://localhost:48102"])
|
|
||||||
fun getDietPackageData(): ResponseEntity<String> {
|
fun getDietPackageData(): ResponseEntity<String> {
|
||||||
val gson = GsonBuilder()
|
val gson = GsonBuilder()
|
||||||
.excludeFieldsWithoutExposeAnnotation()
|
.excludeFieldsWithoutExposeAnnotation()
|
||||||
|
@ -40,4 +40,12 @@ class DietUserConsumptionController(private val dietUserConsumptionRepository: D
|
|||||||
return if (list.isEmpty()) ResponseEntity.notFound().build() else
|
return if (list.isEmpty()) ResponseEntity.notFound().build() else
|
||||||
ResponseEntity.ok().body(list)
|
ResponseEntity.ok().body(list)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/diet_user_consumption/delete/{id}")
|
||||||
|
fun delete(@PathVariable id: Long): ResponseEntity<*> {
|
||||||
|
return dietUserConsumptionRepository.findById(id).map { existingConsumption ->
|
||||||
|
dietUserConsumptionRepository.delete(existingConsumption)
|
||||||
|
ResponseEntity.ok().body("OK")
|
||||||
|
}.orElse(ResponseEntity.notFound().build())
|
||||||
|
}
|
||||||
}
|
}
|
@ -2,6 +2,7 @@ package com.aitrainer.api.controller.diet
|
|||||||
|
|
||||||
import com.aitrainer.api.model.diet.Meal
|
import com.aitrainer.api.model.diet.Meal
|
||||||
import com.aitrainer.api.repository.diet.MealRepository
|
import com.aitrainer.api.repository.diet.MealRepository
|
||||||
|
import org.springframework.http.MediaType
|
||||||
import org.springframework.http.ResponseEntity
|
import org.springframework.http.ResponseEntity
|
||||||
import org.springframework.web.bind.annotation.*
|
import org.springframework.web.bind.annotation.*
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ class MealController(private val mealRepository: MealRepository) {
|
|||||||
return ResponseEntity.ok().body(newMeal)
|
return ResponseEntity.ok().body(newMeal)
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/meal")
|
@GetMapping("/meal", produces = [MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8"])
|
||||||
fun getAll(): ResponseEntity<List<Meal>> {
|
fun getAll(): ResponseEntity<List<Meal>> {
|
||||||
val list = mealRepository.findAll()
|
val list = mealRepository.findAll()
|
||||||
return if (list.isEmpty()) ResponseEntity.notFound().build() else
|
return if (list.isEmpty()) ResponseEntity.notFound().build() else
|
||||||
@ -36,4 +37,29 @@ class MealController(private val mealRepository: MealRepository) {
|
|||||||
ResponseEntity.ok().body(meal)
|
ResponseEntity.ok().body(meal)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/meal/{id}")
|
||||||
|
fun update(@PathVariable(value = "id") id: Long, @RequestBody meal: Meal): ResponseEntity<Meal> {
|
||||||
|
val existingMeal = mealRepository.findById(id) ?: return ResponseEntity.notFound().build()
|
||||||
|
|
||||||
|
val updatedMeal: Meal = existingMeal.copy(
|
||||||
|
id = existingMeal.id,
|
||||||
|
name = existingMeal.name,
|
||||||
|
normalizedName = meal.normalizedName,
|
||||||
|
description = meal.description,
|
||||||
|
calMin = meal.calMin,
|
||||||
|
calMax = meal.calMax,
|
||||||
|
chMin = meal.chMin,
|
||||||
|
chMax = meal.chMax,
|
||||||
|
proteinMin = meal.proteinMin,
|
||||||
|
proteinMax = meal.proteinMax,
|
||||||
|
fatMin = meal.fatMin,
|
||||||
|
fatMax = meal.fatMax,
|
||||||
|
sugar = meal.sugar,
|
||||||
|
serving = meal.serving,
|
||||||
|
servingUnit = meal.servingUnit
|
||||||
|
)
|
||||||
|
|
||||||
|
return ResponseEntity.ok().body(mealRepository.save(updatedMeal))
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -11,6 +11,9 @@ data class DietMeal (
|
|||||||
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose val id: Long = 0,
|
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose val id: Long = 0,
|
||||||
@Expose @get: NotNull val mealId: Long = 0,
|
@Expose @get: NotNull val mealId: Long = 0,
|
||||||
@Expose @get: NotNull val mealName: String = "",
|
@Expose @get: NotNull val mealName: String = "",
|
||||||
|
@Expose @get: NotNull val normalizedName: String = "",
|
||||||
|
@Expose @get: NotNull val serving: Double = 0.0,
|
||||||
|
@Expose @get: NotNull val servingUnit: String = "",
|
||||||
@Expose @get: NotNull val meal: String = "",
|
@Expose @get: NotNull val meal: String = "",
|
||||||
@Expose @get: NotNull var quantity: Double = 0.0,
|
@Expose @get: NotNull var quantity: Double = 0.0,
|
||||||
@Expose @get: NotNull val quantityUnit: String = "",
|
@Expose @get: NotNull val quantityUnit: String = "",
|
||||||
|
@ -8,8 +8,11 @@ data class Meal (
|
|||||||
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose val id: Long = 0,
|
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose val id: Long = 0,
|
||||||
|
|
||||||
@Expose @get: NotNull val name: String = "",
|
@Expose @get: NotNull val name: String = "",
|
||||||
|
@Expose @get: NotNull var normalizedName: String = "",
|
||||||
@Expose @get: NotNull val quantity: Double = 0.0,
|
@Expose @get: NotNull val quantity: Double = 0.0,
|
||||||
@Expose @get: NotNull val quantityUnit: String = "",
|
@Expose @get: NotNull val quantityUnit: String = "",
|
||||||
|
@Expose @get: NotNull var serving: Double = 0.0,
|
||||||
|
@Expose @get: NotNull var servingUnit: String = "",
|
||||||
@Expose @get: NotNull val description: String = "",
|
@Expose @get: NotNull val description: String = "",
|
||||||
@Expose @get: NotNull val calMin: Double = 0.0,
|
@Expose @get: NotNull val calMin: Double = 0.0,
|
||||||
@Expose @get: NotNull val calMax: Double = 0.0,
|
@Expose @get: NotNull val calMax: Double = 0.0,
|
||||||
|
@ -80,6 +80,9 @@ class OpenAIService(@Value("\${openai.key}") private val openaiKey: String, priv
|
|||||||
}
|
}
|
||||||
|
|
||||||
val realModelName = "gpt-3.5-turbo"
|
val realModelName = "gpt-3.5-turbo"
|
||||||
|
/*if ( modelName != null) {
|
||||||
|
realModelName = modelName
|
||||||
|
}*/
|
||||||
var realTemperature = 0.1
|
var realTemperature = 0.1
|
||||||
if ( temperature != null ) {
|
if ( temperature != null ) {
|
||||||
realTemperature = temperature
|
realTemperature = temperature
|
||||||
|
@ -16,12 +16,13 @@ logging.config=classpath:logback-spring.xml
|
|||||||
logging.file=logs
|
logging.file=logs
|
||||||
|
|
||||||
# if the database structure has been changed, increment this version number
|
# if the database structure has been changed, increment this version number
|
||||||
application.version=1.2.2
|
application.version=1.2.4
|
||||||
|
|
||||||
jwt.secret=aitrainer
|
jwt.secret=aitrainer
|
||||||
|
|
||||||
openai.key=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
|
openai.key=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
|
||||||
firebase.key=AIzaSyBLn7Bz73Z1hB-OhqphBDsskOyGmpI7J8E
|
firebase.key=AIzaSyBLn7Bz73Z1hB-OhqphBDsskOyGmpI7J8E
|
||||||
spring.mail.properties.mail.mime.charset=UTF-8
|
spring.mail.properties.mail.mime.charset=UTF-8
|
||||||
|
spring.http.encoding.charset=UTF-8
|
||||||
|
|
||||||
spring.mvc.cors.allowed-origins=*
|
spring.mvc.cors.allowed-origins=*
|
||||||
|
@ -14,12 +14,13 @@ logging.config=classpath:logback-spring.xml
|
|||||||
logging.file=logs
|
logging.file=logs
|
||||||
|
|
||||||
# if the database structue has been changed, increment this version number
|
# if the database structue has been changed, increment this version number
|
||||||
application.version=1.2.2
|
application.version=1.2.4
|
||||||
|
|
||||||
jwt.secret=aitrainer
|
jwt.secret=aitrainer
|
||||||
|
|
||||||
firebase.key=AIzaSyBLn7Bz73Z1hB-OhqphBDsskOyGmpI7J8E
|
firebase.key=AIzaSyBLn7Bz73Z1hB-OhqphBDsskOyGmpI7J8E
|
||||||
openai.key=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
|
openai.key=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
|
||||||
spring.mail.properties.mail.mime.charset=UTF-8
|
spring.mail.properties.mail.mime.charset=UTF-8
|
||||||
|
spring.http.encoding.charset=UTF-8
|
||||||
|
|
||||||
spring.mvc.cors.allowed-origins=*
|
spring.mvc.cors.allowed-origins=*
|
@ -4,3 +4,4 @@ spring.config.use-legacy-processing = true
|
|||||||
spring.datasource.url = jdbc:mysql://192.168.100.98:3306/diet4you?serverTimezone=CET&useSSL=false&characterEncoding=UTF-8&allowMultiQueries=true
|
spring.datasource.url = jdbc:mysql://192.168.100.98:3306/diet4you?serverTimezone=CET&useSSL=false&characterEncoding=UTF-8&allowMultiQueries=true
|
||||||
spring.datasource.username = aitrainer
|
spring.datasource.username = aitrainer
|
||||||
spring.datasource.password = ENC(WZplPYr8WmrLHshesY4T6oXplK3MlUVJ)
|
spring.datasource.password = ENC(WZplPYr8WmrLHshesY4T6oXplK3MlUVJ)
|
||||||
|
spring.http.encoding.charset=UTF-8
|
@ -14,7 +14,7 @@ logging.config=classpath:logback-spring.xml
|
|||||||
logging.file=logs
|
logging.file=logs
|
||||||
|
|
||||||
# if the database structue has been changed, increment this version number
|
# if the database structue has been changed, increment this version number
|
||||||
application.version=1.2.2
|
application.version=1.2.4
|
||||||
|
|
||||||
jwt.secret=aitrainer
|
jwt.secret=aitrainer
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ logging.config=classpath:logback-spring.xml
|
|||||||
logging.file=logs
|
logging.file=logs
|
||||||
|
|
||||||
# if the database structure has been changed, increment this version number
|
# if the database structure has been changed, increment this version number
|
||||||
application.version=1.2.2
|
application.version=1.2.4
|
||||||
|
|
||||||
jwt.secret=aitrainer
|
jwt.secret=aitrainer
|
||||||
|
|
||||||
@ -25,4 +25,5 @@ openai.key=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
|
|||||||
spring.mail.properties.mail.mime.charset=UTF-8
|
spring.mail.properties.mail.mime.charset=UTF-8
|
||||||
firebase.key=AIzaSyCUXBWV3_qzvV__ZWZA1siHftrrJpjDKh4
|
firebase.key=AIzaSyCUXBWV3_qzvV__ZWZA1siHftrrJpjDKh4
|
||||||
|
|
||||||
spring.mvc.cors.allowed-origins=*
|
spring.mvc.cors.allowed-origins=*
|
||||||
|
spring.http.encoding.charset=UTF-8
|
@ -1,5 +1,6 @@
|
|||||||
package com.aitrainer.api.test.diet
|
package com.aitrainer.api.test.diet
|
||||||
|
|
||||||
|
import com.aitrainer.api.model.diet.Diet
|
||||||
import com.aitrainer.api.model.diet.DietUserConsumption
|
import com.aitrainer.api.model.diet.DietUserConsumption
|
||||||
import com.aitrainer.api.test.Tokenizer
|
import com.aitrainer.api.test.Tokenizer
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
@ -13,6 +14,7 @@ import org.springframework.boot.test.context.SpringBootTest
|
|||||||
import org.springframework.http.MediaType
|
import org.springframework.http.MediaType
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension
|
import org.springframework.test.context.junit.jupiter.SpringExtension
|
||||||
import org.springframework.test.web.servlet.MockMvc
|
import org.springframework.test.web.servlet.MockMvc
|
||||||
|
import org.springframework.test.web.servlet.MvcResult
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
|
||||||
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
|
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
|
||||||
@ -115,7 +117,6 @@ class DietConsumptionTest {
|
|||||||
.andExpect(jsonPath("$.cal").value(65.0))
|
.andExpect(jsonPath("$.cal").value(65.0))
|
||||||
.andExpect(jsonPath("$.ch").value(44.0))
|
.andExpect(jsonPath("$.ch").value(44.0))
|
||||||
|
|
||||||
// Act & Assert
|
|
||||||
mockMvc.perform(get("/api/diet_user_consumption/5")
|
mockMvc.perform(get("/api/diet_user_consumption/5")
|
||||||
.header("Authorization", "Bearer $authToken")
|
.header("Authorization", "Bearer $authToken")
|
||||||
.contentType(MediaType.APPLICATION_JSON))
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
@ -124,6 +125,38 @@ class DietConsumptionTest {
|
|||||||
.andExpect(jsonPath("$.[1].name").value("Rozs zsömle"))
|
.andExpect(jsonPath("$.[1].name").value("Rozs zsömle"))
|
||||||
.andExpect(jsonPath("$.[1].ch").value(44))
|
.andExpect(jsonPath("$.[1].ch").value(44))
|
||||||
|
|
||||||
|
|
||||||
|
val dietUserConsumption6 = DietUserConsumption(
|
||||||
|
dietUserId = 5,
|
||||||
|
mealId = 11,
|
||||||
|
name = "Hamburger",
|
||||||
|
dateConsumption = "2023-04-12 16:30",
|
||||||
|
quantity = 180.0,
|
||||||
|
quantityUnit = "g",
|
||||||
|
cal = 265.0, //**
|
||||||
|
protein = 31.0,
|
||||||
|
fat = 24.0,
|
||||||
|
ch = 34.0, //**
|
||||||
|
sugar = 8.0,
|
||||||
|
)
|
||||||
|
val mvcResult: MvcResult = mockMvc.perform(
|
||||||
|
MockMvcRequestBuilders.post("/api/diet_user_consumption")
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.header("Authorization", "Bearer $authToken")
|
||||||
|
.content(toJson(dietUserConsumption6))
|
||||||
|
).andExpect(status().isOk)
|
||||||
|
.andReturn()
|
||||||
|
|
||||||
|
|
||||||
|
val gson= Gson()
|
||||||
|
val consumptionJson = mvcResult.response.contentAsString
|
||||||
|
val consumption = gson.fromJson(consumptionJson, DietUserConsumption::class.java)
|
||||||
|
mockMvc.perform(
|
||||||
|
MockMvcRequestBuilders.post("/api/diet_user_consumption/delete/"+consumption.id)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.header("Authorization", "Bearer $authToken")
|
||||||
|
).andExpect(status().isOk)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun toJson(obj: Any): String {
|
private fun toJson(obj: Any): String {
|
||||||
|
@ -85,10 +85,14 @@ class DietTest {
|
|||||||
val meal3 = DietMeal(
|
val meal3 = DietMeal(
|
||||||
mealName = "monday|lunch",
|
mealName = "monday|lunch",
|
||||||
meal = "Savanyúkáposzta",
|
meal = "Savanyúkáposzta",
|
||||||
quantity = 2.0,
|
normalizedName = "Savanyukaposzta",
|
||||||
quantityUnit = "tányér",
|
quantity = 222.0,
|
||||||
|
quantityUnit = "gramm",
|
||||||
mealId = 3,
|
mealId = 3,
|
||||||
mealDate = "2023-03-07 12:00:00"
|
mealDate = "2023-03-07 12:00:00",
|
||||||
|
serving = 1.0,
|
||||||
|
servingUnit = "adag"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
newDiet.meals.add(meal)
|
newDiet.meals.add(meal)
|
||||||
@ -109,9 +113,11 @@ class DietTest {
|
|||||||
.andExpect(jsonPath("$.meals[0].mealDate").value("2023-03-07 08:00:00"))
|
.andExpect(jsonPath("$.meals[0].mealDate").value("2023-03-07 08:00:00"))
|
||||||
.andExpect(jsonPath("$.meals[1].mealName").value("monday|lunch"))
|
.andExpect(jsonPath("$.meals[1].mealName").value("monday|lunch"))
|
||||||
.andExpect(jsonPath("$.meals[2].meal").value("Savanyúkáposzta"))
|
.andExpect(jsonPath("$.meals[2].meal").value("Savanyúkáposzta"))
|
||||||
.andExpect(jsonPath("$.meals[2].quantity").value(2.0))
|
.andExpect(jsonPath("$.meals[2].normalizedName").value("Savanyukaposzta"))
|
||||||
|
.andExpect(jsonPath("$.meals[2].quantity").value(222.0))
|
||||||
.andExpect(jsonPath("$.meals[2].mealId").value(3))
|
.andExpect(jsonPath("$.meals[2].mealId").value(3))
|
||||||
.andExpect(jsonPath("$.meals[2].quantityUnit").value("tányér"))
|
.andExpect(jsonPath("$.meals[2].quantityUnit").value("gramm"))
|
||||||
|
.andExpect(jsonPath("$.meals[2].servingUnit").value("adag"))
|
||||||
|
|
||||||
// update no_text
|
// update no_text
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ import org.springframework.test.web.servlet.MockMvc
|
|||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
|
||||||
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
|
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension::class)
|
@ExtendWith(SpringExtension::class)
|
||||||
@ -45,13 +46,16 @@ class MealTest {
|
|||||||
chMin = 1.0,
|
chMin = 1.0,
|
||||||
chMax = 3.0,
|
chMax = 3.0,
|
||||||
sugar = 0.0,
|
sugar = 0.0,
|
||||||
|
serving = 1.0,
|
||||||
|
servingUnit = "adag",
|
||||||
|
normalizedName = "Tukortojas"
|
||||||
|
|
||||||
)
|
)
|
||||||
private val meal2 = Meal(
|
private val meal2 = Meal(
|
||||||
|
|
||||||
name = "Tigris buci",
|
name = "Tigris buci",
|
||||||
quantity = 3.0,
|
quantity = 233.0,
|
||||||
quantityUnit = "db",
|
quantityUnit = "gram",
|
||||||
calMin = 123.0,
|
calMin = 123.0,
|
||||||
calMax = 140.0,
|
calMax = 140.0,
|
||||||
proteinMin = 19.0,
|
proteinMin = 19.0,
|
||||||
@ -61,8 +65,11 @@ class MealTest {
|
|||||||
chMin = 50.0,
|
chMin = 50.0,
|
||||||
chMax = 60.0,
|
chMax = 60.0,
|
||||||
sugar = 5.0,
|
sugar = 5.0,
|
||||||
|
serving = 3.0,
|
||||||
|
servingUnit = "db",
|
||||||
|
normalizedName = "Tigris buci"
|
||||||
)
|
)
|
||||||
private val meal3 = Meal(
|
private var meal3 = Meal(
|
||||||
|
|
||||||
name = "Töltötttojás",
|
name = "Töltötttojás",
|
||||||
quantity = 330.0,
|
quantity = 330.0,
|
||||||
@ -75,6 +82,9 @@ class MealTest {
|
|||||||
chMin = 1.0,
|
chMin = 1.0,
|
||||||
chMax = 3.0,
|
chMax = 3.0,
|
||||||
sugar = 0.0,
|
sugar = 0.0,
|
||||||
|
serving= 3.0,
|
||||||
|
servingUnit = "adag" ,
|
||||||
|
normalizedName = "Toltotttojas"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -99,6 +109,8 @@ class MealTest {
|
|||||||
.andExpect(jsonPath("$.sugar").value(0.0))
|
.andExpect(jsonPath("$.sugar").value(0.0))
|
||||||
.andExpect(jsonPath("$.quantity").value(90.0))
|
.andExpect(jsonPath("$.quantity").value(90.0))
|
||||||
.andExpect(jsonPath("$.proteinMax").value(25.0))
|
.andExpect(jsonPath("$.proteinMax").value(25.0))
|
||||||
|
.andExpect(jsonPath("$.servingUnit").value("adag"))
|
||||||
|
.andExpect(jsonPath("$.normalizedName").value("Tukortojas"))
|
||||||
|
|
||||||
var mvcResult = mockMvc.perform(
|
var mvcResult = mockMvc.perform(
|
||||||
MockMvcRequestBuilders.post("/api/meal")
|
MockMvcRequestBuilders.post("/api/meal")
|
||||||
@ -127,6 +139,7 @@ class MealTest {
|
|||||||
.contentType(MediaType.APPLICATION_JSON))
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
.andExpect(status().isOk)
|
.andExpect(status().isOk)
|
||||||
.andExpect(jsonPath("$.[3].name").value("Tükörtojás"))
|
.andExpect(jsonPath("$.[3].name").value("Tükörtojás"))
|
||||||
|
.andExpect(jsonPath("$.[3].normalizedName").value("Tukortojas"))
|
||||||
.andExpect(jsonPath("$.[4].name").value("Tigris buci"))
|
.andExpect(jsonPath("$.[4].name").value("Tigris buci"))
|
||||||
.andExpect(jsonPath("$.[5].quantity").value(330.0))
|
.andExpect(jsonPath("$.[5].quantity").value(330.0))
|
||||||
.andExpect(jsonPath("$.[5].name").value("Töltötttojás"))
|
.andExpect(jsonPath("$.[5].name").value("Töltötttojás"))
|
||||||
@ -168,10 +181,34 @@ class MealTest {
|
|||||||
val newMealJson3 = mvcResult.response.contentAsString
|
val newMealJson3 = mvcResult.response.contentAsString
|
||||||
val newMeal3 = gson.fromJson(newMealJson3, Meal::class.java)
|
val newMeal3 = gson.fromJson(newMealJson3, Meal::class.java)
|
||||||
|
|
||||||
|
// update
|
||||||
|
newMeal3.normalizedName = "Toltott-tojas"
|
||||||
|
newMeal3.servingUnit = "db"
|
||||||
|
newMeal3.serving = 5.0
|
||||||
|
mvcResult = mockMvc.perform(
|
||||||
|
MockMvcRequestBuilders.post("/api/meal/${newMeal3.id}")
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.header("Authorization", "Bearer $authToken")
|
||||||
|
.content(toJson(newMeal3))
|
||||||
|
) .andExpect(status().isOk)
|
||||||
|
.andReturn()
|
||||||
|
|
||||||
|
val newMealJson3Update = mvcResult.response.contentAsString
|
||||||
|
val newMeal3Update = gson.fromJson(newMealJson3Update, Meal::class.java)
|
||||||
|
|
||||||
|
assertEquals(newMeal3Update.normalizedName,"Toltott-tojas" )
|
||||||
|
/*
|
||||||
|
.andExpect(jsonPath("$.normalizedName").value("Toltott-tojas"))
|
||||||
|
.andExpect(jsonPath("$.name").value("Töltötttojás"))
|
||||||
|
.andExpect(jsonPath("$.calMax").value(112.0))
|
||||||
|
.andExpect(jsonPath("$.serving").value(5.0))*/
|
||||||
|
|
||||||
mealRepository.delete(newMeal3)
|
mealRepository.delete(newMeal3)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun toJson(obj: Any): String {
|
private fun toJson(obj: Any): String {
|
||||||
return Gson().toJson(obj)
|
val json = Gson().toJson(obj)
|
||||||
|
println(json)
|
||||||
|
return json
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user