Skip to content

Commit 277132d

Browse files
Copilotnixel2007
andcommitted
Add unit tests for manager module functionality in ModuleReference
Added tests for: - isManagerModuleExpression() detection with null check - extractManagerModuleInfo() for Catalogs (Справочники) - extractManagerModuleInfo() for Documents (Документы) - extractManagerModuleInfo() for InformationRegisters (РегистрыСведений) - English syntax support (Catalogs.Nomenclature) - Non-manager module expressions returning false/empty Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com>
1 parent 5340761 commit 277132d

File tree

1 file changed

+129
-0
lines changed

1 file changed

+129
-0
lines changed

src/test/java/com/github/_1c_syntax/bsl/languageserver/utils/ModuleReferenceTest.java

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,133 @@ void testCustomAccessor() {
9393
assertThat(moduleName).isPresent();
9494
assertThat(moduleName.get()).isEqualTo("ТестовыйМодуль");
9595
}
96+
97+
@Test
98+
void testDetectManagerModuleExpression() {
99+
// Проверяем, что null возвращает false
100+
assertThat(ModuleReference.isManagerModuleExpression(null)).isFalse();
101+
}
102+
103+
@Test
104+
void testExtractManagerModuleInfoCatalogs() {
105+
var code = "Процедура Тест()\n" +
106+
" Результат = Справочники.Номенклатура.НайтиПоКоду(\"001\");\n" +
107+
"КонецПроцедуры";
108+
109+
var documentContext = TestUtils.getDocumentContext(code);
110+
var ast = documentContext.getAst();
111+
112+
var assignments = new ArrayList<BSLParser.AssignmentContext>();
113+
Trees.findAllRuleNodes(ast, BSLParser.RULE_assignment).forEach(node ->
114+
assignments.add((BSLParser.AssignmentContext) node)
115+
);
116+
117+
assertThat(assignments).hasSize(1);
118+
119+
var expression = assignments.get(0).expression();
120+
assertThat(ModuleReference.isManagerModuleExpression(expression)).isTrue();
121+
122+
var managerInfo = ModuleReference.extractManagerModuleInfo(expression);
123+
assertThat(managerInfo).isPresent();
124+
assertThat(managerInfo.get().managerType()).isEqualTo("Справочники");
125+
assertThat(managerInfo.get().objectName()).isEqualTo("Номенклатура");
126+
}
127+
128+
@Test
129+
void testExtractManagerModuleInfoDocuments() {
130+
var code = "Процедура Тест()\n" +
131+
" Результат = Документы.ПриходнаяНакладная.СоздатьДокумент();\n" +
132+
"КонецПроцедуры";
133+
134+
var documentContext = TestUtils.getDocumentContext(code);
135+
var ast = documentContext.getAst();
136+
137+
var assignments = new ArrayList<BSLParser.AssignmentContext>();
138+
Trees.findAllRuleNodes(ast, BSLParser.RULE_assignment).forEach(node ->
139+
assignments.add((BSLParser.AssignmentContext) node)
140+
);
141+
142+
assertThat(assignments).hasSize(1);
143+
144+
var expression = assignments.get(0).expression();
145+
assertThat(ModuleReference.isManagerModuleExpression(expression)).isTrue();
146+
147+
var managerInfo = ModuleReference.extractManagerModuleInfo(expression);
148+
assertThat(managerInfo).isPresent();
149+
assertThat(managerInfo.get().managerType()).isEqualTo("Документы");
150+
assertThat(managerInfo.get().objectName()).isEqualTo("ПриходнаяНакладная");
151+
}
152+
153+
@Test
154+
void testExtractManagerModuleInfoEnglishSyntax() {
155+
var code = "Procedure Test()\n" +
156+
" Result = Catalogs.Nomenclature.FindByCode(\"001\");\n" +
157+
"EndProcedure";
158+
159+
var documentContext = TestUtils.getDocumentContext(code);
160+
var ast = documentContext.getAst();
161+
162+
var assignments = new ArrayList<BSLParser.AssignmentContext>();
163+
Trees.findAllRuleNodes(ast, BSLParser.RULE_assignment).forEach(node ->
164+
assignments.add((BSLParser.AssignmentContext) node)
165+
);
166+
167+
assertThat(assignments).hasSize(1);
168+
169+
var expression = assignments.get(0).expression();
170+
assertThat(ModuleReference.isManagerModuleExpression(expression)).isTrue();
171+
172+
var managerInfo = ModuleReference.extractManagerModuleInfo(expression);
173+
assertThat(managerInfo).isPresent();
174+
assertThat(managerInfo.get().managerType()).isEqualTo("Catalogs");
175+
assertThat(managerInfo.get().objectName()).isEqualTo("Nomenclature");
176+
}
177+
178+
@Test
179+
void testExtractManagerModuleInfoInformationRegisters() {
180+
var code = "Процедура Тест()\n" +
181+
" Результат = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();\n" +
182+
"КонецПроцедуры";
183+
184+
var documentContext = TestUtils.getDocumentContext(code);
185+
var ast = documentContext.getAst();
186+
187+
var assignments = new ArrayList<BSLParser.AssignmentContext>();
188+
Trees.findAllRuleNodes(ast, BSLParser.RULE_assignment).forEach(node ->
189+
assignments.add((BSLParser.AssignmentContext) node)
190+
);
191+
192+
assertThat(assignments).hasSize(1);
193+
194+
var expression = assignments.get(0).expression();
195+
assertThat(ModuleReference.isManagerModuleExpression(expression)).isTrue();
196+
197+
var managerInfo = ModuleReference.extractManagerModuleInfo(expression);
198+
assertThat(managerInfo).isPresent();
199+
assertThat(managerInfo.get().managerType()).isEqualTo("РегистрыСведений");
200+
assertThat(managerInfo.get().objectName()).isEqualTo("КурсыВалют");
201+
}
202+
203+
@Test
204+
void testNonManagerModuleExpression() {
205+
var code = "Процедура Тест()\n" +
206+
" Результат = МояПеременная.Метод();\n" +
207+
"КонецПроцедуры";
208+
209+
var documentContext = TestUtils.getDocumentContext(code);
210+
var ast = documentContext.getAst();
211+
212+
var assignments = new ArrayList<BSLParser.AssignmentContext>();
213+
Trees.findAllRuleNodes(ast, BSLParser.RULE_assignment).forEach(node ->
214+
assignments.add((BSLParser.AssignmentContext) node)
215+
);
216+
217+
assertThat(assignments).hasSize(1);
218+
219+
var expression = assignments.get(0).expression();
220+
assertThat(ModuleReference.isManagerModuleExpression(expression)).isFalse();
221+
222+
var managerInfo = ModuleReference.extractManagerModuleInfo(expression);
223+
assertThat(managerInfo).isEmpty();
224+
}
96225
}

0 commit comments

Comments
 (0)