Skip to content

Commit

Permalink
update test to make upgrading possible
Browse files Browse the repository at this point in the history
  • Loading branch information
evanchooly committed Mar 4, 2025
1 parent fc586fb commit 3099ebb
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
11 changes: 7 additions & 4 deletions core/src/main/java/dev/morphia/query/Operations.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.StringJoiner;

import dev.morphia.Datastore;
import dev.morphia.annotations.internal.MorphiaInternal;
import dev.morphia.internal.PathTarget;
import dev.morphia.mapping.codec.pojo.EntityModel;
import dev.morphia.mapping.codec.pojo.PropertyModel;
Expand All @@ -16,13 +17,15 @@

/**
* @morphia.internal
* @hidden
*/
class Operations {
@MorphiaInternal
public class Operations {
private final Map<String, List<OperationTarget>> ops = new HashMap<>();
private final Datastore datastore;
private final EntityModel entityModel;

Operations(Datastore datastore, EntityModel model) {
public Operations(Datastore datastore, EntityModel model) {
this.datastore = datastore;
this.entityModel = model;
}
Expand Down Expand Up @@ -57,14 +60,14 @@ protected void versionUpdate() {
* @param operator the operator
* @param value the value
*/
void add(String operator, OperationTarget value) {
public void add(String operator, OperationTarget value) {
ops.computeIfAbsent(operator, o -> new ArrayList<>()).add(value);
}

/**
* @return the Document form of this instance
*/
Document toDocument() {
public Document toDocument() {
versionUpdate();

Document document = new Document();
Expand Down
19 changes: 18 additions & 1 deletion core/src/test/java/dev/morphia/test/TestUpdateOperations.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import com.mongodb.lang.Nullable;

import dev.morphia.Datastore;
import dev.morphia.DatastoreImpl;
import dev.morphia.DeleteOptions;
import dev.morphia.ModifyOptions;
import dev.morphia.UpdateOptions;
Expand All @@ -45,15 +46,18 @@
import dev.morphia.annotations.Indexed;
import dev.morphia.annotations.PreLoad;
import dev.morphia.internal.PathTarget;
import dev.morphia.mapping.Mapper;
import dev.morphia.mapping.experimental.MorphiaReference;
import dev.morphia.query.FindOptions;
import dev.morphia.query.MorphiaCursor;
import dev.morphia.query.MorphiaQuery;
import dev.morphia.query.Operations;
import dev.morphia.query.Query;
import dev.morphia.query.Sort;
import dev.morphia.query.Update;
import dev.morphia.query.ValidationException;
import dev.morphia.query.filters.Filters;
import dev.morphia.query.internal.DatastoreAware;
import dev.morphia.query.updates.CurrentDateOperator.TypeSpecification;
import dev.morphia.query.updates.UpdateOperator;
import dev.morphia.test.models.Book;
Expand Down Expand Up @@ -1543,12 +1547,25 @@ public TranslationParams(String updateName, String mappedName, UpdateOperator op
public void testPathTranslations(TranslationParams params) {
Update<Hotel> update = getDs().find(Hotel.class)
.update(params.operator);
Document document = update.toDocument();
Document document = toDocument(Hotel.class, params.operator);
Codec<Document> documentCodec = getDs().getCodecRegistry().get(Document.class);
var json = document.toJson(JSON_WRITER_SETTINGS, documentCodec);

String format = format("\"%s\"", params.mappedName);
assertTrue(json.contains(format), format("failed to find '%s' in:%n%s", format, json));
}

private Document toDocument(Class type, UpdateOperator update) {
DatastoreImpl ds = getDs();
Mapper mapper = ds.getMapper();
final Operations operations = new Operations(ds, mapper.getEntityModel(type));

PathTarget pathTarget = new PathTarget(mapper, mapper.getEntityModel(type), update.field(), false);
if (update instanceof DatastoreAware) {
((DatastoreAware) update).setDatastore(ds);
}
operations.add(update.operator(), update.toTarget(pathTarget));
return operations.toDocument();
}

}

0 comments on commit 3099ebb

Please sign in to comment.