active_force 0.0.7.alfa → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c7c95ee692d2b9302abc561d8b75abb46471cb3e
4
- data.tar.gz: 57cf7fbe1dabbddcba08399cf23aa7e21ec0d80d
3
+ metadata.gz: acf8e175727f61a6fc99099804f1759a8539d11f
4
+ data.tar.gz: df64cceabf34fba0ff538283ac59b278b91acf98
5
5
  SHA512:
6
- metadata.gz: 04ee4308094ca54cf96a9a9f940a2512598c9bde125ac79ad78ed3168aeb9e3106ad9b4236b02ed8d527102a677897b8fba73e49b349eaa2dd40d961d4a519bf
7
- data.tar.gz: fa2590afa762d3c94e8b53197f5168dcd95b4560a364e64425e6280563b174e2d60655404d28c851d95dd529040894bf628e883a6735e76e1970eaf5f7c6c7a0
6
+ metadata.gz: 5f32456704f543150f8d8f7ba414adfade927cea8f3abe9ea0d847f43ab1dd3f74644d15e607961759f98538315fd9d7ab72c872c0284eb9012bc0ce97081237
7
+ data.tar.gz: c410492b5afdf5e9110415ae1abe3f5869df4806e4d77af708573f335e2fda9143b4bae722a544d64da08f4ad58ec786bc30b344caa90994fc3b6216a2c30642
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
- # ActiveForce [![Code Climate](https://codeclimate.com/github/eloyesp/active_force.png)](https://codeclimate.com/github/eloyesp/active_force)
2
- TODO: Write a gem description
1
+ [![Gem Version](http://img.shields.io/gem/v/active_force.svg)](http://badge.fury.io/rb/active_force)
2
+ [![Code Climate](http://img.shields.io/codeclimate/github/eloyesp/active_force.svg)](https://codeclimate.com/github/eloyesp/active_force)
3
+
4
+ # ActiveForce
5
+
6
+ A ruby gem to interact with SalesForce as if it were Active Record. It
7
+ uses Restforce to interact with the API, so it is fast and stable.
3
8
 
4
9
  ## Installation
5
10
 
@@ -17,7 +22,66 @@ Or install it yourself as:
17
22
 
18
23
  ## Usage
19
24
 
20
- TODO: Write usage instructions here
25
+ ### Define a class
26
+
27
+ ```ruby
28
+ class Page < ActiveForce::SObject
29
+
30
+ end
31
+ ```
32
+
33
+ ### Add Attributes
34
+ ```ruby
35
+ class Page < ActiveForce::SObject
36
+ #field, attribute name. from: 'Name in Salesforce database'
37
+ field :id, from: 'Id'
38
+ field :name, from: 'Medication__c'
39
+ self.fields = mappings.values
40
+ #set SalesForce table name.
41
+ self.table_name = 'Patient_Medication__c'
42
+ end
43
+ ```
44
+ ### Relation ships
45
+
46
+ #### Has Many
47
+
48
+ ```ruby
49
+ class Account < ActiveForce::SObject
50
+ has_many :pages
51
+ end
52
+
53
+ class Page < ActiveForce::SObject
54
+ field :account_id, from: 'Account__c'
55
+ end
56
+ ```
57
+
58
+ you could send a option parameter in the declaration.
59
+
60
+ ```ruby
61
+ class Account < ActiveForce::SObject
62
+ has_many :medications,
63
+ where: "(Date_Discontinued__c > #{ Date.today.strftime("%Y-%m-%d") } or Date_Discontinued__c = NULL)"
64
+
65
+ has_many :today_log_entrys,
66
+ model: DailyLogEntry,
67
+ where: "Date__c = #{ Time.now.in_time_zone.strftime("%Y-%m-%d") }"
68
+
69
+ has_many :labs,
70
+ where: "Category__c = 'EMR' And Date__c <> NULL",
71
+ order: 'Date__c DESC'
72
+ end
73
+ ```
74
+
75
+ #### Belongs to
76
+ ```ruby
77
+ class Account < ActiveForce::SObject
78
+ end
79
+
80
+ class Page < ActiveForce::SObject
81
+ field :account_id, from: 'Account__c'
82
+ belongs_to :account
83
+ end
84
+ ```
21
85
 
22
86
  ## Contributing
23
87
 
data/lib/active_force.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'active_force/version'
2
2
  require 'active_force/sobject'
3
+ require 'active_force/query'
3
4
 
4
5
  module ActiveForce
5
6
  end
@@ -0,0 +1,39 @@
1
+ require 'active_force/query'
2
+
3
+ module ActiveForce
4
+ module Association
5
+ module ClassMethods
6
+ def has_many relation_name, options = {}
7
+ model = options[:model] || relation_model(relation_name)
8
+ association_name = options[:table] || model.table_name || "#{ model }__c"
9
+ foreing_key = options[:foreing_key] || default_foreing_key(model, self.name) || table_name
10
+
11
+ define_method "#{ relation_name }_query" do
12
+ query = ActiveForce::Query.new(association_name)
13
+ query.fields model.fields
14
+ query.where(options[:where]) if options[:where]
15
+ query.order(options[:order]) if options[:order]
16
+ query.limit(options[:limit]) if options[:limit]
17
+ query.where("#{ foreing_key } = '#{ id }'")
18
+ query
19
+ end
20
+ end
21
+
22
+ def relation_model sym
23
+ sym.to_s.singularize.camelcase.constantize
24
+ end
25
+
26
+ def default_foreing_key relation_model, model
27
+ relation_model.mappings["#{model.downcase}_id".to_sym]
28
+ end
29
+
30
+ def belongs_to relation_name, options = {}
31
+ model = options[:model] || relation_model(relation_name)
32
+ foreing_key = options[:foreing_key] || "#{ relation_name }_id".to_sym
33
+ define_method "#{ relation_name }" do
34
+ model.find(self.send foreing_key)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,94 @@
1
+ module ActiveForce
2
+ class Query
3
+ attr_reader :table
4
+
5
+ attr_accessor :table_id
6
+
7
+ def initialize table
8
+ @table = table
9
+ @conditions = []
10
+ @table_id = 'Id'
11
+ @query_fields = [@table_id]
12
+ end
13
+
14
+ def fields fields_collection = []
15
+ @query_fields = @query_fields + fields_collection.to_a
16
+ end
17
+
18
+ def all
19
+ self
20
+ end
21
+
22
+ def to_s
23
+ query = <<-SOQL.gsub(/\s+/, " ").strip
24
+ SELECT
25
+ #{ @query_fields.uniq.join(', ') }
26
+ FROM
27
+ #{ @table }
28
+ #{ build_where }
29
+ #{ build_order }
30
+ #{ build_limit }
31
+ #{ build_offset }
32
+ SOQL
33
+ query
34
+ end
35
+
36
+ def where condition
37
+ @conditions << condition
38
+ self
39
+ end
40
+
41
+ def order order
42
+ @order = order
43
+ self
44
+ end
45
+
46
+ def limit size
47
+ @size = size
48
+ self
49
+ end
50
+
51
+ def limit_value
52
+ @size
53
+ end
54
+
55
+ def offset offset
56
+ @offset = offset
57
+ self
58
+ end
59
+
60
+ def offset_value
61
+ @offset
62
+ end
63
+
64
+ def find id
65
+ where "#{ @table_id } = '#{ id }'"
66
+ limit 1
67
+ self
68
+ end
69
+
70
+ def join object_query
71
+ fields ["(#{ object_query.to_s })"]
72
+ self
73
+ end
74
+
75
+ protected
76
+ def build_where
77
+ unless @conditions.empty?
78
+ "WHERE #{ @conditions.join(' AND ') }"
79
+ end
80
+ end
81
+
82
+ def build_limit
83
+ "LIMIT #{ @size }" if @size
84
+ end
85
+
86
+ def build_order
87
+ "ORDER BY #{ @order }" if @order
88
+ end
89
+
90
+ def build_offset
91
+ "OFFSET #{ @offset }" if @offset
92
+ end
93
+ end
94
+ end
@@ -1,14 +1,19 @@
1
1
  require 'active_model'
2
2
  require 'active_attr'
3
3
  require 'active_attr/dirty'
4
+ require 'active_force/query'
5
+ require 'active_force/association'
6
+ require 'yaml'
4
7
 
5
8
  module ActiveForce
6
9
  class SObject
7
10
  include ActiveAttr::Model
8
11
  include ActiveAttr::Dirty
12
+ include ActiveForce::Association
9
13
 
10
- # Types recognised don't get the added "__c"
11
- STANDARD_TYPES = %w[ Account Contact Opportunity ]
14
+ extend ClassMethods
15
+
16
+ STANDARD_TYPES = %w[ Account Contact Opportunity Campaign]
12
17
 
13
18
  class_attribute :mappings, :fields, :table_name
14
19
 
@@ -22,6 +27,14 @@ module ActiveForce
22
27
  end
23
28
  end
24
29
 
30
+ def self.has_many relation_name, options = {}
31
+ super
32
+ model = options[:model] || relation_model(relation_name)
33
+ define_method relation_name do
34
+ model.send_query(self.send "#{ relation_name }_query".to_sym)
35
+ end
36
+ end
37
+
25
38
  def self.build sobject
26
39
  return nil if sobject.nil?
27
40
  model = new
@@ -32,37 +45,51 @@ module ActiveForce
32
45
  model
33
46
  end
34
47
 
48
+ def self.query
49
+ query = ActiveForce::Query.new(table_name)
50
+ query.fields fields
51
+ query
52
+ end
53
+
35
54
  def self.all
36
- all = Client.query(<<-SOQL.strip_heredoc).to_a
37
- SELECT
38
- #{ fields.join(', ') }
39
- FROM
40
- #{ table_name }
41
- SOQL
42
- all.map do |mash|
55
+ send_query query
56
+ end
57
+
58
+ def self.send_query query
59
+ Client.query(query.to_s).to_a.map do |mash|
43
60
  build mash
44
61
  end
45
62
  end
46
63
 
47
64
  def self.find id
48
- build Client.query(<<-SOQL.strip_heredoc).first
49
- SELECT #{fields.join(', ')}
50
- FROM #{table_name}
51
- WHERE Id = '#{id}'
52
- SOQL
65
+ send_query(query.find(id)).first
53
66
  end
54
67
 
55
- def self.create(attributes = nil, &block)
56
- if attributes.is_a?(Array)
57
- attributes.collect { |attr| create(attr, &block) }
58
- else
59
- object = new(attributes, &block)
60
- object.create
61
- object
68
+ def update_attributes! attributes = {}
69
+ assign_attributes attributes
70
+ return false unless valid?
71
+ sobject_hash = { 'Id' => id }
72
+ changed.each do |field|
73
+ sobject_hash[mappings[field.to_sym]] = read_attribute(field)
62
74
  end
75
+ result = Client.update! table_name, sobject_hash
76
+ changed_attributes.clear
77
+ result
63
78
  end
64
79
 
65
- def create
80
+ def update_attributes attributes = {}
81
+ update_attributes! attributes
82
+ rescue Faraday::Error::ClientError => error
83
+ Rails.logger.info do
84
+ "[SFDC] [#{self.class.model_name}] [#{self.class.table_name}] Error while updating, params: #{hash}, error: #{error.inspect}"
85
+ end
86
+ errors[:base] << error.message
87
+ false
88
+ end
89
+
90
+ alias_method :update, :update_attributes
91
+
92
+ def create!
66
93
  return false unless valid?
67
94
  hash = {}
68
95
  mappings.map do |field, name_in_sfdc|
@@ -71,26 +98,23 @@ module ActiveForce
71
98
  end
72
99
  self.id = Client.create! table_name, hash
73
100
  changed_attributes.clear
101
+ end
102
+
103
+ def create
104
+ create!
74
105
  rescue Faraday::Error::ClientError => error
75
- Rails.logger.warn do
106
+ Rails.logger.info do
76
107
  "[SFDC] [#{self.class.model_name}] [#{self.class.table_name}] Error while creating, params: #{hash}, error: #{error.inspect}"
77
108
  end
78
109
  errors[:base] << error.message
79
110
  false
80
111
  end
81
112
 
82
- def update_attributes attributes
83
- assign_attributes attributes
84
- if valid?
85
- sobject_hash = { 'Id' => id }
86
- changed.each do |field|
87
- sobject_hash[mappings[field.to_sym]] = read_attribute(field)
88
- end
89
- result = Client.update table_name, sobject_hash
90
- changed_attributes.clear if result
91
- result
113
+ def save
114
+ if persisted?
115
+ update
92
116
  else
93
- false
117
+ create
94
118
  end
95
119
  end
96
120
 
@@ -1,3 +1,3 @@
1
1
  module ActiveForce
2
- VERSION = "0.0.7.alfa"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+ require 'active_force/association'
3
+
4
+ describe ActiveForce::SObject do
5
+
6
+ before do
7
+ class Post < ActiveForce::SObject
8
+ self.table_name = "Post__c"
9
+ end
10
+
11
+ class Comment < ActiveForce::SObject
12
+ self.table_name = "Comment__c"
13
+ end
14
+ end
15
+
16
+ describe "has_many_query" do
17
+
18
+ before do
19
+ class Post < ActiveForce::SObject
20
+ has_many :comments
21
+ end
22
+
23
+ @post = Post.new
24
+ @post.stub(:id).and_return("1")
25
+ end
26
+
27
+ it "should return a Query object" do
28
+ @post.comments_query.class.should be ActiveForce::Query
29
+ end
30
+
31
+ describe 'to_s' do
32
+ it "should retrun a OSQL statment" do
33
+ @post.comments_query.to_s.should ==
34
+ "SELECT Id FROM Comment__c WHERE Post__c = '1'"
35
+ end
36
+ end
37
+ end
38
+
39
+ describe 'has_many(options)' do
40
+
41
+ it 'should allow to send a different query table name' do
42
+ class Post < ActiveForce::SObject
43
+ has_many :comments, { table: 'Comment' }
44
+ end
45
+ @post = Post.new
46
+ @post.stub(:id).and_return("1")
47
+ @post.comments_query.to_s.should ==
48
+ "SELECT Id FROM Comment WHERE Post__c = '1'"
49
+ end
50
+
51
+ it 'should allow to change the foreing key' do
52
+ class Post < ActiveForce::SObject
53
+ has_many :comments, { foreing_key: 'Post' }
54
+ end
55
+ @post = Post.new
56
+ @post.stub(:id).and_return("1")
57
+ @post.comments_query.to_s.should ==
58
+ "SELECT Id FROM Comment__c WHERE Post = '1'"
59
+ end
60
+
61
+ it 'should allow to add a where condition' do
62
+ class Post < ActiveForce::SObject
63
+ has_many :comments, { where: '1 = 1' }
64
+ end
65
+ @post = Post.new
66
+ @post.stub(:id).and_return("1")
67
+ @post.comments_query.to_s.should ==
68
+ "SELECT Id FROM Comment__c WHERE 1 = 1 AND Post__c = '1'"
69
+ end
70
+
71
+ it 'should use a convention name for the foreing key' do
72
+ class Comment < ActiveForce::SObject
73
+ field :post_id, from: 'PostId'
74
+ end
75
+
76
+ class Post < ActiveForce::SObject
77
+ has_many :comments
78
+ end
79
+
80
+ @post = Post.new
81
+ @post.stub(:id).and_return("1")
82
+ @post.comments_query.to_s.should ==
83
+ "SELECT Id FROM Comment__c WHERE PostId = '1'"
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,101 @@
1
+ require 'spec_helper'
2
+ require 'active_force/query'
3
+
4
+ describe ActiveForce::Query do
5
+
6
+ before do
7
+ @query = ActiveForce::Query.new 'table_name'
8
+ @query.fields ['name', 'etc']
9
+ end
10
+
11
+ after do
12
+ end
13
+
14
+ describe ".all" do
15
+ it "table should return table name" do
16
+ @query.all.table.should be(@query.table)
17
+ end
18
+
19
+ it "fields should return fields" do
20
+ @query.all.fields.should == @query.fields
21
+ end
22
+ end
23
+
24
+ describe ".all.to_s" do
25
+ it "should return a query for all records" do
26
+ @query.all.to_s.should == "SELECT Id, name, etc FROM table_name"
27
+ end
28
+
29
+ it "should ignore dupicated attributes in select statment" do
30
+ @query.fields ['Id', 'name', 'etc']
31
+ @query.all.to_s.should == "SELECT Id, name, etc FROM table_name"
32
+ end
33
+ end
34
+
35
+ describe ".where" do
36
+ it "should add a where condition to a query" do
37
+ @query.where("name like '%a%'").to_s.should == "SELECT Id, name, etc FROM table_name WHERE name like '%a%'"
38
+ end
39
+
40
+ it "should add multiples conditions to a query" do
41
+ @query.where("condition1 = 1").where("condition2 = 2").to_s.should ==
42
+ "SELECT Id, name, etc FROM table_name WHERE condition1 = 1 AND condition2 = 2"
43
+ end
44
+ end
45
+
46
+ describe ".limit" do
47
+ it "should add a limit to a query" do
48
+ @query.limit("25").to_s.should == "SELECT Id, name, etc FROM table_name LIMIT 25"
49
+ end
50
+ end
51
+
52
+ describe ".limit_value" do
53
+ it "should return the limit value" do
54
+ @query.limit(4)
55
+ @query.limit_value.should == 4
56
+ end
57
+ end
58
+
59
+ describe ".offset" do
60
+ it "should add an offset to a query" do
61
+ @query.offset(4).to_s.should == "SELECT Id, name, etc FROM table_name OFFSET 4"
62
+ end
63
+ end
64
+
65
+ describe ".offset_value" do
66
+ it "should return the offset value" do
67
+ @query.offset(4)
68
+ @query.offset_value.should == 4
69
+ end
70
+ end
71
+
72
+ describe ".find.to_s" do
73
+ it "should return a query for 1 record" do
74
+ @query.find(2).to_s.should == "SELECT Id, name, etc FROM table_name WHERE Id = '2' LIMIT 1"
75
+ end
76
+ end
77
+
78
+ describe ".order" do
79
+ it "should add a order condition in the statment" do
80
+ @query.order("name desc").to_s.should == "SELECT Id, name, etc FROM table_name ORDER BY name desc"
81
+ end
82
+
83
+ it "should add a order condition in the statment with WHERE and LIMIT" do
84
+ @query.where("condition1 = 1").order("name desc").limit(1).to_s.should ==
85
+ "SELECT Id, name, etc FROM table_name WHERE condition1 = 1 ORDER BY name desc LIMIT 1"
86
+ end
87
+ end
88
+
89
+ describe '.join' do
90
+
91
+ before do
92
+ @join = ActiveForce::Query.new 'join_table_name'
93
+ @join.fields ['name', 'etc']
94
+ end
95
+
96
+ it 'sould add another select statment on the current select' do
97
+ @query.join(@join).to_s.should ==
98
+ 'SELECT Id, name, etc, (SELECT Id, name, etc FROM join_table_name) FROM table_name'
99
+ end
100
+ end
101
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_force
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7.alfa
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eloy Espinaco
@@ -9,90 +9,90 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-17 00:00:00.000000000 Z
12
+ date: 2014-05-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: active_attr
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0.8'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0.8'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: restforce
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '1.4'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.4'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '1.3'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.3'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: pry
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  description: Use SalesForce as an ActiveModel
@@ -101,9 +101,9 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - .gitignore
105
- - .rspec
106
- - .travis.yml
104
+ - ".gitignore"
105
+ - ".rspec"
106
+ - ".travis.yml"
107
107
  - CHANGELOG.md
108
108
  - Gemfile
109
109
  - LICENSE.txt
@@ -112,14 +112,18 @@ files:
112
112
  - active_force.gemspec
113
113
  - lib/active_attr/dirty.rb
114
114
  - lib/active_force.rb
115
+ - lib/active_force/association.rb
116
+ - lib/active_force/query.rb
115
117
  - lib/active_force/sobject.rb
116
118
  - lib/active_force/version.rb
117
119
  - lib/generators/active_force/active_force_model/USAGE
118
120
  - lib/generators/active_force/active_force_model/active_force_model_generator.rb
119
121
  - lib/generators/active_force/active_force_model/templates/model.rb.erb
122
+ - spec/active_force/association_spec.rb
120
123
  - spec/active_force/sobject/table_name_spec.rb
121
124
  - spec/active_force/sobject_spec.rb
122
125
  - spec/active_force_spec.rb
126
+ - spec/active_query/query_spec.rb
123
127
  - spec/fixtures/sobject/single_sobject_hash.yml
124
128
  - spec/spec_helper.rb
125
129
  - spec/support/fixture_helpers.rb
@@ -134,25 +138,28 @@ require_paths:
134
138
  - lib
135
139
  required_ruby_version: !ruby/object:Gem::Requirement
136
140
  requirements:
137
- - - '>='
141
+ - - ">="
138
142
  - !ruby/object:Gem::Version
139
143
  version: '0'
140
144
  required_rubygems_version: !ruby/object:Gem::Requirement
141
145
  requirements:
142
- - - '>'
146
+ - - ">="
143
147
  - !ruby/object:Gem::Version
144
- version: 1.3.1
148
+ version: '0'
145
149
  requirements: []
146
150
  rubyforge_project:
147
- rubygems_version: 2.0.3
151
+ rubygems_version: 2.2.2
148
152
  signing_key:
149
153
  specification_version: 4
150
154
  summary: Help you implement models persisting on Sales Force within Rails using RESTForce
151
155
  test_files:
156
+ - spec/active_force/association_spec.rb
152
157
  - spec/active_force/sobject/table_name_spec.rb
153
158
  - spec/active_force/sobject_spec.rb
154
159
  - spec/active_force_spec.rb
160
+ - spec/active_query/query_spec.rb
155
161
  - spec/fixtures/sobject/single_sobject_hash.yml
156
162
  - spec/spec_helper.rb
157
163
  - spec/support/fixture_helpers.rb
158
164
  - spec/support/whizbang.rb
165
+ has_rdoc: