From 46c53210cee002bb9eddc395dddf8f5f2f7508de Mon Sep 17 00:00:00 2001 From: Ryan Hertz Date: Wed, 6 Jun 2018 08:42:55 -0400 Subject: [PATCH] added Rule model --- CHANGELOG | 3 ++ VERSION | 2 +- lib/spark_api/models.rb | 1 + lib/spark_api/models/rule.rb | 14 +++++++++ spec/fixtures/rules/get.json | 39 +++++++++++++++++++++++++ spec/unit/spark_api/models/rule_spec.rb | 18 ++++++++++++ 6 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 lib/spark_api/models/rule.rb create mode 100644 spec/fixtures/rules/get.json create mode 100644 spec/unit/spark_api/models/rule_spec.rb diff --git a/CHANGELOG b/CHANGELOG index 5ac7d7e9..ca39afef 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +v1.4.22 + - added Rule model + v1.4.21 - added IncompleteListing model diff --git a/VERSION b/VERSION index 8cc8fe02..d6e26167 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.4.21 +1.4.22 diff --git a/lib/spark_api/models.rb b/lib/spark_api/models.rb index 1e31ac99..1f6321ab 100644 --- a/lib/spark_api/models.rb +++ b/lib/spark_api/models.rb @@ -34,6 +34,7 @@ require 'spark_api/models/portal_listing_cart' require 'spark_api/models/property_types' require 'spark_api/models/rental_calendar' +require 'spark_api/models/rule' require 'spark_api/models/saved_search' require 'spark_api/models/search_template/quick_search' require 'spark_api/models/shared_link' diff --git a/lib/spark_api/models/rule.rb b/lib/spark_api/models/rule.rb new file mode 100644 index 00000000..84a4b3b9 --- /dev/null +++ b/lib/spark_api/models/rule.rb @@ -0,0 +1,14 @@ +module SparkApi + module Models + class Rule < Base + + self.element_name="listings/rules" + + def self.for_property_type(property_type, args={}) + collect(connection.get("/listings/rules/propertytypes/#{property_type}", args)) + end + + end + end +end + diff --git a/spec/fixtures/rules/get.json b/spec/fixtures/rules/get.json new file mode 100644 index 00000000..64c461f8 --- /dev/null +++ b/spec/fixtures/rules/get.json @@ -0,0 +1,39 @@ +{ + "D": { + "Success": true, + "Results": [ + { + "Id": 25, + "ResourceUri": "/v1/listings/rules/25", + "PropertyType": "A", + "Domain": "StandardFields", + "Group": null, + "Field": "BathsTotal", + "Order": 1, + "Action": "SET_REQUIRED", + "Expression": "StandardStatus = 'Active'", + "ModificationTimestamp": "2018-05-07T19:03:07Z", + "CreatedTimestamp": "2017-12-20T19:00:30Z", + "ApprovalStatus": "Published", + "Editable": true, + "Status": "Fatal" + }, + { + "Id": 370, + "ResourceUri": "/v1/listings/rules/370", + "PropertyType": "A", + "Domain": "StandardFields", + "Group": null, + "Field": "City", + "Order": 1, + "Action": "SET_REQUIRED", + "Expression": ".FALSE.", + "ModificationTimestamp": "2018-05-01T15:26:47Z", + "CreatedTimestamp": "2018-01-24T16:01:14Z", + "ApprovalStatus": "Published", + "Editable": true, + "Status": "Fatal" + } + ] + } +} diff --git a/spec/unit/spark_api/models/rule_spec.rb b/spec/unit/spark_api/models/rule_spec.rb new file mode 100644 index 00000000..4e56d086 --- /dev/null +++ b/spec/unit/spark_api/models/rule_spec.rb @@ -0,0 +1,18 @@ +require './spec/spec_helper' + +describe Rule do + + describe 'for_property_type' do + + on_get_it "should get documents for a listing" do + stub_auth_request + stub_api_get('/listings/rules/propertytypes/A','rules/get.json') + + rules = Rule.for_property_type('A') + rules.should be_an(Array) + rules.length.should == 2 + end + + end + +end