Skip to content

Commit b0acebe

Browse files
committed
add tests for RavenDB-12169
1 parent 46cd2b3 commit b0acebe

File tree

4 files changed

+128
-2
lines changed

4 files changed

+128
-2
lines changed

src/Documents/Commands/Batches/BatchPatchCommandData.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ export class BatchPatchCommandData implements ICommandData {
2222
private _patch: PatchRequest;
2323
private _patchIfMissing: PatchRequest;
2424

25-
private constructor(patch: PatchRequest, patchIfMissing: PatchRequest, ...ids: Array<string | IdAndChangeVector>) {
25+
public constructor(patch: PatchRequest, patchIfMissing: PatchRequest, ...ids: string[]);
26+
public constructor(patch: PatchRequest, patchIfMissing: PatchRequest, ...ids: IdAndChangeVector[]);
27+
public constructor(patch: PatchRequest, patchIfMissing: PatchRequest, ...ids: Array<IdAndChangeVector | string>) {
2628
if (!patch) {
2729
throwError("InvalidArgumentException", "Patch cannot be null.");
2830
}

src/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,16 @@ export * from "./Documents/Session/IMetadataDictionary";
204204
export * from "./Documents/Session/DocumentResultStream";
205205
export * from "./Documents/Commands/StreamResult";
206206
export * from "./Documents/Session/SessionOptions";
207+
export * from "./Documents/Commands/CommandData";
208+
export * from "./Documents/Commands/Batches/CopyAttachmentCommandData";
209+
export * from "./Documents/Commands/Batches/DeleteAttachmentCommandData";
210+
export * from "./Documents/Commands/Batches/MoveAttachmentCommandData";
211+
export * from "./Documents/Commands/Batches/PutAttachmentCommandData";
212+
export * from "./Documents/Commands/Batches/BatchPatchCommandData";
213+
export * from "./Documents/Commands/Batches/CountersBatchCommandData";
214+
export * from "./Documents/Commands/Batches/PatchCommandData";
215+
export * from "./Documents/Commands/Batches/PutCompareExchangeCommandData";
216+
export * from "./Documents/Commands/Batches/DeleteCompareExchangeCommandData";
207217

208218
// COUNTERS
209219

test/Ported/Issues/RavenDB_12132.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
SessionOptions,
1212
} from "../../../src";
1313

14-
describe.only("RavenDB-12132", function () {
14+
describe("RavenDB-12132", function () {
1515

1616
let store: IDocumentStore;
1717

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
import * as mocha from "mocha";
2+
import * as assert from "assert";
3+
import { User, Company, Order } from "../../Assets/Entities";
4+
import { assertThat, assertThrows } from "../../Utils/AssertExtensions";
5+
import { testContext, disposeTestDocumentStore } from "../../Utils/TestUtil";
6+
7+
import {
8+
RavenErrorType,
9+
IDocumentStore,
10+
BatchPatchCommandData,
11+
PatchRequest,
12+
} from "../../../src";
13+
14+
describe.only("RavenDB-12169", function () {
15+
16+
let store: IDocumentStore;
17+
18+
beforeEach(async function () {
19+
testContext.enableFiddler();
20+
store = await testContext.getDocumentStore();
21+
});
22+
23+
afterEach(async () =>
24+
await disposeTestDocumentStore(store));
25+
26+
it("canUseBatchPatchCommand", async () => {
27+
{
28+
const session = store.openSession();
29+
await session.store(Object.assign(new Company(), { name: "C1" }), "companies/1");
30+
await session.store(Object.assign(new Company(), { name: "C2" }), "companies/2");
31+
await session.store(Object.assign(new Company(), { name: "C3" }), "companies/3");
32+
await session.store(Object.assign(new Company(), { name: "C4" }), "companies/4");
33+
await session.saveChanges();
34+
}
35+
36+
{
37+
const session = store.openSession();
38+
39+
const c1 = await session.load<Company>("companies/1");
40+
const c2 = await session.load<Company>("companies/2");
41+
const c3 = await session.load<Company>("companies/3");
42+
const c4 = await session.load<Company>("companies/4");
43+
44+
assertThat(c1.name)
45+
.isEqualTo("C1");
46+
assertThat(c2.name)
47+
.isEqualTo("C2");
48+
assertThat(c3.name)
49+
.isEqualTo("C3");
50+
assertThat(c4.name)
51+
.isEqualTo("C4");
52+
53+
const ids = [ c1.id, c3.id ];
54+
55+
session.advanced.defer(
56+
new BatchPatchCommandData(
57+
PatchRequest.forScript("this.name = 'test'; "), null, ...ids));
58+
59+
session.advanced.defer(
60+
new BatchPatchCommandData(
61+
PatchRequest.forScript("this.name = 'test2'; "), null, c4.id));
62+
63+
await session.saveChanges();
64+
}
65+
66+
{
67+
68+
const session = store.openSession();
69+
const c1 = await session.load<Company>("companies/1");
70+
const c2 = await session.load<Company>("companies/2");
71+
const c3 = await session.load<Company>("companies/3");
72+
const c4 = await session.load<Company>("companies/4");
73+
74+
assertThat(c1.name)
75+
.isEqualTo("test");
76+
assertThat(c2.name)
77+
.isEqualTo("C2");
78+
assertThat(c3.name)
79+
.isEqualTo("test");
80+
assertThat(c4.name)
81+
.isEqualTo("test2");
82+
}
83+
84+
{
85+
const session = store.openSession();
86+
const c2 = await session.load<Company>("companies/2");
87+
88+
session.advanced.defer(
89+
new BatchPatchCommandData(
90+
PatchRequest.forScript("this.name = 'test2'"), null, { id: c2.id, changeVector: "invalidCV" }));
91+
92+
await assertThrows(async () => {
93+
await session.saveChanges();
94+
}, err => assert.strictEqual(err.name, "ConcurrencyException"));
95+
}
96+
97+
{
98+
99+
const session = store.openSession();
100+
const c1 = await session.load<Company>("companies/1");
101+
const c2 = await session.load<Company>("companies/2");
102+
const c3 = await session.load<Company>("companies/3");
103+
const c4 = await session.load<Company>("companies/4");
104+
assertThat(c1.name)
105+
.isEqualTo("test");
106+
assertThat(c2.name)
107+
.isEqualTo("C2");
108+
assertThat(c3.name)
109+
.isEqualTo("test");
110+
assertThat(c4.name)
111+
.isEqualTo("test2");
112+
}
113+
});
114+
});

0 commit comments

Comments
 (0)