Skip to content

Commit 45971c6

Browse files
authored
fix: json-ld tweaks (#49)
* fix: mpn on product only * fix: no trailing slash on offer links * chore: fix test * chore: fix post-deploy test
1 parent 75073c1 commit 45971c6

File tree

4 files changed

+21
-20
lines changed

4 files changed

+21
-20
lines changed

src/templates/json/JSONTemplate.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export class JSONTemplate {
5656
if (variant) {
5757
const offerVariantURLTemplate = matchedPathConfig?.offerVariantURLTemplate;
5858
if (!offerVariantURLTemplate) {
59-
return `${productUrl}/?optionsUIDs=${encodeURIComponent(variant.selections.join(','))}`;
59+
return `${productUrl}?optionsUIDs=${encodeURIComponent(variant.selections.join(','))}`;
6060
}
6161

6262
const variantPath = offerVariantURLTemplate

src/templates/json/overrides/wilson-ecommerce--wilson.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ export default class extends JSONTemplate {
2929
* @param {Variant} [variant]
3030
*/
3131
constructMPN(variant) {
32-
return variant ? variant.sku : this.product.sku;
32+
// only include mpn on product-level
33+
return variant ? undefined : this.product.sku;
3334
}
3435

3536
renderOffers() {

test/fixtures/post-deploy/bella-tank.html

+15-15
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
{
4747
"@type": "Offer",
4848
"sku": "WT01-L-Black",
49-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzI%3D",
49+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzI%3D",
5050
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-black_main_1.jpg",
5151
"availability": "InStock",
5252
"price": 29,
@@ -55,7 +55,7 @@
5555
{
5656
"@type": "Offer",
5757
"sku": "WT01-L-Blue",
58-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzI%3D",
58+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzI%3D",
5959
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-blue_main_1.jpg",
6060
"availability": "InStock",
6161
"price": 29,
@@ -64,7 +64,7 @@
6464
{
6565
"@type": "Offer",
6666
"sku": "WT01-L-Orange",
67-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzI%3D",
67+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzI%3D",
6868
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-orange_main_1.jpg",
6969
"availability": "InStock",
7070
"price": 29,
@@ -73,7 +73,7 @@
7373
{
7474
"@type": "Offer",
7575
"sku": "WT01-M-Black",
76-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81Mjk%3D",
76+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81Mjk%3D",
7777
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-black_main_1.jpg",
7878
"availability": "InStock",
7979
"price": 29,
@@ -82,7 +82,7 @@
8282
{
8383
"@type": "Offer",
8484
"sku": "WT01-M-Blue",
85-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81Mjk%3D",
85+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81Mjk%3D",
8686
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-blue_main_1.jpg",
8787
"availability": "InStock",
8888
"price": 29,
@@ -91,7 +91,7 @@
9191
{
9292
"@type": "Offer",
9393
"sku": "WT01-M-Orange",
94-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81Mjk%3D",
94+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81Mjk%3D",
9595
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-orange_main_1.jpg",
9696
"availability": "InStock",
9797
"price": 29,
@@ -100,7 +100,7 @@
100100
{
101101
"@type": "Offer",
102102
"sku": "WT01-S-Black",
103-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjY%3D",
103+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjY%3D",
104104
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-black_main_1.jpg",
105105
"availability": "InStock",
106106
"price": 29,
@@ -109,7 +109,7 @@
109109
{
110110
"@type": "Offer",
111111
"sku": "WT01-S-Blue",
112-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjY%3D",
112+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjY%3D",
113113
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-blue_main_1.jpg",
114114
"availability": "InStock",
115115
"price": 29,
@@ -118,7 +118,7 @@
118118
{
119119
"@type": "Offer",
120120
"sku": "WT01-S-Orange",
121-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjY%3D",
121+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjY%3D",
122122
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-orange_main_1.jpg",
123123
"availability": "InStock",
124124
"price": 29,
@@ -127,7 +127,7 @@
127127
{
128128
"@type": "Offer",
129129
"sku": "WT01-XL-Black",
130-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzU%3D",
130+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzU%3D",
131131
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-black_main_1.jpg",
132132
"availability": "InStock",
133133
"price": 29,
@@ -136,7 +136,7 @@
136136
{
137137
"@type": "Offer",
138138
"sku": "WT01-XL-Blue",
139-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzU%3D",
139+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzU%3D",
140140
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-blue_main_1.jpg",
141141
"availability": "InStock",
142142
"price": 29,
@@ -145,7 +145,7 @@
145145
{
146146
"@type": "Offer",
147147
"sku": "WT01-XL-Orange",
148-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzU%3D",
148+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81MzU%3D",
149149
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-orange_main_1.jpg",
150150
"availability": "InStock",
151151
"price": 29,
@@ -154,7 +154,7 @@
154154
{
155155
"@type": "Offer",
156156
"sku": "WT01-XS-Black",
157-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjM%3D",
157+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzI%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjM%3D",
158158
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-black_main_1.jpg",
159159
"availability": "InStock",
160160
"price": 29,
@@ -163,7 +163,7 @@
163163
{
164164
"@type": "Offer",
165165
"sku": "WT01-XS-Blue",
166-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjM%3D",
166+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xNzU%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjM%3D",
167167
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-blue_main_1.jpg",
168168
"availability": "InStock",
169169
"price": 29,
@@ -172,7 +172,7 @@
172172
{
173173
"@type": "Offer",
174174
"sku": "WT01-XS-Orange",
175-
"url": "https://example.test/products/bella-tank/wt01/?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjM%3D",
175+
"url": "https://example.test/products/bella-tank/wt01?optionsUIDs=Y29uZmlndXJhYmxlLzI3Ny8xOTM%3D%2CY29uZmlndXJhYmxlLzU1Ni81MjM%3D",
176176
"image": "https://www.aemshop.net/media/catalog/product/w/t/wt01-orange_main_1.jpg",
177177
"availability": "InStock",
178178
"price": 29,

test/templates/json/JSONTemplate.test.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ describe('JSONTemplate', () => {
7171

7272
// @ts-ignore
7373
const url = template.constructProductURL(variant1);
74-
const expectedUrl = 'https://www.example.com/products/utopia-small-pendant/kw5531/?optionsUIDs=Y29uZmlndXJhYmxlLzE2NTEvODI3MQ%3D%3D';
74+
const expectedUrl = 'https://www.example.com/products/utopia-small-pendant/kw5531?optionsUIDs=Y29uZmlndXJhYmxlLzE2NTEvODI3MQ%3D%3D';
7575
assert.strictEqual(url, expectedUrl, 'Variant URL without offerVariantURLTemplate does not match expected URL');
7676
});
7777

@@ -97,7 +97,7 @@ describe('JSONTemplate', () => {
9797

9898
// @ts-ignore
9999
const url = template.constructProductURL(variantWithSpecialSelections);
100-
const expectedUrl = 'https://www.example.com/products/summer-sun/kw%2055%2F31/?optionsUIDs=Y29uZmlndXJhYmxlLzE2NTEvODI3MQ%3D%3D%2CY29uZmlndXJhYmxlLzI0NjEvMzYzNDE%3D';
100+
const expectedUrl = 'https://www.example.com/products/summer-sun/kw%2055%2F31?optionsUIDs=Y29uZmlndXJhYmxlLzE2NTEvODI3MQ%3D%3D%2CY29uZmlndXJhYmxlLzI0NjEvMzYzNDE%3D';
101101
assert.strictEqual(url, expectedUrl, 'Variant URL with special characters does not match expected URL');
102102
});
103103

@@ -114,7 +114,7 @@ describe('JSONTemplate', () => {
114114
}), product1, [variantEmptySelections]);
115115
// @ts-ignore
116116
const url = template.constructProductURL(variantEmptySelections);
117-
const expectedUrl = 'https://www.example.com/products/utopia-small-pendant/kw5531/?optionsUIDs=';
117+
const expectedUrl = 'https://www.example.com/products/utopia-small-pendant/kw5531?optionsUIDs=';
118118
assert.strictEqual(url, expectedUrl, 'URL with empty variant selections does not match expected URL');
119119
});
120120

0 commit comments

Comments
 (0)