Skip to content

Commit

Permalink
Fixes all tests to use new filters
Browse files Browse the repository at this point in the history
  • Loading branch information
tywalch committed Oct 31, 2022
1 parent 14d96da commit 04bb9db
Show file tree
Hide file tree
Showing 6 changed files with 555 additions and 159 deletions.
1 change: 0 additions & 1 deletion index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2296,7 +2296,6 @@ export class Service<E extends {[name: string]: Entity<any, any, any, any>}> {
collections:
ClusteredCollectionQueries<E, ClusteredCollectionAssociations<E>>
& IsolatedCollectionQueries<E, IsolatedCollectionAssociations<E>>
// & CollectionQueries<E, CollectionAssociations<E>>
constructor(entities: E, config?: ServiceConfiguration);

setTableName(tableName: string): void;
Expand Down
29 changes: 15 additions & 14 deletions src/clauses.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ let clauses = {
.ifSK(() => {
const {composites, unused} = state.identifyCompositeAttributes(facets, sk, pk);
state.setSK(composites);
state.filterProperties(FilterOperationNames.eq, unused);
// we must apply eq on filter on all provided because if the user then does a sort key operation, it'd actually then unexpect results
if (sk.length > 1) {
state.filterProperties(FilterOperationNames.eq, {...unused, ...composites});
}
});

} catch(err) {
Expand All @@ -69,14 +72,7 @@ let clauses = {
.setType(QueryTypes.collection)
.setMethod(MethodTypes.query)
.setCollection(collection)
.setPK(entity._expectFacets(facets, pk))
// .ifSK(() => {
// const {composites, unused} = state.identifyCompositeAttributes(facets, sk, pk);
// state.filterProperties(FilterOperationNames.eq, {
// ...composites,
// ...unused
// });
// });
.setPK(entity._expectFacets(facets, pk));
} catch(err) {
state.setError(err);
return state;
Expand Down Expand Up @@ -436,13 +432,18 @@ let clauses = {
}
try {
state.addOption('_isPagination', true);
const attributes = state.getCompositeAttributes();
const {pk, sk} = state.getCompositeAttributes();
return state
.setMethod(MethodTypes.query)
.setType(QueryTypes.is)
.setPK(entity._expectFacets(facets, attributes.pk))
.setPK(entity._expectFacets(facets, pk))
.ifSK(() => {
state.setSK(state.buildQueryComposites(facets, attributes.sk));
const {composites, unused} = state.identifyCompositeAttributes(facets, sk, pk);
state.setSK(state.buildQueryComposites(facets, sk));
// we must apply eq on filter on all provided because if the user then does a sort key operation, it'd actually then unexpect results
if (sk.length > 1) {
state.filterProperties(FilterOperationNames.eq, {...unused, ...composites});
}
});
} catch(err) {
state.setError(err);
Expand All @@ -466,7 +467,7 @@ let clauses = {
.setSK(endingSk.composites)
.setType(QueryTypes.between)
.setSK(startingSk.composites)
.filterProperties(FilterOperationNames.lte, endingSk.composites)
.filterProperties(FilterOperationNames.lte, endingSk.composites);
} catch(err) {
state.setError(err);
return state;
Expand Down Expand Up @@ -510,7 +511,7 @@ let clauses = {
state.setSK(composites);
state.filterProperties(FilterOperationNames.gt, {
...composites,
})
});
});
} catch(err) {
state.setError(err);
Expand Down
67 changes: 58 additions & 9 deletions test/connected.crud.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3564,11 +3564,19 @@ for (const [clientVersion, client] of [[c.DocumentClientVersions.v2, v2Client],
expect(beforeUpdateQueryParams).to.deep.equal({
KeyConditionExpression: '#pk = :pk and #sk1 = :sk1',
TableName: 'electro',
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk' },
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk',
"#prop6": "prop6",
"#prop7": "prop7",
"#prop8": "prop8",
},
ExpressionAttributeValues: {
":prop60": record.prop6,
":prop70": record.prop7,
":prop80": record.prop8,
':pk': `$test#prop5_${record.prop5}`,
':sk1': `$dummy_1#prop6_${record.prop6}#prop7_${record.prop7}#prop8_${record.prop8}`
},
"FilterExpression": "(#prop6 = :prop60) AND #prop7 = :prop70 AND #prop8 = :prop80",
IndexName: 'gsi2pk-gsi2sk-index'
});
let beforeUpdate = await Dummy.query.index3({prop5: record.prop5, prop6: record.prop6, prop7: record.prop7, prop8: record.prop8}).go().then(res => res.data);
Expand All @@ -3582,11 +3590,19 @@ for (const [clientVersion, client] of [[c.DocumentClientVersions.v2, v2Client],
expect(afterUpdateQueryParams).to.deep.equal({
KeyConditionExpression: '#pk = :pk and #sk1 = :sk1',
TableName: 'electro',
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk' },
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk',
"#prop6": "prop6",
"#prop7": "prop7",
"#prop8": "prop8",
},
ExpressionAttributeValues: {
":prop60": record.prop6,
":prop70": record.prop7,
":prop80": record.prop8,
':pk': `$test#prop5_${prop5}`,
':sk1': `$dummy_1#prop6_${record.prop6}#prop7_${record.prop7}#prop8_${record.prop8}`
},
"FilterExpression": "(#prop6 = :prop60) AND #prop7 = :prop70 AND #prop8 = :prop80",
IndexName: 'gsi2pk-gsi2sk-index'
});
let afterUpdate = await Dummy.query.index3({prop5, prop6: record.prop6, prop7: record.prop7, prop8: record.prop8}).go().then(res => res.data);
Expand Down Expand Up @@ -3614,11 +3630,19 @@ for (const [clientVersion, client] of [[c.DocumentClientVersions.v2, v2Client],
expect(beforeUpdateQueryParams).to.deep.equal({
KeyConditionExpression: '#pk = :pk and #sk1 = :sk1',
TableName: 'electro',
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk' },
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk',
"#prop6": "prop6",
"#prop7": "prop7",
"#prop8": "prop8",
},
ExpressionAttributeValues: {
":prop60": record.prop6,
":prop70": record.prop7,
":prop80": record.prop8,
':pk': `$test#prop5_${record.prop5}`,
':sk1': `$dummy_1#prop6_${record.prop6}#prop7_${record.prop7}#prop8_${record.prop8}`
},
FilterExpression: "(#prop6 = :prop60) AND #prop7 = :prop70 AND #prop8 = :prop80",
IndexName: 'gsi2pk-gsi2sk-index'
});
let beforeUpdate = await Dummy.query.index3({prop5: record.prop5, prop6: record.prop6, prop7: record.prop7, prop8: record.prop8}).go().then(res => res.data);
Expand All @@ -3632,11 +3656,19 @@ for (const [clientVersion, client] of [[c.DocumentClientVersions.v2, v2Client],
expect(afterUpdateQueryParams).to.deep.equal({
KeyConditionExpression: '#pk = :pk and #sk1 = :sk1',
TableName: 'electro',
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk' },
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk',
"#prop6": "prop6",
"#prop7": "prop7",
"#prop8": "prop8",
},
ExpressionAttributeValues: {
":prop60": record.prop6,
":prop70": record.prop7,
":prop80": record.prop8,
':pk': `$test#prop5_${prop5}`,
':sk1': `$dummy_1#prop6_${record.prop6}#prop7_${record.prop7}#prop8_${record.prop8}`
},
"FilterExpression": "(#prop6 = :prop60) AND #prop7 = :prop70 AND #prop8 = :prop80",
IndexName: 'gsi2pk-gsi2sk-index'
});
let afterUpdate = await Dummy.query.index3({prop5, prop6: record.prop6, prop7: record.prop7, prop8: record.prop8}).go().then(res => res.data);
Expand Down Expand Up @@ -3919,25 +3951,42 @@ for (const [clientVersion, client] of [[c.DocumentClientVersions.v2, v2Client],
expect(unitParams).to.deep.equal({
KeyConditionExpression: '#pk = :pk and begins_with(#sk1, :sk1)',
TableName: 'electro',
ExpressionAttributeNames: { '#pk': 'gsi1pk', '#sk1': 'gsi1sk' },
ExpressionAttributeValues: { ':pk': 'mallz_eastpointe', ':sk1': 'b_buildingz#u_g1#s_' },
ExpressionAttributeNames: { '#pk': 'gsi1pk', '#sk1': 'gsi1sk',
"#unitId": "unitId",
"#buildingId": "buildingId"
},
ExpressionAttributeValues: { ':pk': 'mallz_eastpointe', ':sk1': 'b_buildingz#u_g1#s_',
":buildingId0": "BuildingZ",
":unitId0": "G1"
},
FilterExpression: "(#buildingId = :buildingId0) AND #unitId = :unitId0",
IndexName: 'gsi1pk-gsi1sk-index'
});
expect(leasesParams).to.deep.equal({
KeyConditionExpression: '#pk = :pk and begins_with(#sk1, :sk1)',
TableName: 'electro',
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk' },
ExpressionAttributeValues: { ':pk': 'm_eastpointe', ':sk1': 'l_2020-01-20#s_lattelarrys#b_' },
ExpressionAttributeNames: { '#pk': 'gsi2pk', '#sk1': 'gsi2sk',
"#leaseEnd": "leaseEnd",
"#storeId": "storeId"
},
ExpressionAttributeValues: { ':pk': 'm_eastpointe', ':sk1': 'l_2020-01-20#s_lattelarrys#b_',
":leaseEnd0": "2020-01-20",
":storeId0": "LatteLarrys"
},
FilterExpression: "(#leaseEnd = :leaseEnd0) AND #storeId = :storeId0",
IndexName: 'gsi2pk-gsi2sk-index'
});
expect(shopParams).to.deep.equal({
KeyConditionExpression: '#pk = :pk and begins_with(#sk1, :sk1)',
TableName: 'electro',
ExpressionAttributeNames: { '#pk': 'gsi4pk', '#sk1': 'gsi4sk' },
ExpressionAttributeNames: { '#pk': 'gsi4pk', '#sk1': 'gsi4sk', "#buildingId": "buildingId", "#mallId": "mallId" },
ExpressionAttributeValues: {
":buildingId0": "BuildingZ",
":mallId0": "EastPointe",
':pk': '$facettest_1#store_lattelarrys',
':sk1': `$${ENTITY}#mall_eastpointe#building_buildingz#unit_`
},
FilterExpression: "(#mallId = :mallId0) AND #buildingId = :buildingId0",
IndexName: 'gsi4pk-gsi4sk-index'
});
expect(createParams).to.deep.equal({
Expand Down

0 comments on commit 04bb9db

Please sign in to comment.