Skip to content

Commit 3265ee0

Browse files
authored
Merge pull request #137 from aligent/fix/135-missing-config-values
Fix/135 missing config values
2 parents 1fddb55 + cade3a8 commit 3265ee0

4 files changed

Lines changed: 354 additions & 22 deletions

File tree

src/BigCommerce/ResourceModels/Catalog/Product/ProductModifier.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,7 @@ public function __construct(?stdClass $optionObject = null)
3030
!is_null($optionObject) && !empty($optionObject->config)
3131
&& get_class($optionObject->config) !== ProductModifierConfig::class
3232
) {
33-
$this->config = new ProductModifierConfig(
34-
$optionObject->config->product_list_adjusts_inventory,
35-
$optionObject->config->product_list_adjusts_pricing,
36-
$optionObject->config->product_list_shipping_calc
37-
);
33+
$this->config = new ProductModifierConfig($optionObject->config);
3834
}
3935

4036
if (!is_null($optionObject) && isset($optionObject->config)) {

src/BigCommerce/ResourceModels/Catalog/Product/ProductModifierConfig.php

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,41 @@
22

33
namespace BigCommerce\ApiV3\ResourceModels\Catalog\Product;
44

5-
class ProductModifierConfig
5+
use BigCommerce\ApiV3\ResourceModels\ResourceModel;
6+
7+
class ProductModifierConfig extends ResourceModel
68
{
7-
public const PRODUCT_LIST_SHIPPING_BY_WEIGHT = 'weight';
8-
9-
public bool $product_list_adjusts_inventory;
10-
public bool $product_list_adjusts_pricing;
11-
public string $product_list_shipping_calc;
12-
13-
public function __construct(
14-
bool $product_list_adjusts_inventory,
15-
bool $product_list_adjusts_pricing,
16-
string $product_list_shipping_calc
17-
) {
18-
$this->product_list_adjusts_inventory = $product_list_adjusts_inventory;
19-
$this->product_list_adjusts_pricing = $product_list_adjusts_pricing;
20-
$this->product_list_shipping_calc = $product_list_shipping_calc;
21-
}
9+
public const PRODUCT_LIST_SHIPPING_NONE = 'none';
10+
public const PRODUCT_LIST_SHIPPING_BY_WEIGHT = 'weight';
11+
public const PRODUCT_LIST_SHIPPING_BY_PACKAGE = 'package';
12+
13+
public ?string $default_value;
14+
public ?bool $checked_by_default;
15+
public ?string $checkbox_label;
16+
17+
public ?bool $date_limited;
18+
public ?string $date_limit_mode;
19+
public ?string $date_earliest_value;
20+
public ?string $date_latest_value;
21+
22+
public ?string $file_types_mode;
23+
public ?array $file_types_supported;
24+
public ?array $file_types_other;
25+
public ?int $file_max_size;
26+
27+
public ?bool $text_characters_limited;
28+
public ?int $text_min_length;
29+
public ?int $text_max_length;
30+
public ?bool $text_lines_limited;
31+
public ?int $text_max_lines;
32+
33+
public ?bool $number_limited;
34+
public ?string $number_limit_mode;
35+
public ?float $number_lowest_value;
36+
public ?float $number_highest_value;
37+
public ?bool $number_integers_only;
38+
39+
public ?bool $product_list_adjusts_inventory;
40+
public ?bool $product_list_adjusts_pricing;
41+
public ?string $product_list_shipping_calc;
2242
}

tests/BigCommerce/Api/Catalog/Products/ModifiersApiTest.php

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace BigCommerce\Tests\Api\Catalog\Products;
44

5+
use BigCommerce\ApiV3\ResourceModels\Catalog\Product\ProductModifierConfig;
56
use BigCommerce\Tests\BigCommerceApiTest;
67

78
class ModifiersApiTest extends BigCommerceApiTest
@@ -18,6 +19,56 @@ public function testCanGetModifier(): void
1819

1920
public function testCanGetAllModifiers(): void
2021
{
21-
$this->markTestIncomplete();
22+
$this->setReturnData('catalog__products__modifiers__6962__values__get_all.json');
23+
24+
$modifiers = $this->getApi()->catalog()->product(6962)->modifiers()->getAll()->getProductModifiers();
25+
26+
$this->assertCount(8, $modifiers);
27+
$this->assertEquals('earliest', $modifiers[5]->config->date_limit_mode);
28+
$this->assertEquals(['images'], $modifiers[6]->config->file_types_supported);
29+
$this->assertEquals(20, $modifiers[7]->config->text_max_lines);
30+
}
31+
32+
public function testCanUpdateModifierConfigs(): void
33+
{
34+
$textConfig = new ProductModifierConfig((object)[
35+
"default_value" => "",
36+
"text_characters_limited" => false,
37+
"text_min_length" => 0,
38+
"text_max_length" => 0
39+
]);
40+
41+
$dateConfig = new ProductModifierConfig((object)[
42+
"date_limited" => false,
43+
"date_limit_mode" => "earliest",
44+
"date_earliest_value" => null,
45+
"date_latest_value" => null,
46+
"default_value" => "2022-06-01T00:00:00+00:00"
47+
]);
48+
49+
$fileConfig = new ProductModifierConfig((object)[
50+
"file_types_mode" => "specific",
51+
"file_types_supported" => [
52+
"images"
53+
],
54+
"file_types_other" => [],
55+
"file_max_size" => 524288
56+
]);
57+
58+
$this->assertEquals(
59+
'{"default_value":"","text_characters_limited":false,"text_min_length":0,"text_max_length":0}',
60+
json_encode($textConfig)
61+
);
62+
63+
$this->assertEquals(
64+
'{"default_value":"2022-06-01T00:00:00+00:00","date_limited":false,"date_limit_mode":"earliest"}',
65+
json_encode($dateConfig)
66+
);
67+
68+
$this->assertEquals(
69+
'{"file_types_mode":"specific","file_types_supported":["images"],' .
70+
'"file_types_other":[],"file_max_size":524288}',
71+
json_encode($fileConfig)
72+
);
2273
}
2374
}

0 commit comments

Comments
 (0)