Skip to content

Commit a906b32

Browse files
Added tests for db_schema.xml and db_schema_whitelist.json generation with provided entity properties instead of columns data
1 parent 6483a70 commit a906b32

File tree

5 files changed

+160
-0
lines changed

5 files changed

+160
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"test_table": {
3+
"column": {
4+
"entity_id": true,
5+
"name": true,
6+
"age": true,
7+
"salary": true,
8+
"is_single": true
9+
},
10+
"index": {
11+
"TEST_TABLE_ENTITY_ID": true
12+
},
13+
"constraint": {
14+
"PRIMARY": true
15+
}
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0"?>
2+
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
4+
<table name="test_table" resource="default" engine="innodb" comment="Test Table">
5+
<column xsi:type="int" name="entity_id" padding="10" unsigned="true" nullable="false" identity="true"
6+
comment="Entity Id Column"/>
7+
<column xsi:type="varchar" name="name" nullable="false" length="255" comment="Name Column"/>
8+
<column xsi:type="int" name="age" padding="10" unsigned="true" nullable="false" identity="false"
9+
comment="Age Column"/>
10+
<column xsi:type="decimal" name="salary" precision="20" scale="2" unsigned="true" nullable="false"
11+
comment="Salary Column"/>
12+
<column xsi:type="boolean" name="is_single" nullable="false" comment="Is Single Column"/>
13+
<constraint xsi:type="primary" referenceId="PRIMARY">
14+
<column name="entity_id"/>
15+
</constraint>
16+
<index referenceId="TEST_TABLE_ENTITY_ID" indexType="btree">
17+
<column name="entity_id"/>
18+
</index>
19+
</table>
20+
</schema>

tests/com/magento/idea/magento2plugin/actions/generation/generator/DbSchemaWhitelistGeneratorTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
package com.magento.idea.magento2plugin.actions.generation.generator;
77

88
import com.magento.idea.magento2plugin.actions.generation.data.DbSchemaXmlData;
9+
import com.magento.idea.magento2plugin.actions.generation.generator.util.DbSchemaGeneratorDataProviderUtil;
10+
import com.magento.idea.magento2plugin.actions.generation.generator.util.DbSchemaGeneratorUtil;
911
import com.magento.idea.magento2plugin.magento.files.ModuleDbSchemaWhitelistJson;
1012
import com.magento.idea.magento2plugin.magento.packages.database.ColumnAttributes;
1113
import com.magento.idea.magento2plugin.magento.packages.database.TableColumnTypes;
@@ -46,6 +48,41 @@ public void testGenerateDbSchemaWhitelistJsonFile() {
4648
);
4749
}
4850

