Skip to content

Commit 5e1de88

Browse files
committed
MWEB-1179: added Defaultable module
1 parent 59d41e2 commit 5e1de88

File tree

8 files changed

+90
-34
lines changed

8 files changed

+90
-34
lines changed

CHANGELOG

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
v1.4.2
2+
- Added Defaultable module
3+
14
v1.4.1
25
- Fixed bug in NewsFeedMeta core_fields and core_field_names. Calling either of those methods modified the data array when it should have only been reading the array. Later calls to these methods were then incorrect.
36

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.4.1
1+
1.4.2

lib/spark_api/models.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
require 'spark_api/models/base'
33
require 'spark_api/models/constraint'
44
require 'spark_api/models/finders'
5+
require 'spark_api/models/defaultable'
56
require 'spark_api/models/subresource'
67
require 'spark_api/models/concerns'
78

lib/spark_api/models/defaultable.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
module SparkApi
2+
module Models
3+
module Defaultable
4+
5+
DEFAULT_ID = "default"
6+
7+
extend Finders
8+
9+
def self.included(base)
10+
11+
class << base
12+
alias original_find find
13+
end
14+
15+
base.extend(ClassMethods)
16+
17+
end
18+
19+
module ClassMethods
20+
21+
def default(options = {})
22+
find(DEFAULT_ID, options)
23+
end
24+
25+
def find(*arguments)
26+
result = original_find(*arguments)
27+
if arguments.first == DEFAULT_ID
28+
result.Id = DEFAULT_ID if result.Id.nil?
29+
end
30+
result
31+
end
32+
33+
end
34+
35+
end
36+
end
37+
end

lib/spark_api/models/idx_link.rb

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,12 @@ module Models
33
class IdxLink < Base
44

55
extend Finders
6+
include Defaultable
67

78
self.element_name = "idxlinks"
89

910
LINK_TYPES = ["QuickSearch", "SavedSearch", "MyListings", "Roster"]
1011

11-
def self.default(options = {})
12-
response = connection.get("/#{self.element_name}/default", options).first
13-
response.nil? ? nil : new(response)
14-
end
15-
1612
end
1713
end
1814
end

lib/spark_api/models/search_template/quick_search.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module SparkApi
22
module Models
33
class QuickSearch < Base
44
extend Finders
5+
include Defaultable
56
include Concerns::Savable,
67
Concerns::Destroyable
78

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
require 'spec_helper'
2+
3+
describe Defaultable do
4+
5+
module SparkApi
6+
module Models
7+
class TestClass < Base
8+
extend Finders
9+
include Defaultable
10+
self.element_name = 'testclass'
11+
end
12+
end
13+
end
14+
15+
describe 'default' do
16+
17+
it 'calls find' do
18+
expect(TestClass).to receive(:find).with('default', {})
19+
TestClass.default
20+
end
21+
22+
end
23+
24+
describe 'find' do
25+
26+
it "adds the id 'default'" do
27+
allow(TestClass).to receive(:connection).and_return(double(get: [{Id: nil, Name: 'foo'}]))
28+
default = TestClass.find(TestClass::DEFAULT_ID)
29+
expect(default.Id).to eq 'default'
30+
end
31+
32+
it "doesn't override the id if one is present" do
33+
allow(TestClass).to receive(:connection).and_return(double(get: [{Id: '5', Name: 'foo'}]))
34+
expect(TestClass.find(TestClass::DEFAULT_ID).Id).to eq '5'
35+
end
36+
37+
it "calls Finders.find when given a normal id" do
38+
connection = double
39+
expect(connection).to receive(:get).with("/testclass/5", {foo: true}).and_return([{}])
40+
allow(TestClass).to receive(:connection).and_return(connection)
41+
TestClass.find('5', foo: true)
42+
end
43+
44+
end
45+
46+
end

spec/unit/spark_api/models/idx_link_spec.rb

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)