Skip to content

Commit

Permalink
#237 - PUT/sites/{siteId}/classifications/{classificationId} "'name' …
Browse files Browse the repository at this point in the history
…is already used
  • Loading branch information
mfriesen committed Jul 14, 2024
1 parent dec1d1e commit 29b642d
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 15 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ repositories { mavenCentral() }

allprojects {

version = '1.15.0'
version = '1.15.1'

ext.awsCognitoVersion = '1.5.4'
group = 'com.formkiq.stacks'
Expand Down
2 changes: 1 addition & 1 deletion docs/openapi/openapi-iam.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
- OAuth(JWT)
- AWS IAM
- API Key
version: 1.15.0
version: 1.15.1
tags:
- name: documents
description: API for the add, updating and fetching of documents
Expand Down
2 changes: 1 addition & 1 deletion docs/openapi/openapi-jwt.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
- OAuth(JWT)
- AWS IAM
- API Key
version: 1.15.0
version: 1.15.1
tags:
- name: documents
description: API for the add, updating and fetching of documents
Expand Down
2 changes: 1 addition & 1 deletion docs/openapi/openapi-key.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
- OAuth(JWT)
- AWS IAM
- API Key
version: 1.15.0
version: 1.15.1
tags:
- name: documents
description: API for the add, updating and fetching of documents
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ public ClassificationRecord setClassification(final String siteId, final String
throws ValidationException {

Collection<ValidationError> errors = validate(siteId, name, schemaJson, schema);
errors.addAll(validateClassification(siteId, name));
errors.addAll(validateClassification(siteId, classificationId, name));

if (!errors.isEmpty()) {
throw new ValidationException(errors);
Expand Down Expand Up @@ -284,11 +284,13 @@ public Schema mergeSchemaIntoClassification(final Schema from, final Schema to)
* Validate Classification.
*
* @param siteId {@link String}
* @param classificationId {@link String}
* @param name {@link String}
* @return Collection {@link ValidationError}
*/
private Collection<ValidationError> validateClassification(final String siteId,
final String name) {
final String classificationId, final String name) {

ClassificationRecord r = new ClassificationRecord().setName(name);
AttributeValue pk = r.fromS(r.pkGsi1(siteId));
AttributeValue sk = r.fromS(r.skGsi1());
Expand All @@ -297,7 +299,13 @@ private Collection<ValidationError> validateClassification(final String siteId,
QueryConfig config = new QueryConfig().indexName(GSI1);
QueryResponse response = this.db.queryBeginsWith(config, pk, sk, null, 1);

if (!response.items().isEmpty()) {
List<Map<String, AttributeValue>> items = response.items();
if (!isEmpty(classificationId)) {
items =
items.stream().filter(i -> !classificationId.equals(i.get("documentId").s())).toList();
}

if (!items.isEmpty()) {
errors = List.of(new ValidationErrorImpl().key("name").error("'name' is already used"));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,12 @@ public abstract class AbstractApiClientRequestTest {

/** 500 Milliseconds. */
private static final long SLEEP = 500L;
// /** Time out. */
// private static final int TIMEOUT = 30000;
/** Time out. */
private static final int TIMEOUT = 30000;

/** {@link ApiClient}. */
protected ApiClient client = Configuration.getDefaultApiClient()
/* .setReadTimeout(TIMEOUT) */.setBasePath(server.getBasePath());
protected ApiClient client =
Configuration.getDefaultApiClient().setReadTimeout(TIMEOUT).setBasePath(server.getBasePath());
/** {@link DocumentActionsApi}. */
protected DocumentActionsApi documentActionsApi = new DocumentActionsApi(this.client);
/** {@link DocumentsApi}. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.UUID;

import static com.formkiq.aws.dynamodb.objects.Objects.notNull;
Expand Down Expand Up @@ -197,6 +198,21 @@ public void testAddClassifications02() throws ApiException {
assertEquals("{\"errors\":[{\"key\":\"name\",\"error\":\"'name' is already used\"}]}",
e.getResponseBody());
}

// given
SetClassificationRequest sreq = new SetClassificationRequest()
.classification(new AddClassification().name("test").attributes(attr0));

// when
try {
this.schemasApi.setClassification(siteId, UUID.randomUUID().toString(), sreq);
fail();
} catch (ApiException e) {
// then
assertEquals(ApiResponseStatus.SC_BAD_REQUEST.getStatusCode(), e.getCode());
assertEquals("{\"errors\":[{\"key\":\"name\",\"error\":\"'name' is already used\"}]}",
e.getResponseBody());
}
}
}

Expand Down Expand Up @@ -352,7 +368,7 @@ public void testPutClassifications01() throws ApiException {
// given
attr0 = createSchemaAttributes(null, List.of("documentType"));
SetClassificationRequest setReq = new SetClassificationRequest()
.classification(new AddClassification().name("doc1").attributes(attr0));
.classification(new AddClassification().name("doc").attributes(attr0));

// when
this.schemasApi.setClassification(siteId, classificationId, setReq);
Expand All @@ -364,7 +380,7 @@ public void testPutClassifications01() throws ApiException {
assertNotNull(classification);
assertNotNull(classification.getAttributes());

assertEquals("doc1", classification.getName());
assertEquals("doc", classification.getName());
required = notNull(classification.getAttributes().getRequired());
assertEquals(0, required.size());

Expand Down Expand Up @@ -726,14 +742,14 @@ void testAddDocument08() throws ApiException {
addAttribute(siteId, "invoiceNumber");

SchemaAttributes attr0 = createSchemaAttributes(List.of("invoiceNumber"), null);
attr0.getRequired().get(0).addAllowedValuesItem("123");
Objects.requireNonNull(attr0.getRequired()).get(0).addAllowedValuesItem("123");

SetSitesSchemaRequest setSiteSchema =
new SetSitesSchemaRequest().name("test").attributes(attr0);
this.schemasApi.setSitesSchema(siteId, setSiteSchema);

SchemaAttributes attr1 = createSchemaAttributes(List.of("invoiceNumber"), null);
attr1.getRequired().get(0).addAllowedValuesItem("INV-001");
Objects.requireNonNull(attr1.getRequired()).get(0).addAllowedValuesItem("INV-001");
String classificationId = addClassification(siteId, attr1);

AddDocumentAttribute attribute = createStringAttribute("invoiceNumber", "INV-001");
Expand Down

0 comments on commit 29b642d

Please sign in to comment.