51+
/**
52+
* Test whether db_schema_whitelist.json file generated correctly
53+
* when columns provided as short entity properties.
54+
*/
55+
public void testGenerateDbSchemaWhitelistJsonFileForShortProperties() {
56+
final List<Map<String, String>> properties =
57+
DbSchemaGeneratorDataProviderUtil.generateEntityPropertiesForTest();
58+
59+
final List<Map<String, String>> columnsData =
60+
DbSchemaGeneratorUtil.complementShortPropertiesByDefaults(properties);
61+
columnsData.add(0, DbSchemaGeneratorUtil.getTableIdentityColumnData("entity_id"));
62+
63+
final DbSchemaXmlData dbSchemaXmlData = new DbSchemaXmlData(
64+
TABLE_NAME,
65+
"",
66+
"",
67+
"",
68+
columnsData
69+
);
70+
final DbSchemaWhitelistJsonGenerator dbSchemaWhitelistJsonGenerator =
71+
new DbSchemaWhitelistJsonGenerator(
72+
myFixture.getProject(),
73+
dbSchemaXmlData,
74+
MODULE_NAME
75+
);
76+
77+
final String filePath = this.getFixturePath(ModuleDbSchemaWhitelistJson.FILE_NAME);
78+
79+
assertGeneratedFileIsCorrect(
80+
myFixture.configureByFile(filePath),
81+
EXPECTED_DIRECTORY,
82+
dbSchemaWhitelistJsonGenerator.generate("test")
83+
);
84+
}
85+
4986
/**
5087
* Generate columns for testcase.
5188
*

tests/com/magento/idea/magento2plugin/actions/generation/generator/DbSchemaXmlGeneratorTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
package com.magento.idea.magento2plugin.actions.generation.generator;
77

88
import com.magento.idea.magento2plugin.actions.generation.data.DbSchemaXmlData;
9+
import com.magento.idea.magento2plugin.actions.generation.generator.util.DbSchemaGeneratorDataProviderUtil;
10+
import com.magento.idea.magento2plugin.actions.generation.generator.util.DbSchemaGeneratorUtil;
911
import com.magento.idea.magento2plugin.magento.files.ModuleDbSchemaXml;
1012
import com.magento.idea.magento2plugin.magento.packages.database.ColumnAttributes;
1113
import com.magento.idea.magento2plugin.magento.packages.database.TableColumnTypes;
@@ -53,6 +55,39 @@ public void testGenerateDbSchemaXmlFile() {
5355
);
5456
}
5557

58+
/**
59+
* Test db_schema.xml file generation when columns provided as short entity properties.
60+
*/
61+
public void testGenerateDbSchemaXmlFileForShortProperties() {
62+
final List<Map<String, String>> properties =
63+
DbSchemaGeneratorDataProviderUtil.generateEntityPropertiesForTest();
64+
65+
final List<Map<String, String>> columnsData =
66+
DbSchemaGeneratorUtil.complementShortPropertiesByDefaults(properties);
67+
columnsData.add(0, DbSchemaGeneratorUtil.getTableIdentityColumnData("entity_id"));
68+
69+
final DbSchemaXmlData dbSchemaXmlData = new DbSchemaXmlData(
70+
TABLE_NAME,
71+
TABLE_RESOURCE,
72+
TABLE_ENGINE,
73+
TABLE_COMMENT,
74+
columnsData
75+
);
76+
final DbSchemaXmlGenerator dbSchemaXmlGenerator = new DbSchemaXmlGenerator(
77+
dbSchemaXmlData,
78+
myFixture.getProject(),
79+
MODULE_NAME
80+
);
81+
82+
final String filePath = this.getFixturePath(ModuleDbSchemaXml.FILE_NAME);
83+
84+
assertGeneratedFileIsCorrect(
85+
myFixture.configureByFile(filePath),
86+
EXPECTED_DIRECTORY,
87+
dbSchemaXmlGenerator.generate("test")
88+
);
89+
}
90+
5691
/**
5792
* Generate columns for testcase.
5893
*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.actions.generation.generator.util;
7+
8+
import com.magento.idea.magento2plugin.magento.packages.PropertiesTypes;
9+
import java.util.HashMap;
10+
import java.util.LinkedList;
11+
import java.util.List;
12+
import java.util.Map;
13+
14+
public final class DbSchemaGeneratorDataProviderUtil {
15+
16+
private static final String PROPERTY_NAME = "Name";
17+
private static final String PROPERTY_TYPE = "Type";
18+
19+
private DbSchemaGeneratorDataProviderUtil() {}
20+
21+
/**
22+
* Generate properties for testcases.
23+
*
24+
* @return List of prepared properties.
25+
*/
26+
public static List<Map<String, String>> generateEntityPropertiesForTest() {
27+
final List<Map<String, String>> propertyList = new LinkedList<>();
28+
29+
final Map<String, String> nameProperty = new HashMap<>();
30+
nameProperty.put(PROPERTY_NAME, "name");
31+
nameProperty.put(PROPERTY_TYPE, PropertiesTypes.STRING.getPropertyType());
32+
propertyList.add(nameProperty);
33+
34+
final Map<String, String> ageProperty = new HashMap<>();
35+
ageProperty.put(PROPERTY_NAME, "age");
36+
ageProperty.put(PROPERTY_TYPE, PropertiesTypes.INT.getPropertyType());
37+
propertyList.add(ageProperty);
38+
39+
final Map<String, String> salaryProperty = new HashMap<>();
40+
salaryProperty.put(PROPERTY_NAME, "salary");
41+
salaryProperty.put(PROPERTY_TYPE, PropertiesTypes.FLOAT.getPropertyType());
42+
propertyList.add(salaryProperty);
43+
44+
final Map<String, String> singleProperty = new HashMap<>();
45+
singleProperty.put(PROPERTY_NAME, "is_single");
46+
singleProperty.put(PROPERTY_TYPE, PropertiesTypes.BOOL.getPropertyType());
47+
propertyList.add(singleProperty);
48+
49+
return propertyList;
50+
}
51+
}

0 commit comments

Comments
 (0)