Skip to content

Commit

Permalink
Merge branch 'main' into configure-submission-locking
Browse files Browse the repository at this point in the history
  • Loading branch information
spokenbird authored Nov 27, 2023
2 parents fdfd1a2 + e09f71a commit 2fd4375
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/publish-snapshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
server-id: github
settings-path: ${{ github.workspace }}
- name: Create jar and publish to Sonatype
uses: gradle/gradle-build-action@v2.9.0
uses: gradle/gradle-build-action@v2.10.0
with:
arguments: jar publish
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ jobs:
echo "signing.gnupg.passphrase=${{ secrets.PLATFORM_ROBOT_GPG_PASSPHRASE }}" >> ~/.gradle/gradle.properties
echo "no-tty" >> ~/.gnupg/gpg.conf >> ~/.gradle/gradle.properties
- name: Publish package
uses: gradle/gradle-build-action@v2.9.0
uses: gradle/gradle-build-action@v2.10.0
with:
arguments: publishToSonatype closeAndReleaseSonatypeStagingRepository
env:
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ dependencies {

// This dependency is used internally, and not exposed to consumers on their own compile classpath.
api 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.integration:spring-integration-ws:6.1.4'
implementation 'org.springframework.integration:spring-integration-ws:6.2.0'
implementation 'com.google.guava:guava:32.1.3-jre'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
Expand Down Expand Up @@ -97,7 +97,7 @@ dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'org.jsoup:jsoup:1.16.2'
testImplementation 'org.jsoup:jsoup:1.17.1'
testImplementation 'org.mockito:mockito-inline:5.2.0'
// bonigarcia seems to need this version of client5, as of version 5.3.2.
// aws-java-sdk-s3 uses version httpclient:4.5.13, so if we see any differences in testing going forward
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ public class FlowsConfigurationFactory implements FactoryBean<List<FlowConfigura
/**
* Takes in the flow configuration yaml file from the given form-flow.path application properties and parses it into a list of
* FlowConfiguration objects.
*
* Disabled flows will be excluded, detected using the form-flow.disabled-flows application property.
* @return list of FlowConfiguration objects.
* @throws IOException if the flow configuration file can't be found.
Expand Down
31 changes: 17 additions & 14 deletions src/main/java/formflow/library/pdf/DatabaseFieldPreparer.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,23 @@ public class DatabaseFieldPreparer implements DefaultSubmissionFieldPreparer {
public Map<String, SubmissionField> prepareSubmissionFields(Submission submission, PdfMap pdfMap) {
Map<String, SubmissionField> databaseFields = new HashMap<>();
Map<String, Object> dbFields = pdfMap.getDbFields();

dbFields.forEach((fieldName, value) -> {
switch (fieldName) {
case "submittedAt" ->
databaseFields.put(fieldName, new DatabaseField(fieldName, formatDateWithNoTime(submission.getSubmittedAt())));
case "submissionId" -> databaseFields.put(fieldName, new DatabaseField(fieldName, submission.getId().toString()));
case "createdAt" ->
databaseFields.put(fieldName, new DatabaseField(fieldName, formatDateWithNoTime(submission.getCreatedAt())));
case "updatedAt" ->
databaseFields.put(fieldName, new DatabaseField(fieldName, formatDateWithNoTime(submission.getUpdatedAt())));
case "flow" -> databaseFields.put(fieldName, new DatabaseField(fieldName, submission.getFlow()));
default -> log.error("Unable to map unknown database field: {}", fieldName);
}
});

if (dbFields != null) {
dbFields.forEach((fieldName, value) -> {
switch (fieldName) {
case "submittedAt" ->
databaseFields.put(fieldName, new DatabaseField(fieldName, formatDateWithNoTime(submission.getSubmittedAt())));
case "submissionId" -> databaseFields.put(fieldName, new DatabaseField(fieldName, submission.getId().toString()));
case "createdAt" ->
databaseFields.put(fieldName, new DatabaseField(fieldName, formatDateWithNoTime(submission.getCreatedAt())));
case "updatedAt" ->
databaseFields.put(fieldName, new DatabaseField(fieldName, formatDateWithNoTime(submission.getUpdatedAt())));
case "flow" -> databaseFields.put(fieldName, new DatabaseField(fieldName, submission.getFlow()));
default -> log.error("Unable to map unknown database field: {}", fieldName);
}
});
}

return databaseFields;
}

Expand Down
28 changes: 28 additions & 0 deletions src/test/java/formflow/library/pdf/DatabaseFieldPreparerTest.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package formflow.library.pdf;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;

import formflow.library.data.Submission;
import java.util.List;
Expand Down Expand Up @@ -59,4 +60,31 @@ void shouldNotCreateDbFieldsForItemsNotPresentInPdfMap() {
Map.entry("updatedAt", new DatabaseField("updatedAt", "09/15/2020"))
);
}

@Test
void DbFieldsShouldNotBeRequired_shouldNotThrowErrorIfDbFieldsIsNull() {
DatabaseFieldPreparer dataBaseFieldPreparer = new DatabaseFieldPreparer();
PdfMap pdfMap = new PdfMap();
pdfMap.setFlow("flow1");
// Assert Does Not throw for a completely missing dbFields Map
pdfMapConfiguration = new PdfMapConfiguration(List.of(pdfMap));
assertDoesNotThrow(() -> dataBaseFieldPreparer.prepareSubmissionFields(submission,
pdfMapConfiguration.getPdfMap(submission.getFlow())));
assertThat(dataBaseFieldPreparer.prepareSubmissionFields(submission,
pdfMapConfiguration.getPdfMap(submission.getFlow()))).isEmpty();

// Assert does not throw for a null dbFields Map value
pdfMap.setDbFields(null);
assertDoesNotThrow(() -> dataBaseFieldPreparer.prepareSubmissionFields(submission,
pdfMapConfiguration.getPdfMap(submission.getFlow())));
assertThat(dataBaseFieldPreparer.prepareSubmissionFields(submission,
pdfMapConfiguration.getPdfMap(submission.getFlow()))).isEmpty();

// Assert does not throw for an empty dbFields Map value
pdfMap.setDbFields(Map.of());
assertDoesNotThrow(() -> dataBaseFieldPreparer.prepareSubmissionFields(submission,
pdfMapConfiguration.getPdfMap(submission.getFlow())));
assertThat(dataBaseFieldPreparer.prepareSubmissionFields(submission,
pdfMapConfiguration.getPdfMap(submission.getFlow()))).isEmpty();
}
}

0 comments on commit 2fd4375

Please sign in to comment.