Skip to content

Commit

Permalink
Merge pull request #1066 from searchspring/develop
Browse files Browse the repository at this point in the history
Release v0.56.5
  • Loading branch information
dkonieczek authored Jun 3, 2024
2 parents 7321bec + 1a6f89c commit fb90263
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ describe('SearchResultStore', () => {

const variants = (result as Product).variants;

expect(variants?.data.length).toStrictEqual(parsedVariantData.length);
expect(variants?.data.length).toStrictEqual(parsedVariantData.filter((variant: any) => variant.attributes.available !== false).length);
expect(variants?.selections.length).toBe(Object.keys(parsedVariantData[0].options).length);
});
});
Expand Down Expand Up @@ -268,14 +268,18 @@ describe('SearchResultStore', () => {

expect(variants).toBeDefined();

expect((result as Product).variants?.data.length).toStrictEqual(parsedVariantData.length);
expect((result as Product).variants?.data.length).toStrictEqual(
parsedVariantData.filter((variant: any) => variant.attributes.available !== false).length
);
expect((result as Product).variants?.selections.length).toBe(Object.keys(parsedVariantData[0].options).length);

(result as Product).variants?.update(parsedVariantDataToUse);

expect((result as Product).variants).toBeDefined();

expect((result as Product).variants?.data.length).toStrictEqual(parsedVariantDataToUse.length);
expect((result as Product).variants?.data.length).toStrictEqual(
parsedVariantDataToUse.filter((variant: any) => variant.attributes.available !== false).length
);
expect((result as Product).variants?.selections.length).toBe(Object.keys(parsedVariantDataToUse[0].options).length);
});
});
Expand Down Expand Up @@ -373,14 +377,18 @@ describe('SearchResultStore', () => {

expect(variants).toBeDefined();

expect((resultForTest as Product).variants?.data.length).toStrictEqual(parsedVariantData.length);
expect((resultForTest as Product).variants?.data.length).toStrictEqual(
parsedVariantData.filter((variant: any) => variant.attributes.available !== false).length
);
expect((resultForTest as Product).variants?.selections.length).toBe(Object.keys(parsedVariantData[0].options).length);

(resultForTest as Product).variants?.update(parsedVariantDataToUse);

expect((resultForTest as Product).variants).toBeDefined();

expect((resultForTest as Product).variants?.data.length).toStrictEqual(parsedVariantDataToUse.length);
expect((resultForTest as Product).variants?.data.length).toStrictEqual(
parsedVariantData.filter((variant: any) => variant.attributes.available !== false).length
);
expect((resultForTest as Product).variants?.selections.length).toBe(Object.keys(parsedVariantDataToUse[0].options).length);

expect(resultForTest).toBeDefined();
Expand Down Expand Up @@ -445,14 +453,18 @@ describe('SearchResultStore', () => {

expect(variants).toBeDefined();

expect((resultForTest as Product).variants?.data.length).toStrictEqual(parsedVariantData.length);
expect((resultForTest as Product).variants?.data.length).toStrictEqual(
parsedVariantData.filter((variant: any) => variant.attributes.available !== false).length
);
expect((resultForTest as Product).variants?.selections.length).toBe(Object.keys(parsedVariantData[0].options).length);

(resultForTest as Product).variants?.update(parsedVariantDataToUse);

expect((resultForTest as Product).variants).toBeDefined();

expect((resultForTest as Product).variants?.data.length).toStrictEqual(parsedVariantDataToUse.length);
expect((resultForTest as Product).variants?.data.length).toStrictEqual(
parsedVariantDataToUse.filter((variant: any) => variant.attributes.available !== false).length
);
expect((resultForTest as Product).variants?.selections.length).toBe(Object.keys(parsedVariantDataToUse[0].options).length);

expect(resultForTest).toBeDefined();
Expand Down Expand Up @@ -488,14 +500,18 @@ describe('SearchResultStore', () => {

expect(variants).toBeDefined();

expect((resultForTest as Product).variants?.data.length).toStrictEqual(parsedVariantData.length);
expect((resultForTest as Product).variants?.data.length).toStrictEqual(
parsedVariantData.filter((variant: any) => variant.attributes.available !== false).length
);
expect((resultForTest as Product).variants?.selections.length).toBe(Object.keys(parsedVariantData[0].options).length);

(resultForTest as Product).variants?.update(parsedVariantDataToUse, newVariantsConfig);

expect((resultForTest as Product).variants).toBeDefined();

expect((resultForTest as Product).variants?.data.length).toStrictEqual(parsedVariantDataToUse.length);
expect((resultForTest as Product).variants?.data.length).toStrictEqual(
parsedVariantDataToUse.filter((variant: any) => variant.attributes.available !== false).length
);
expect((resultForTest as Product).variants?.selections.length).toBe(Object.keys(parsedVariantDataToUse[0].options).length);

expect(resultForTest).toBeDefined();
Expand Down Expand Up @@ -650,12 +666,12 @@ describe('SearchResultStore', () => {

// only uses "available" variants
expect(variants?.active).toBe(variants?.data.find((variant) => variant.available));
expect(variants?.data.length).toStrictEqual(parsedVariantData.length);
expect(variants?.data.length).toStrictEqual(parsedVariantData.filter((variant: any) => variant.attributes.available !== false).length);
expect(variants?.selections.length).toBe(Object.keys(parsedVariantData[0].options).length);

// creates a variant for each data entry
// creates a variant for each available data entry
variants.data.forEach((variant, index) => {
expect(variant).toStrictEqual(new Variant(parsedVariantData[index]));
expect(variant).toStrictEqual(new Variant(parsedVariantData.filter((variant: any) => variant.attributes.available !== false)[index]));
});
});

Expand Down
20 changes: 11 additions & 9 deletions packages/snap-store-mobx/src/Search/Stores/SearchResultStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -320,15 +320,17 @@ export class Variants {
const options: string[] = [];

// create variants objects
this.data = variantData.map((variant) => {
Object.keys(variant.options).forEach((variantOption) => {
if (!options.includes(variantOption)) {
options.push(variantOption);
}
});
this.data = variantData
.filter((variant) => variant.attributes.available !== false)
.map((variant) => {
Object.keys(variant.options).forEach((variantOption) => {
if (!options.includes(variantOption)) {
options.push(variantOption);
}
});

return new Variant(variant);
});
return new Variant(variant);
});

//need to reset this.selections first
this.selections = [];
Expand Down Expand Up @@ -475,7 +477,7 @@ export class VariantSelection {
// current selection should only consider OTHER selections for availability
const selectedSelections = variants.selections.filter((selection) => selection.field != this.field && selection.selected);

let availableVariants = variants.data;
let availableVariants = variants.data.filter((variant) => variant.available);

// loop through selectedSelections and remove products that do not match
for (const selectedSelection of selectedSelections) {
Expand Down

0 comments on commit fb90263

Please sign in to comment.