From bcf5521b0e40086db6d5a1d66963ad26b5f0ebe9 Mon Sep 17 00:00:00 2001 From: Jason Butz Date: Sun, 1 Oct 2017 15:03:36 -0400 Subject: [PATCH 1/2] Fix Product Rule Conditions --- src/Bigcommerce/Api/Resources/Rule.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Bigcommerce/Api/Resources/Rule.php b/src/Bigcommerce/Api/Resources/Rule.php index 2455dcdb..33520580 100644 --- a/src/Bigcommerce/Api/Resources/Rule.php +++ b/src/Bigcommerce/Api/Resources/Rule.php @@ -22,12 +22,13 @@ class Rule extends Resource public function conditions() { - $conditions = Client::getCollection($this->fields->conditions->resource, 'RuleCondition'); - - foreach ($conditions as $condition) { - $condition->product_id = $this->product_id; + $conditions = array(); + if (!isset($this->fields->conditions)) { + return $conditions; + } + foreach ($this->fields->conditions as $condition) { + $conditions[] = new RuleCondition((object)$condition); } - return $conditions; } From ad206eb3b19318b6d767c18fd19be4a3e99b24d4 Mon Sep 17 00:00:00 2001 From: Jason Butz Date: Sun, 1 Oct 2017 15:37:43 -0400 Subject: [PATCH 2/2] Adjust Product Rule Conditions Tests --- test/Unit/Api/Resources/RuleTest.php | 30 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/test/Unit/Api/Resources/RuleTest.php b/test/Unit/Api/Resources/RuleTest.php index eeaabadc..7e8999a8 100644 --- a/test/Unit/Api/Resources/RuleTest.php +++ b/test/Unit/Api/Resources/RuleTest.php @@ -26,21 +26,27 @@ public function testUpdatePassesThroughToConnection() $rule->update(); } - public function testConditionsPassesThroughToConnection() + public function testRuleHasConditions() { $rule = new Rule((object)array( 'product_id' => 1, - 'conditions' => (object)array('resource' => '/products/1/rules/1/conditions') + 'conditions' => array( + array('option_value_id' => 1, 'product_option_id' => 1) + ) )); - $this->connection->expects($this->once()) - ->method('get') - ->with($this->basePath . '/products/1/rules/1/conditions') - ->will($this->returnValue(array(array(), array()))); - - $collection = $rule->conditions; - $this->assertInternalType('array', $collection); - foreach ($collection as $condition) { - $this->assertInstanceOf('Bigcommerce\\Api\\Resources\\RuleCondition', $condition); - } + + $this->assertInstanceOf('Bigcommerce\Api\Resources\RuleCondition', $rule->conditions[0]); + + $this->assertEquals(1, $rule->conditions[0]->option_value_id); + $this->assertEquals(1, $rule->conditions[0]->product_option_id); + } + + public function testRuleHasNoConditions() + { + $rule = new Rule((object)array( + 'product_id' => 1 + )); + + $this->assertEmpty($rule->conditions); } }