Verify Ontology edits(验证本体编辑(Verify Ontology edits))¶
You can use the verifyOntologyEditFunction() API to verify edits performed by your function. You need to import it from "@foundry/functions-testing-lib". This allows you to create unit tests around the workflows listed below.
Verify object creation¶
You can use the .createsObjects method to verify an object creation. Here's an example:
import { MyFunctions } from ".."
import { Objects , ExampleDataAirport } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("create airport", () => {
verifyOntologyEditFunction(() => myFunctions.createAirport("airportCode", "airportDisplayName"))
.createsObject(
{
objectType: ExampleDataAirport,
properties: {
airport: "airportCode",
displayAirportName: "airportDisplayName",
},
});
});
});
This can be used to test the following function:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataAirport } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataAirport)
@OntologyEditFunction()
public createAirport(airport: string, displayName: string): void {
const newAirport = Objects.create().exampleDataAirport(airport);
newAirport.displayAirportName = displayName;
}
}
Verify edits on a newly created object¶
You can verify edits that are created involving a newly created object. For example, you may want to create a new ExampleDataFlight objects and verify that the link is created to the new-flight-delay-0. Here's an example:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with single created object", () => {
const flight = Objects.create().exampleDataFlight("flightTest");
verifyOntologyEditFunction(() => myFunctions.createAndLinkDelays(flight, 1))
.createsObject({
objectType: ExampleFlightDelayEvent,
properties: {
eventId: "new-flight-delay-0",
},
})
.addsLink(edits => ({
link: flight.flightDelayEvent,
linkedObject: edits.createdObjects.byObjectType(ExampleFlightDelayEvent)[0],
}))
});
});
This can be used to test the following function:
import { Function, Integer, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight, ExampleFlightDelayEvent )
@OntologyEditFunction()
public createAndLinkDelays(flight: ExampleDataFlight, numDelay: Integer): void {
for (let n = 0; n < numDelay; n++) {
const delay = Objects.create().exampleFlightDelayEvent(`new-flight-delay-${n}`);
flight.flightDelayEvent.add(delay);
}
}
}
Verify object property edits¶
You can verify edits to the property using .modifiesObjects. Here's an example:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("modifies aircraft of the flight", () => {
const flight = Objects.create().exampleDataFlight("NY -> LA");
const oldAircraft = Objects.create().exampleDataAircraft("N11111");
flight.aircraft.set(oldAircraft);
const newAircraft = Objects.create().exampleDataAircraft("A00000");
verifyOntologyEditFunction(() => myFunctions.assignAircraftToFlight(flight, newAircraft))
.modifiesObject(
{
object: flight,
properties: {
tailNumber: "A00000"
}
})
});
});
This can be used to test the following function:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight)
@OntologyEditFunction()
public assignAircraftToFlight(flight: ExampleDataFlight, aircraft: ExampleDataAircraft): void {
flight.aircraft.clear();
aircraft.flight.set(flight);
flight.tailNumber = aircraft.tailNumber;
}
}
Verify no other edits to an object¶
You can ensure there are no other edits using the optional .hasNoMoreEdits(). This means that only the specified edits are allowed, and the verification will fail if other edits are detected. Here's an example:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with linked object", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
const delay = Objects.create().exampleFlightDelayEvent("new-flight-delay")
verifyOntologyEditFunction(() => myFunctions.linkDelays(flight, delay))
.addsLink({link: flight.flightDelayEvent, linkedObject: delay })
.hasNoMoreEdits();
});
});
When using .hasNoMoreEdits(), you can ignore specific kinds of edits that take place. You do this by passing an object with some or all of the following:
ignoreExtraCreatedObjects: trueignoreExtraModifiedObjects: trueignoreExtraDeletedObjects: trueignoreExtraLinkedObjects: trueignoreExtraUnlinkedObjects: true
Verify link creation to an object¶
You can verify link creation on an object using .addsLink. Here's an example:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with linked object", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
const delay = Objects.create().exampleFlightDelayEvent("new-flight-delay")
verifyOntologyEditFunction(() => myFunctions.linkDelays(flight, delay))
.addsLink({link: flight.flightDelayEvent, linkedObject: delay })
.hasNoMoreEdits();
});
});
This test is equivalent to testing for the same link going in the opposite direction:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with linked object reverse", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
const delay = Objects.create().exampleFlightDelayEvent("new-flight-delay")
verifyOntologyEditFunction(() => myFunctions.linkDelays(flight, delay))
.addsLink({link: delay.flight, linkedObject: flight })
.hasNoMoreEdits();
});
});
This can be used to test the following function:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight, ExampleFlightDelayEvent )
@OntologyEditFunction()
public linkDelays(flight: ExampleDataFlight, delay: ExampleFlightDelayEvent): void {
flight.flightDelayEvent.add(delay);
}
}
Verify link removal from an object¶
You can verify link removal from an object using .removesLink. Here's an example:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("test link removal", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
const delay = Objects.create().exampleFlightDelayEvent("new-flight-delay")
flight.flightDelayEvent.add(delay);
verifyOntologyEditFunction(() => myFunctions.removeAllDelays(flight))
.removesLink({link: flight.flightDelayEvent, unlinkedObject: delay })
.hasNoMoreEdits();
});
});
This can be used to test the following function:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight, ExampleFlightDelayEvent)
@OntologyEditFunction()
public removeAllDelays(flight: ExampleDataFlight): void {
flight.flightDelayEvent.clear();
}
}
Verify deleting an object¶
You can verify deleting an object using .deletesObject. Here's an example:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("test object deletion", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
verifyOntologyEditFunction(() => myFunctions.deleteFlight(flight))
.deletesObject(flight)
.hasNoMoreEdits();
});
});
This can be used to test the following function:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight)
@OntologyEditFunction()
public deleteFlight(flight: ExampleDataFlight): void {
flight.delete();
}
}
Verify multiple objects were created¶
You can use the .createsObjects method and pass in a list to create multiple objects to test on. Here's an example:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with many created objects", () => {
const flight = Objects.create().exampleDataFlight("flightTest");
verifyOntologyEditFunction(() => myFunctions.createAndLinkDelays(flight, 3))
.createsObjects(
[0, 1, 2].map(i => ({
objectType: ExampleFlightDelayEvent,
properties: {
eventId: "new-flight-delay-" + i,
},
})),
)
.addsLinks(edits =>
edits.createdObjects.byObjectType(ExampleFlightDelayEvent).map(event => ({
link: flight.flightDelayEvent,
linkedObject: event,
})),
)
.hasNoMoreEdits();
});
});
This can be used to test the following function:
import { Function, Integer, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight, ExampleFlightDelayEvent )
@OntologyEditFunction()
public createAndLinkDelays(flight: ExampleDataFlight, numDelay: Integer): void {
for (let n = 0; n < numDelay; n++) {
const delay = Objects.create().exampleFlightDelayEvent(`new-flight-delay-${n}`);
flight.flightDelayEvent.add(delay);
}
}
}
Asynchronous ontology edits¶
You can verify asynchronous ontology edits as follows:
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
test("test async edit function", async () => {
const obj = Objects.create().objectWithAllPropertyTypes(1);
(await verifyOntologyEditFunction(() => myFunctions.setDateAndTimestampToNow(obj))).modifiesObject({
object: obj,
properties: {
timestampProperty: makeTimestamp(),
},
});
});
Multiple verifications¶
As we have seen in the examples above, we can chain verifications. The following pattern illustrates this:
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
import { Objects, ExampleDataObject } from "@foundry/ontology-api";
test("multiple action edit", () => {
verifyOntologyEditFunction(() => myFunctions.multistageEdits("objectId", "objectName"))
.createsObject({...})
.modifiesObjects({...})
.addsLinks({...})
.removesLinks({...})
.deletesObject(...)
.hasNoMoreEdits();
});
中文翻译¶
验证本体编辑(Verify Ontology edits)¶
您可以使用 verifyOntologyEditFunction() API 来验证函数执行的编辑操作。需要从 "@foundry/functions-testing-lib" 中导入该 API。这使您能够针对以下列出的工作流创建单元测试。
验证对象创建(Verify object creation)¶
您可以使用 .createsObjects 方法来验证对象创建。示例如下:
import { MyFunctions } from ".."
import { Objects , ExampleDataAirport } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("create airport", () => {
verifyOntologyEditFunction(() => myFunctions.createAirport("airportCode", "airportDisplayName"))
.createsObject(
{
objectType: ExampleDataAirport,
properties: {
airport: "airportCode",
displayAirportName: "airportDisplayName",
},
});
});
});
此代码可用于测试以下函数:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataAirport } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataAirport)
@OntologyEditFunction()
public createAirport(airport: string, displayName: string): void {
const newAirport = Objects.create().exampleDataAirport(airport);
newAirport.displayAirportName = displayName;
}
}
验证对新创建对象的编辑(Verify edits on a newly created object)¶
您可以验证涉及新创建对象的编辑。例如,您可能希望创建一个新的 ExampleDataFlight 对象,并验证是否已创建指向 new-flight-delay-0 的链接。示例如下:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with single created object", () => {
const flight = Objects.create().exampleDataFlight("flightTest");
verifyOntologyEditFunction(() => myFunctions.createAndLinkDelays(flight, 1))
.createsObject({
objectType: ExampleFlightDelayEvent,
properties: {
eventId: "new-flight-delay-0",
},
})
.addsLink(edits => ({
link: flight.flightDelayEvent,
linkedObject: edits.createdObjects.byObjectType(ExampleFlightDelayEvent)[0],
}))
});
});
此代码可用于测试以下函数:
import { Function, Integer, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight, ExampleFlightDelayEvent )
@OntologyEditFunction()
public createAndLinkDelays(flight: ExampleDataFlight, numDelay: Integer): void {
for (let n = 0; n < numDelay; n++) {
const delay = Objects.create().exampleFlightDelayEvent(`new-flight-delay-${n}`);
flight.flightDelayEvent.add(delay);
}
}
}
验证对象属性编辑(Verify object property edits)¶
您可以使用 .modifiesObjects 来验证对属性的编辑。示例如下:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("modifies aircraft of the flight", () => {
const flight = Objects.create().exampleDataFlight("NY -> LA");
const oldAircraft = Objects.create().exampleDataAircraft("N11111");
flight.aircraft.set(oldAircraft);
const newAircraft = Objects.create().exampleDataAircraft("A00000");
verifyOntologyEditFunction(() => myFunctions.assignAircraftToFlight(flight, newAircraft))
.modifiesObject(
{
object: flight,
properties: {
tailNumber: "A00000"
}
})
});
});
此代码可用于测试以下函数:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight)
@OntologyEditFunction()
public assignAircraftToFlight(flight: ExampleDataFlight, aircraft: ExampleDataAircraft): void {
flight.aircraft.clear();
aircraft.flight.set(flight);
flight.tailNumber = aircraft.tailNumber;
}
}
验证对象无其他编辑(Verify no other edits to an object)¶
您可以使用可选的 .hasNoMoreEdits() 来确保没有其他编辑。这意味着只允许指定的编辑,如果检测到其他编辑,验证将失败。示例如下:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with linked object", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
const delay = Objects.create().exampleFlightDelayEvent("new-flight-delay")
verifyOntologyEditFunction(() => myFunctions.linkDelays(flight, delay))
.addsLink({link: flight.flightDelayEvent, linkedObject: delay })
.hasNoMoreEdits();
});
});
使用 .hasNoMoreEdits() 时,您可以忽略发生的特定类型的编辑。通过传递一个包含以下部分或全部属性的对象来实现:
ignoreExtraCreatedObjects: trueignoreExtraModifiedObjects: trueignoreExtraDeletedObjects: trueignoreExtraLinkedObjects: trueignoreExtraUnlinkedObjects: true
验证对象的链接创建(Verify link creation to an object)¶
您可以使用 .addsLink 来验证对象上的链接创建。示例如下:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with linked object", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
const delay = Objects.create().exampleFlightDelayEvent("new-flight-delay")
verifyOntologyEditFunction(() => myFunctions.linkDelays(flight, delay))
.addsLink({link: flight.flightDelayEvent, linkedObject: delay })
.hasNoMoreEdits();
});
});
此测试等同于测试反向的相同链接:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with linked object reverse", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
const delay = Objects.create().exampleFlightDelayEvent("new-flight-delay")
verifyOntologyEditFunction(() => myFunctions.linkDelays(flight, delay))
.addsLink({link: delay.flight, linkedObject: flight })
.hasNoMoreEdits();
});
});
此代码可用于测试以下函数:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight, ExampleFlightDelayEvent )
@OntologyEditFunction()
public linkDelays(flight: ExampleDataFlight, delay: ExampleFlightDelayEvent): void {
flight.flightDelayEvent.add(delay);
}
}
验证对象的链接移除(Verify link removal from an object)¶
您可以使用 .removesLink 来验证对象上的链接移除。示例如下:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("test link removal", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
const delay = Objects.create().exampleFlightDelayEvent("new-flight-delay")
flight.flightDelayEvent.add(delay);
verifyOntologyEditFunction(() => myFunctions.removeAllDelays(flight))
.removesLink({link: flight.flightDelayEvent, unlinkedObject: delay })
.hasNoMoreEdits();
});
});
此代码可用于测试以下函数:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight, ExampleFlightDelayEvent)
@OntologyEditFunction()
public removeAllDelays(flight: ExampleDataFlight): void {
flight.flightDelayEvent.clear();
}
}
验证删除对象(Verify deleting an object)¶
您可以使用 .deletesObject 来验证删除对象。示例如下:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("test object deletion", () => {
const flight = Objects.create().exampleDataFlight("flightAnotherTest");
verifyOntologyEditFunction(() => myFunctions.deleteFlight(flight))
.deletesObject(flight)
.hasNoMoreEdits();
});
});
此代码可用于测试以下函数:
import { Function, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight)
@OntologyEditFunction()
public deleteFlight(flight: ExampleDataFlight): void {
flight.delete();
}
}
验证创建了多个对象(Verify multiple objects were created)¶
您可以使用 .createsObjects 方法并传入一个列表来创建多个对象进行测试。示例如下:
import { MyFunctions } from ".."
import { Objects , ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
describe("example test suite", () => {
const myFunctions = new MyFunctions();
test("single key with many created objects", () => {
const flight = Objects.create().exampleDataFlight("flightTest");
verifyOntologyEditFunction(() => myFunctions.createAndLinkDelays(flight, 3))
.createsObjects(
[0, 1, 2].map(i => ({
objectType: ExampleFlightDelayEvent,
properties: {
eventId: "new-flight-delay-" + i,
},
})),
)
.addsLinks(edits =>
edits.createdObjects.byObjectType(ExampleFlightDelayEvent).map(event => ({
link: flight.flightDelayEvent,
linkedObject: event,
})),
)
.hasNoMoreEdits();
});
});
此代码可用于测试以下函数:
import { Function, Integer, OntologyEditFunction, Edits } from "@foundry/functions-api";
import { Objects, ExampleDataFlight, ExampleFlightDelayEvent } from "@foundry/ontology-api";
export class MyFunctions {
@Edits(ExampleDataFlight, ExampleFlightDelayEvent )
@OntologyEditFunction()
public createAndLinkDelays(flight: ExampleDataFlight, numDelay: Integer): void {
for (let n = 0; n < numDelay; n++) {
const delay = Objects.create().exampleFlightDelayEvent(`new-flight-delay-${n}`);
flight.flightDelayEvent.add(delay);
}
}
}
异步本体编辑(Asynchronous ontology edits)¶
您可以按如下方式验证异步本体编辑:
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
test("test async edit function", async () => {
const obj = Objects.create().objectWithAllPropertyTypes(1);
(await verifyOntologyEditFunction(() => myFunctions.setDateAndTimestampToNow(obj))).modifiesObject({
object: obj,
properties: {
timestampProperty: makeTimestamp(),
},
});
});
多重验证(Multiple verifications)¶
正如我们在上面的示例中所见,我们可以链式调用验证。以下模式说明了这一点:
import { verifyOntologyEditFunction } from "@foundry/functions-testing-lib";
import { Objects, ExampleDataObject } from "@foundry/ontology-api";
test("multiple action edit", () => {
verifyOntologyEditFunction(() => myFunctions.multistageEdits("objectId", "objectName"))
.createsObject({...})
.modifiesObjects({...})
.addsLinks({...})
.removesLinks({...})
.deletesObject(...)
.hasNoMoreEdits();
});