feat(ticket-selector): refactor variant handling to use single variant property and update related tests
This commit is contained in:
@@ -574,6 +574,7 @@ describe('StoreLayoutComponent', () => {
|
|||||||
product: {
|
product: {
|
||||||
nombre: 'Producto',
|
nombre: 'Producto',
|
||||||
imagen: null,
|
imagen: null,
|
||||||
|
variant: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -627,6 +628,7 @@ describe('StoreLayoutComponent', () => {
|
|||||||
product: {
|
product: {
|
||||||
nombre: 'Producto',
|
nombre: 'Producto',
|
||||||
imagen: null,
|
imagen: null,
|
||||||
|
variant: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -70,10 +70,7 @@ export class StoreLayoutComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const variants = item.product?.variants ?? [];
|
const selectedVariant = item.product?.variant ?? null;
|
||||||
const selectedVariant = item.product?.variants?.find(
|
|
||||||
(variant) => variant.id === item.variant_id,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (selectedVariant) {
|
if (selectedVariant) {
|
||||||
attributes = Object.entries(selectedVariant.values).map(([label, value]) => ({
|
attributes = Object.entries(selectedVariant.values).map(([label, value]) => ({
|
||||||
@@ -92,7 +89,6 @@ export class StoreLayoutComponent implements OnInit {
|
|||||||
attributes,
|
attributes,
|
||||||
quantity: item.cantidad,
|
quantity: item.cantidad,
|
||||||
variantId: item.variant_id,
|
variantId: item.variant_id,
|
||||||
variants,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
export interface CartItemProduct {
|
export interface CartItemProduct {
|
||||||
nombre: string;
|
nombre: string;
|
||||||
imagen: string | null;
|
imagen: string | null;
|
||||||
variants?: CartItemVariant[];
|
variant: CartItemVariant | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CartItemVariantOption {
|
export interface CartItemVariantOption {
|
||||||
|
|||||||
@@ -27,6 +27,12 @@ describe('CartService', () => {
|
|||||||
product: {
|
product: {
|
||||||
nombre: 'Test Product (Size: M)',
|
nombre: 'Test Product (Size: M)',
|
||||||
imagen: null,
|
imagen: null,
|
||||||
|
variant: {
|
||||||
|
id: 10,
|
||||||
|
precio: '10.00',
|
||||||
|
stock_tecnico: 1,
|
||||||
|
values: { size: 'M' },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -203,17 +203,15 @@ describe('ProductTicketSelectorComponent', () => {
|
|||||||
product: {
|
product: {
|
||||||
nombre: 'Entrada',
|
nombre: 'Entrada',
|
||||||
imagen: null,
|
imagen: null,
|
||||||
variants: [
|
variant: {
|
||||||
{
|
id: 401,
|
||||||
id: 401,
|
precio: '10000.00',
|
||||||
precio: '10000.00',
|
stock_tecnico: 1,
|
||||||
stock_tecnico: 1,
|
values: {
|
||||||
values: {
|
sector: { value: 'a', label: 'Sector A' },
|
||||||
sector: { value: 'a', label: 'Sector A' },
|
seat: '1',
|
||||||
seat: '1',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
],
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -304,14 +302,12 @@ describe('ProductTicketSelectorComponent', () => {
|
|||||||
product: {
|
product: {
|
||||||
nombre: 'Entrada',
|
nombre: 'Entrada',
|
||||||
imagen: null,
|
imagen: null,
|
||||||
variants: [
|
variant: {
|
||||||
{
|
id: 401,
|
||||||
id: 401,
|
precio: '10000.00',
|
||||||
precio: '10000.00',
|
stock_tecnico: 0,
|
||||||
stock_tecnico: 0,
|
values: { seat: '1' },
|
||||||
values: { seat: '1' },
|
},
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -455,8 +455,8 @@ export class ProductTicketSelectorComponent {
|
|||||||
private createCartRow(item: CartItem, id = this.nextRowId++): TicketSelectionRow | null {
|
private createCartRow(item: CartItem, id = this.nextRowId++): TicketSelectionRow | null {
|
||||||
if (item.variant_id === null) return null;
|
if (item.variant_id === null) return null;
|
||||||
|
|
||||||
const variant = item.product?.variants?.find(({ id }) => id === item.variant_id);
|
const variant = item.product?.variant;
|
||||||
if (!variant) return null;
|
if (!variant || variant.id !== item.variant_id) return null;
|
||||||
|
|
||||||
const selectedValues = this.normalizeCartValues(variant.values);
|
const selectedValues = this.normalizeCartValues(variant.values);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user