Skip to content

Commit

Permalink
add another test
Browse files Browse the repository at this point in the history
  • Loading branch information
mindler-olli committed Mar 19, 2024
1 parent 8a1adb5 commit 46b406b
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 18 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ const tsynamoClient = new Tsynamo<DDB>({

```ts
await tsynamoClient
.getItemFrom("UserEvents")
.getItem("UserEvents")
.keys({
userId: "123",
eventId: 222,
Expand Down
43 changes: 41 additions & 2 deletions src/queryBuilders/deleteItemQueryBuilder.integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ describe("DeleteItemQueryBuilder", () => {
.execute();

const itemBeforeDeletion = await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({ userId: "1", dataTimestamp: 2 })
.execute();

Expand All @@ -41,10 +41,49 @@ describe("DeleteItemQueryBuilder", () => {
expect(deleteResponse).toMatchSnapshot();

const itemAfterDeletion = await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({ userId: "1", dataTimestamp: 2 })
.execute();

expect(itemAfterDeletion).toBeUndefined();
});

it("handles a delete query with a ConditionExpression", async () => {
await tsynamoClient
.putItem("myTable")
.item({
userId: "1",
dataTimestamp: 2,
tags: ["meow"],
someBoolean: true,
})
.execute();

expect(
tsynamoClient
.deleteItem("myTable")
.keys({
userId: "1",
dataTimestamp: 2,
})
.conditionExpression("NOT", (qb) => {
return qb.expression("tags", "contains", "meow");
})
.execute()
).rejects.toMatchInlineSnapshot(
`[ConditionalCheckFailedException: The conditional request failed]`
);

const res = await tsynamoClient
.deleteItem("myTable")
.keys({ userId: "1", dataTimestamp: 2 })
.conditionExpression("NOT", (qb) => {
return qb.expression("tags", "contains", "meow");
})
.orConditionExpression("someBoolean", "attribute_exists")
.returnValues("ALL_OLD")
.execute();

expect(res).toBeDefined();
});
});
2 changes: 1 addition & 1 deletion src/queryBuilders/deleteItemQueryBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ export interface DeleteItemQueryBuilderInterface<
}

/**
* @todo support ConditionExpression
* @todo support ReturnValuesOnConditionCheckFailure
*/
export class DeleteItemQueryBuilder<
DDB,
Expand Down
16 changes: 8 additions & 8 deletions src/queryBuilders/getItemQueryBuilder.integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ describe("GetItemQueryBuilder", () => {

it("handles a basic get item command", async () => {
const data = await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({
userId: TEST_DATA[1].userId,
dataTimestamp: TEST_DATA[1].dataTimestamp,
Expand All @@ -27,7 +27,7 @@ describe("GetItemQueryBuilder", () => {

it("handles selecting specific attributes", async () => {
const data = await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({
userId: TEST_DATA[0].userId,
dataTimestamp: TEST_DATA[0].dataTimestamp,
Expand All @@ -43,7 +43,7 @@ describe("GetItemQueryBuilder", () => {

it("handles selecting nested attributes", async () => {
const data = await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({
userId: TEST_DATA[4].userId,
dataTimestamp: TEST_DATA[4].dataTimestamp,
Expand All @@ -59,7 +59,7 @@ describe("GetItemQueryBuilder", () => {

it("handles selecting deeply nested attributes", async () => {
const data = await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({
userId: TEST_DATA[8].userId,
dataTimestamp: TEST_DATA[8].dataTimestamp,
Expand All @@ -77,7 +77,7 @@ describe("GetItemQueryBuilder", () => {

it("handles selecting attributes from arrays", async () => {
const data = await tsynamoClient
.getItemFrom("myOtherTable")
.getItem("myOtherTable")
.keys({
userId: TEST_DATA[6].userId,
stringTimestamp: "123",
Expand All @@ -92,7 +92,7 @@ describe("GetItemQueryBuilder", () => {
});
it("handles selecting attributes from tuples", async () => {
const data = await tsynamoClient
.getItemFrom("myOtherTable")
.getItem("myOtherTable")
.keys({
userId: TEST_DATA[6].userId,
stringTimestamp: "123",
Expand All @@ -106,7 +106,7 @@ describe("GetItemQueryBuilder", () => {
});
it("handles selecting multiple attributes from tuples", async () => {
const data = await tsynamoClient
.getItemFrom("myOtherTable")
.getItem("myOtherTable")
.keys({
userId: TEST_DATA[6].userId,
stringTimestamp: "123",
Expand All @@ -123,7 +123,7 @@ describe("GetItemQueryBuilder", () => {
expect(
async () =>
await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({
userId: TEST_DATA[0].userId,
dataTimestamp: TEST_DATA[0].dataTimestamp,
Expand Down
4 changes: 2 additions & 2 deletions src/queryBuilders/putItemQueryBuilder.integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ describe("PutItemQueryBuilder", () => {

it("handles a simple put query", async () => {
let result = await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({
userId: itemToPut.userId,
dataTimestamp: itemToPut.dataTimestamp,
Expand All @@ -33,7 +33,7 @@ describe("PutItemQueryBuilder", () => {
await tsynamoClient.putItem("myTable").item(itemToPut).execute();

result = await tsynamoClient
.getItemFrom("myTable")
.getItem("myTable")
.keys({
userId: "333",
dataTimestamp: 222,
Expand Down
3 changes: 0 additions & 3 deletions src/queryBuilders/putItemQueryBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,6 @@ export interface PutItemQueryBuilderInterface<DDB, Table extends keyof DDB, O> {
execute(): Promise<ExecuteOutput<O>[] | undefined>;
}

/**
* @todo support ConditionExpression
*/
export class PutItemQueryBuilder<
DDB,
Table extends keyof DDB,
Expand Down
2 changes: 1 addition & 1 deletion src/queryCreator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export class QueryCreator<DDB> {
* @see https://docs.aws.amazon.com/cli/latest/reference/dynamodb/get-item.html
* @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/dynamodb/command/GetItemCommand/
*/
getItemFrom<Table extends keyof DDB & string>(
getItem<Table extends keyof DDB & string>(
table: Table
): GetQueryBuilder<DDB, Table, DDB[Table]> {
return new GetQueryBuilder<DDB, Table, DDB[Table]>({
Expand Down

0 comments on commit 46b406b

Please sign in to comment.