Skip to content

Commit 0275d78

Browse files
committed
ISSUE-659 # adjust iteration numbers for those csvSource with headers
1 parent eebc8bf commit 0275d78

File tree

6 files changed

+31
-38
lines changed

6 files changed

+31
-38
lines changed

core/src/main/java/org/jsmart/zerocode/core/domain/Parameterized.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.nio.file.Files;
1212
import java.nio.file.Path;
1313
import java.nio.file.Paths;
14+
import java.util.Arrays;
1415
import java.util.Collections;
1516
import java.util.List;
1617
import java.util.Optional;

core/src/main/java/org/jsmart/zerocode/core/engine/preprocessor/ZeroCodeParameterizedProcessorImpl.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import java.util.List;
1616
import java.util.Map;
1717
import java.util.stream.IntStream;
18-
import java.util.stream.Stream;
1918

2019
import static org.jsmart.zerocode.core.constants.ZerocodeConstants.DSL_FORMAT;
2120
import static org.jsmart.zerocode.core.di.provider.CsvParserProvider.LINE_SEPARATOR;
@@ -136,9 +135,8 @@ private ScenarioSpec resolveParamsCsv(ScenarioSpec scenario, int paramIndex) {
136135

137136
private String[] retrieveCsvHeaders(String csvHeaderLine) {
138137
String[] parsedHeaderLine = csvParser.parseLine(csvHeaderLine + LINE_SEPARATOR);
139-
Stream<String> headers = Arrays.stream(parsedHeaderLine);
140-
boolean hasHeader = parsedHeaderLine.length > 0 && headers.allMatch(s -> s.matches("^\\|.*\\|$"));
141-
return !hasHeader ? null : headers.map(s -> s.substring(1,s.length()-1)).toArray(String[]::new);
138+
boolean hasHeader = parsedHeaderLine.length > 0 && Arrays.stream(parsedHeaderLine).allMatch(s -> s.matches("^\\|.*\\|$"));
139+
return !hasHeader ? null : Arrays.stream(parsedHeaderLine).map(s -> s.substring(1,s.length()-1)).toArray(String[]::new);
142140
}
143141

144142
private Map<String, Object> resolveCsvLine(String csvLine, String[] headers) {

core/src/main/java/org/jsmart/zerocode/core/runner/ZeroCodeMultiStepsScenarioRunnerImpl.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,13 @@
1010
import static java.util.Optional.ofNullable;
1111
import static org.apache.commons.collections4.CollectionUtils.isEmpty;
1212
import static org.jsmart.zerocode.core.constants.ZerocodeConstants.KAFKA_TOPIC;
13+
14+
import org.jsmart.zerocode.core.domain.Parameterized;
1315
import org.jsmart.zerocode.core.domain.ScenarioSpec;
1416
import org.jsmart.zerocode.core.domain.Step;
1517
import org.jsmart.zerocode.core.domain.builders.ZeroCodeExecReportBuilder;
18+
19+
import static org.jsmart.zerocode.core.di.provider.CsvParserProvider.LINE_SEPARATOR;
1620
import static org.jsmart.zerocode.core.domain.builders.ZeroCodeExecReportBuilder.newInstance;
1721
import org.jsmart.zerocode.core.domain.builders.ZeroCodeIoWriteBuilder;
1822
import org.jsmart.zerocode.core.engine.assertion.FieldAssertionMatcher;
@@ -30,18 +34,14 @@
3034
import org.jsmart.zerocode.core.utils.ApiTypeUtils;
3135
import static org.jsmart.zerocode.core.utils.ApiTypeUtils.apiType;
3236
import static org.jsmart.zerocode.core.utils.RunnerUtils.getFullyQualifiedUrl;
33-
import static org.jsmart.zerocode.core.utils.RunnerUtils.getParameterSize;
3437
import static org.jsmart.zerocode.core.utils.SmartUtils.prettyPrintJson;
3538
import org.junit.runner.Description;
3639
import org.junit.runner.notification.RunNotifier;
3740
import org.slf4j.Logger;
3841
import static org.slf4j.LoggerFactory.getLogger;
3942

4043
import java.time.LocalDateTime;
41-
import java.util.ArrayList;
42-
import java.util.List;
43-
import java.util.Objects;
44-
import java.util.Optional;
44+
import java.util.*;
4545
import java.util.function.BiConsumer;
4646

4747
@Singleton
@@ -551,6 +551,24 @@ private int deriveScenarioLoopTimes(ScenarioSpec scenario) {
551551
return scenarioLoopTimes;
552552
}
553553

554+
private int getParameterSize(Parameterized parameterized) {
555+
if (parameterized == null) {
556+
return 0;
557+
}
558+
559+
List<Object> valueSource = parameterized.getValueSource();
560+
List<String> csvSource = parameterized.getCsvSource();
561+
int csvSourceSize = 0;
562+
563+
if (csvSource != null && !csvSource.isEmpty()){
564+
String[] parsedHeaderLine = csvParser.parseLine(csvSource.get(0) + LINE_SEPARATOR);
565+
boolean hasHeader = parsedHeaderLine.length > 0 && Arrays.stream(parsedHeaderLine).allMatch(s -> s.matches("^\\|.*\\|$"));
566+
csvSourceSize = hasHeader ? csvSource.size() -1 : csvSource.size();
567+
}
568+
569+
return valueSource != null ? valueSource.size() : csvSourceSize;
570+
}
571+
554572
private List<FieldAssertionMatcher> compareStepResults(Step thisStep, String actualResult, String expectedResult, String resolvedScenarioState) {
555573
List<FieldAssertionMatcher> failureResults = new ArrayList<>();
556574

core/src/main/java/org/jsmart/zerocode/core/utils/RunnerUtils.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -120,18 +120,6 @@ public static int loopCount(Step thisStep) {
120120
return stepLoopTimes > 0 ? stepLoopTimes: MIN_COUNT;
121121
}
122122

123-
public static int getParameterSize(Parameterized parameterized) {
124-
if (parameterized == null) {
125-
return 0;
126-
}
127-
128-
List<Object> valueSource = parameterized.getValueSource();
129-
List<String> csvSource = parameterized.getCsvSource();
130-
131-
return valueSource != null ? valueSource.size() :
132-
(csvSource != null ? csvSource.size() : 0);
133-
}
134-
135123
public static void handleTestCompleted(RunListener reportListener, Logger logger) {
136124
if (CHARTS_AND_CSV.equals(getProperty(ZEROCODE_JUNIT))) {
137125
/**

core/src/test/java/org/jsmart/zerocode/parameterized/ParameterisedCsvDemoTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,9 @@ public class ParameterisedCsvDemoTest {
1414
@JsonTestCase("integration_test_files/parameterized/parameterized_sample_csv_test.json")
1515
public void testParameterizedCsv() throws Exception {
1616
}
17+
18+
@Test
19+
@JsonTestCase("integration_test_files/parameterized/parameterized_sample_csv_with_headers_test.json")
20+
public void testParameterizedCsvWithHeaders() throws Exception {
21+
}
1722
}

core/src/test/java/org/jsmart/zerocode/parameterized/ParameterisedCsvHeadersDemoTest.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)