Skip to content

Commit ce9d0dc

Browse files
309: Added test for DbSchemaXmlGenerator
1 parent 57ce9f8 commit ce9d0dc

File tree

2 files changed

+175
-0
lines changed

2 files changed

+175
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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="11" unsigned="true" nullable="false" identity="true"
6+
comment="Entity Id Column"/>
7+
<column xsi:type="varchar" name="name" nullable="false" length="255" default="John Smith"
8+
comment="Name Column"/>
9+
<column xsi:type="int" name="age" padding="5" unsigned="true" nullable="true" identity="false"
10+
comment="Age Column"/>
11+
<column xsi:type="decimal" name="salary" unsigned="true" nullable="false" precision="10" scale="2" default="0.0"
12+
comment="Salary Column"/>
13+
<column xsi:type="date" name="dob" nullable="true" comment="Date Of The Birth Column"/>
14+
<column xsi:type="timestamp" name="created_at" nullable="false" on_update="false" default="CURRENT_TIMESTAMP"
15+
comment="Created At Column"/>
16+
<column xsi:type="timestamp" name="updated_at" nullable="false" on_update="true" default="CURRENT_TIMESTAMP"
17+
comment="Updated At Column"/>
18+
<constraint xsi:type="primary" referenceId="PRIMARY">
19+
<column name="entity_id"/>
20+
</constraint>
21+
<index referenceId="TEST_TABLE_ENTITY_ID" indexType="btree">
22+
<column name="entity_id"/>
23+
</index>
24+
</table>
25+
</schema>
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
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;
7+
8+
import com.magento.idea.magento2plugin.actions.generation.data.util.DbSchemaXmlSourceDataUtil;
9+
import com.magento.idea.magento2plugin.actions.generation.data.DbSchemaXmlData;
10+
import com.magento.idea.magento2plugin.magento.files.ModuleDbSchemaXml;
11+
import java.util.LinkedHashMap;
12+
import java.util.LinkedList;
13+
import java.util.List;
14+
import java.util.Map;
15+
16+
public class DbSchemaXmlGeneratorTest extends BaseGeneratorTestCase {
17+
private static final String MODULE_NAME = "Foo_Bar";
18+
private static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/etc";
19+
private static final String TABLE_NAME = "test_table";
20+
private static final String TABLE_COMMENT = "Test Table";
21+
private static final String BOOLEAN_VALUE_TRUE = "true";
22+
private static final String BOOLEAN_VALUE_FALSE = "false";
23+
private static final String CURRENT_TIMESTAMP_DEFAULT_VALUE = "CURRENT_TIMESTAMP";
24+
private static final String TABLE_RESOURCE = DbSchemaXmlSourceDataUtil.TABLE_RESOURCE_DEFAULT;
25+
private static final String TABLE_ENGINE = DbSchemaXmlSourceDataUtil.TABLE_ENGINE_INNODB;
26+
27+
/**
28+
* Test whether db_schema.xml file generated correctly.
29+
*/
30+
public void testGenerateDbSchemaXmlFile() {
31+
final DbSchemaXmlData dbSchemaXmlData = new DbSchemaXmlData(
32+
TABLE_NAME,
33+
TABLE_RESOURCE,
34+
TABLE_ENGINE,
35+
TABLE_COMMENT,
36+
createColumnsForTest()
37+
);
38+
final DbSchemaXmlGenerator dbSchemaXmlGenerator = new DbSchemaXmlGenerator(
39+
dbSchemaXmlData,
40+
myFixture.getProject(),
41+
MODULE_NAME
42+
);
43+
44+
final String filePath = this.getFixturePath(ModuleDbSchemaXml.FILE_NAME);
45+
46+
assertGeneratedFileIsCorrect(
47+
myFixture.configureByFile(filePath),
48+
EXPECTED_DIRECTORY,
49+
dbSchemaXmlGenerator.generate("test")
50+
);
51+
}
52+
53+
/**
54+
* Generate columns for testcase.
55+
*
56+
* @return List
57+
*/
58+
@SuppressWarnings("PMD")
59+
private List<Map<String, String>> createColumnsForTest() {
60+
final List<Map<String, String>> columns = new LinkedList<>();
61+
final Map<String, String> entityIdColumnData = new LinkedHashMap<>();
62+
entityIdColumnData.put(
63+
ModuleDbSchemaXml.XML_ATTR_COLUMN_TYPE,
64+
DbSchemaXmlSourceDataUtil.COLUMN_TYPE_INT
65+
);
66+
entityIdColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NAME, "entity_id");
67+
entityIdColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_PADDING, "11");
68+
entityIdColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_UNSIGNED, BOOLEAN_VALUE_TRUE);
69+
entityIdColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NULLABLE, BOOLEAN_VALUE_FALSE);
70+
entityIdColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_IDENTITY, BOOLEAN_VALUE_TRUE);
71+
entityIdColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_COMMENT, "Entity Id Column");
72+
columns.add(entityIdColumnData);
73+
final Map<String, String> nameColumnData = new LinkedHashMap<>();
74+
nameColumnData.put(
75+
ModuleDbSchemaXml.XML_ATTR_COLUMN_TYPE,
76+
DbSchemaXmlSourceDataUtil.COLUMN_TYPE_VARCHAR
77+
);
78+
nameColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NAME, "name");
79+
nameColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NULLABLE, BOOLEAN_VALUE_FALSE);
80+
nameColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_LENGTH, "255");
81+
nameColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_DEFAULT, "John Smith");
82+
nameColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_COMMENT, "Name Column");
83+
columns.add(nameColumnData);
84+
final Map<String, String> ageColumnData = new LinkedHashMap<>();
85+
ageColumnData.put(
86+
ModuleDbSchemaXml.XML_ATTR_COLUMN_TYPE,
87+
DbSchemaXmlSourceDataUtil.COLUMN_TYPE_INT
88+
);
89+
ageColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NAME, "age");
90+
ageColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_PADDING, "5");
91+
ageColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_UNSIGNED, BOOLEAN_VALUE_TRUE);
92+
ageColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NULLABLE, BOOLEAN_VALUE_TRUE);
93+
ageColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_IDENTITY, BOOLEAN_VALUE_FALSE);
94+
ageColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_COMMENT, "Age Column");
95+
columns.add(ageColumnData);
96+
final Map<String, String> salaryColumnData = new LinkedHashMap<>();
97+
salaryColumnData.put(
98+
ModuleDbSchemaXml.XML_ATTR_COLUMN_TYPE,
99+
DbSchemaXmlSourceDataUtil.COLUMN_TYPE_DECIMAL
100+
);
101+
salaryColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NAME, "salary");
102+
salaryColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_PADDING, "5");
103+
salaryColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_UNSIGNED, BOOLEAN_VALUE_TRUE);
104+
salaryColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NULLABLE, BOOLEAN_VALUE_FALSE);
105+
salaryColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_PRECISION, "10");
106+
salaryColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_SCALE, "2");
107+
salaryColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_DEFAULT, "0.0");
108+
salaryColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_COMMENT, "Salary Column");
109+
columns.add(salaryColumnData);
110+
final Map<String, String> dobColumnData = new LinkedHashMap<>();
111+
dobColumnData.put(
112+
ModuleDbSchemaXml.XML_ATTR_COLUMN_TYPE,
113+
DbSchemaXmlSourceDataUtil.COLUMN_TYPE_DATE
114+
);
115+
dobColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NAME, "dob");
116+
dobColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NULLABLE, BOOLEAN_VALUE_TRUE);
117+
dobColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_COMMENT, "Date Of The Birth Column");
118+
columns.add(dobColumnData);
119+
final Map<String, String> createdAtColumnData = new LinkedHashMap<>();
120+
createdAtColumnData.put(
121+
ModuleDbSchemaXml.XML_ATTR_COLUMN_TYPE,
122+
DbSchemaXmlSourceDataUtil.COLUMN_TYPE_TIMESTAMP
123+
);
124+
createdAtColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NAME, "created_at");
125+
createdAtColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NULLABLE, BOOLEAN_VALUE_FALSE);
126+
createdAtColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_ON_UPDATE, BOOLEAN_VALUE_FALSE);
127+
createdAtColumnData.put(
128+
ModuleDbSchemaXml.XML_ATTR_COLUMN_DEFAULT,
129+
CURRENT_TIMESTAMP_DEFAULT_VALUE
130+
);
131+
createdAtColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_COMMENT, "Created At Column");
132+
columns.add(createdAtColumnData);
133+
final Map<String, String> updatedAtColumnData = new LinkedHashMap<>();
134+
updatedAtColumnData.put(
135+
ModuleDbSchemaXml.XML_ATTR_COLUMN_TYPE,
136+
DbSchemaXmlSourceDataUtil.COLUMN_TYPE_TIMESTAMP
137+
);
138+
updatedAtColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NAME, "updated_at");
139+
updatedAtColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_NULLABLE, BOOLEAN_VALUE_FALSE);
140+
updatedAtColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_ON_UPDATE, BOOLEAN_VALUE_TRUE);
141+
updatedAtColumnData.put(
142+
ModuleDbSchemaXml.XML_ATTR_COLUMN_DEFAULT,
143+
CURRENT_TIMESTAMP_DEFAULT_VALUE
144+
);
145+
updatedAtColumnData.put(ModuleDbSchemaXml.XML_ATTR_COLUMN_COMMENT, "Updated At Column");
146+
columns.add(updatedAtColumnData);
147+
148+
return columns;
149+
}
150+
}

0 commit comments

Comments
 (0)