Skip to content

Commit

Permalink
Refactor Flavor data model
Browse files Browse the repository at this point in the history
  • Loading branch information
baixinsui committed Oct 17, 2023
1 parent 44caa00 commit 7107649
Show file tree
Hide file tree
Showing 8 changed files with 143 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.eclipse.xpanse.modules.database.servicetemplate.ServiceTemplateEntity;
import org.eclipse.xpanse.modules.models.service.common.enums.Category;
import org.eclipse.xpanse.modules.models.service.common.enums.Csp;
import org.eclipse.xpanse.modules.models.servicetemplate.FlavorBasic;
import org.eclipse.xpanse.modules.models.servicetemplate.query.ServiceTemplateQueryModel;
import org.eclipse.xpanse.modules.models.servicetemplate.view.UserOrderableServiceVo;
import org.eclipse.xpanse.modules.servicetemplate.ServiceTemplateManage;
Expand Down Expand Up @@ -166,7 +167,13 @@ private UserOrderableServiceVo convertToUserOrderableServiceVo(
userOrderableServiceVo.setDescription(
serviceTemplateEntity.getOcl().getDescription());
userOrderableServiceVo.setBilling(serviceTemplateEntity.getOcl().getBilling());
userOrderableServiceVo.setFlavors(serviceTemplateEntity.getOcl().getFlavors());
List<FlavorBasic> flavorBasics = serviceTemplateEntity.getOcl().getFlavors()
.stream().map(flavor -> {
FlavorBasic flavorBasic = new FlavorBasic();
BeanUtils.copyProperties(flavor, flavorBasic);
return flavorBasic;
}).toList();
userOrderableServiceVo.setFlavors(flavorBasics);
userOrderableServiceVo.setVariables(
serviceTemplateEntity.getOcl().getDeployment().getVariables());
userOrderableServiceVo.setRegions(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,20 @@
package org.eclipse.xpanse.modules.models.servicetemplate;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.Map;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

/**
* Defines for service flavor.
*/
@Data
public class Flavor {

@NotNull
@NotBlank
@NotEmpty
@Schema(description = "The flavor name")
private String name;

@NotNull
@Schema(description = "The price of the flavor")
private Integer fixedPrice;
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class Flavor extends FlavorBasic {

@NotNull
@NotEmpty
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: Huawei Inc.
*/

package org.eclipse.xpanse.modules.models.servicetemplate;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
* Defines for service flavor.
*/
@Data
public class FlavorBasic {

@NotNull
@NotBlank
@NotEmpty
@Schema(description = "The flavor name")
private String name;

@NotNull
@Schema(description = "The price of the flavor")
private Integer fixedPrice;

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import org.eclipse.xpanse.modules.models.service.common.enums.Csp;
import org.eclipse.xpanse.modules.models.servicetemplate.Billing;
import org.eclipse.xpanse.modules.models.servicetemplate.DeployVariable;
import org.eclipse.xpanse.modules.models.servicetemplate.Flavor;
import org.eclipse.xpanse.modules.models.servicetemplate.FlavorBasic;
import org.eclipse.xpanse.modules.models.servicetemplate.Region;
import org.springframework.hateoas.RepresentationModel;

Expand Down Expand Up @@ -72,7 +72,7 @@ public class UserOrderableServiceVo extends RepresentationModel<UserOrderableSer

@NotNull
@Schema(description = "The flavors of the orderable service.")
private List<Flavor> flavors;
private List<FlavorBasic> flavors;

@NotNull
@Schema(description = "The billing policy of the orderable service.")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: Huawei Inc.
*
*/

package org.eclipse.xpanse.modules.models.servicetemplate;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

/**
* Test of FlavorBasic.
*/
class FlavorBasicTest {

private static final String name = "flavor";
private static final Integer fixedPrice = 1;
private static FlavorBasic flavorBasic;

@BeforeEach
void setUp() {
flavorBasic = new FlavorBasic();
flavorBasic.setName(name);
flavorBasic.setFixedPrice(fixedPrice);
}

@Test
void testGetterAndSetter() {
assertEquals(name, flavorBasic.getName());
assertEquals(fixedPrice, flavorBasic.getFixedPrice());
}

@Test
void testEqualsAndHashCode() {
assertEquals(flavorBasic, flavorBasic);
assertEquals(flavorBasic.hashCode(), flavorBasic.hashCode());

Object obj = new Object();
assertNotEquals(flavorBasic, obj);
assertNotEquals(flavorBasic, null);
assertNotEquals(flavorBasic.hashCode(), obj.hashCode());

FlavorBasic flavorBasic1 = new FlavorBasic();
FlavorBasic flavorBasic2 = new FlavorBasic();
assertNotEquals(flavorBasic, flavorBasic1);
assertNotEquals(flavorBasic, flavorBasic2);
assertEquals(flavorBasic1, flavorBasic2);
assertNotEquals(flavorBasic.hashCode(), flavorBasic1.hashCode());
assertNotEquals(flavorBasic.hashCode(), flavorBasic2.hashCode());
assertEquals(flavorBasic1.hashCode(), flavorBasic2.hashCode());

flavorBasic1.setName(name);
assertNotEquals(flavorBasic, flavorBasic1);
assertNotEquals(flavorBasic1, flavorBasic2);
assertNotEquals(flavorBasic.hashCode(), flavorBasic1.hashCode());
assertNotEquals(flavorBasic1.hashCode(), flavorBasic2.hashCode());

flavorBasic1.setFixedPrice(fixedPrice);
assertEquals(flavorBasic, flavorBasic1);
assertNotEquals(flavorBasic1, flavorBasic2);
assertEquals(flavorBasic.hashCode(), flavorBasic1.hashCode());
assertNotEquals(flavorBasic1.hashCode(), flavorBasic2.hashCode());
}

@Test
void testToString() {
String expectedString = "FlavorBasic(" +
"name=" + name +
", fixedPrice=" + fixedPrice + ")";
assertEquals(expectedString, flavorBasic.toString());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,9 @@ void testEqualsAndHashCode() {
@Test
void testToString() {
String expectedString = "Flavor(" +
"name=" + name +
", fixedPrice=" + fixedPrice + "" +
", properties=" + properties + "" +
")";
"super=FlavorBasic(name=" + name +
", fixedPrice=" + fixedPrice + ")" +
", properties=" + properties + ")";
assertEquals(expectedString, flavor.toString());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import org.eclipse.xpanse.modules.models.service.common.enums.Csp;
import org.eclipse.xpanse.modules.models.servicetemplate.Billing;
import org.eclipse.xpanse.modules.models.servicetemplate.DeployVariable;
import org.eclipse.xpanse.modules.models.servicetemplate.Flavor;
import org.eclipse.xpanse.modules.models.servicetemplate.FlavorBasic;
import org.eclipse.xpanse.modules.models.servicetemplate.Region;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand All @@ -35,7 +35,7 @@ class UserOrderableServiceVoTest {
private static final String icon = "icon";
private static List<@Valid Region> regions;
private static List<@Valid DeployVariable> variables;
private static List<Flavor> flavors;
private static List<FlavorBasic> flavorBasics;
private static Billing billing;
private static UserOrderableServiceVo userOrderableServiceVo;

Expand All @@ -50,9 +50,9 @@ void setUp() {
deployVariable.setName("HuaweiClouud AK");
variables = List.of(deployVariable);

Flavor flavor = new Flavor();
flavor.setName("flavor");
flavors = List.of(flavor);
FlavorBasic flavorBasic = new FlavorBasic();
flavorBasic.setName("flavorBasic");
flavorBasics = List.of(flavorBasic);

billing = new Billing();
billing.setModel("model");
Expand All @@ -67,7 +67,7 @@ void setUp() {
userOrderableServiceVo.setDescription(description);
userOrderableServiceVo.setIcon(icon);
userOrderableServiceVo.setVariables(variables);
userOrderableServiceVo.setFlavors(flavors);
userOrderableServiceVo.setFlavors(flavorBasics);
userOrderableServiceVo.setBilling(billing);
}

Expand Down Expand Up @@ -158,7 +158,7 @@ public void testEqualsAndHashCode() {
assertNotEquals(userOrderableServiceVo.hashCode(), userOrderableServiceVo1.hashCode());
assertNotEquals(userOrderableServiceVo1.hashCode(), userOrderableServiceVo2.hashCode());

userOrderableServiceVo1.setFlavors(flavors);
userOrderableServiceVo1.setFlavors(flavorBasics);
assertNotEquals(userOrderableServiceVo, userOrderableServiceVo1);
assertNotEquals(userOrderableServiceVo1, userOrderableServiceVo2);
assertNotEquals(userOrderableServiceVo.hashCode(), userOrderableServiceVo1.hashCode());
Expand All @@ -184,7 +184,7 @@ void testToString() {
"description=" + description + ", " +
"icon=" + icon + ", " +
"variables=" + variables + ", " +
"flavors=" + flavors + ", " +
"flavors=" + flavorBasics + ", " +
"billing=" + billing + ")";
assertEquals(expectedToString, userOrderableServiceVo.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.eclipse.xpanse.modules.models.response.Response;
import org.eclipse.xpanse.modules.models.response.ResultType;
import org.eclipse.xpanse.modules.models.security.constant.RoleConstants;
import org.eclipse.xpanse.modules.models.servicetemplate.FlavorBasic;
import org.eclipse.xpanse.modules.models.servicetemplate.Ocl;
import org.eclipse.xpanse.modules.models.servicetemplate.utils.OclLoader;
import org.eclipse.xpanse.modules.models.servicetemplate.view.ServiceTemplateDetailVo;
Expand Down Expand Up @@ -58,12 +59,10 @@
@AutoConfigureMockMvc
class ServiceCatalogApiTest {

private final static ObjectMapper objectMapper = new ObjectMapper();
private static String id;
private static ServiceTemplateDetailVo serviceTemplateDetailVo;
private static Ocl ocl;

private final static ObjectMapper objectMapper = new ObjectMapper();

@Resource
private MockMvc mockMvc;

Expand Down Expand Up @@ -154,6 +153,14 @@ UserOrderableServiceVo transToUserOrderableServiceVo(
ServiceTemplateDetailVo serviceTemplateDetailVo) {
UserOrderableServiceVo userOrderableServiceVo = new UserOrderableServiceVo();
BeanUtils.copyProperties(serviceTemplateDetailVo, userOrderableServiceVo);

List<FlavorBasic> flavorBasics = serviceTemplateDetailVo.getFlavors()
.stream().map(flavor -> {
FlavorBasic flavorBasic = new FlavorBasic();
BeanUtils.copyProperties(flavor, flavorBasic);
return flavorBasic;
}).toList();
userOrderableServiceVo.setFlavors(flavorBasics);
userOrderableServiceVo.add(
Link.of(String.format("http://localhost/xpanse/catalog/services/%s/openapi",
serviceTemplateDetailVo.getId().toString()), "openApi"));
Expand Down

0 comments on commit 7107649

Please sign in to comment.