sunstone 5.0.1.3 → 5.0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile.rb +2 -2
- data/ext/active_record/associations.rb +52 -0
- data/ext/active_record/persistence.rb +11 -0
- data/ext/active_record/relation.rb +23 -0
- data/ext/active_record/transactions.rb +12 -4
- data/lib/active_record/connection_adapters/sunstone/database_statements.rb +1 -2
- data/lib/arel/collectors/sunstone.rb +9 -7
- data/lib/arel/visitors/sunstone.rb +118 -93
- data/lib/sunstone.rb +1 -0
- data/lib/sunstone/version.rb +1 -1
- data/sunstone.gemspec +4 -3
- data/test/active_record/associations/has_and_belongs_to_many_test.rb +25 -2
- data/test/active_record/associations/has_many_test.rb +28 -4
- data/test/active_record/eager_loading_test.rb +37 -2
- data/test/active_record/persistance_test.rb +72 -10
- data/test/active_record/preload_test.rb +39 -4
- data/test/active_record/query/all_test.rb +33 -0
- data/test/active_record/query/count_test.rb +38 -0
- data/test/active_record/query/distinct_test.rb +30 -0
- data/test/active_record/query/find_test.rb +37 -0
- data/test/active_record/query/where_test.rb +79 -0
- data/test/active_record/query_test.rb +53 -112
- data/test/schema_mock.rb +117 -0
- data/test/sunstone/connection/configuration_test.rb +1 -1
- data/test/sunstone/connection/cookie_store_test.rb +1 -1
- data/test/sunstone/connection/request_helper_test.rb +1 -1
- data/test/sunstone/connection/send_request_test.rb +1 -1
- data/test/sunstone/connection_test.rb +1 -1
- data/test/test_helper.rb +7 -4
- metadata +23 -26
- data/test/models.rb +0 -115
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class Sunstone::Connection::SendRequestTest <
|
3
|
+
class Sunstone::Connection::SendRequestTest < ActiveSupport::TestCase
|
4
4
|
|
5
5
|
test '#send_request(#<Net::HTTPRequest>) includes the api-key header when present' do
|
6
6
|
connection = Sunstone::Connection.new(url: "http://my_api_key@example.com")
|
data/test/test_helper.rb
CHANGED
@@ -17,15 +17,17 @@ require 'webmock/minitest'
|
|
17
17
|
require 'mocha/mini_test'
|
18
18
|
|
19
19
|
require 'sunstone'
|
20
|
-
require File.expand_path('../
|
20
|
+
require File.expand_path('../schema_mock.rb', __FILE__)
|
21
21
|
|
22
22
|
Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
|
23
23
|
|
24
|
+
$debugging = false
|
25
|
+
|
24
26
|
# File 'lib/active_support/testing/declarative.rb', somewhere in rails....
|
25
|
-
class
|
27
|
+
class ActiveSupport::TestCase
|
28
|
+
include WebMock::API
|
26
29
|
|
27
30
|
# include ActiveSupport::Testing::TimeHelpers
|
28
|
-
|
29
31
|
def self.test(name, &block)
|
30
32
|
test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
|
31
33
|
defined = instance_method(test_name) rescue false
|
@@ -65,7 +67,8 @@ class Minitest::Test
|
|
65
67
|
def webmock(method, path, query=nil)
|
66
68
|
query = deep_transform_query(query) if query
|
67
69
|
|
68
|
-
stub_request(method, /^#{
|
70
|
+
stub_request(method, /^#{ActiveRecord::Base.connection.instance_variable_get(:@connection).url}/).with do |req|
|
71
|
+
# puts "REQ\t#{unpack(req.uri.query.sub(/=true$/, ''))}" if req&.uri&.path == path && req.uri.query
|
69
72
|
if query
|
70
73
|
req&.uri&.path == path && req.uri.query && unpack(req.uri.query.sub(/=true$/, '')) == query
|
71
74
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sunstone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.1.
|
4
|
+
version: 5.0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Bracy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: sdoc
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: bundler
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,7 +137,7 @@ dependencies:
|
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: '0'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
140
|
+
name: rgeo
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
143
|
- - ">="
|
@@ -165,7 +151,7 @@ dependencies:
|
|
165
151
|
- !ruby/object:Gem::Version
|
166
152
|
version: '0'
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
154
|
+
name: simplecov
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
170
156
|
requirements:
|
171
157
|
- - ">="
|
@@ -179,7 +165,7 @@ dependencies:
|
|
179
165
|
- !ruby/object:Gem::Version
|
180
166
|
version: '0'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
168
|
+
name: byebug
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
184
170
|
requirements:
|
185
171
|
- - ">="
|
@@ -193,19 +179,19 @@ dependencies:
|
|
193
179
|
- !ruby/object:Gem::Version
|
194
180
|
version: '0'
|
195
181
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
182
|
+
name: activesupport
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
198
184
|
requirements:
|
199
|
-
- - "
|
185
|
+
- - "~>"
|
200
186
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
187
|
+
version: 5.0.1
|
202
188
|
type: :development
|
203
189
|
prerelease: false
|
204
190
|
version_requirements: !ruby/object:Gem::Requirement
|
205
191
|
requirements:
|
206
|
-
- - "
|
192
|
+
- - "~>"
|
207
193
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
194
|
+
version: 5.0.1
|
209
195
|
- !ruby/object:Gem::Dependency
|
210
196
|
name: msgpack
|
211
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -277,6 +263,7 @@ files:
|
|
277
263
|
- README.md
|
278
264
|
- Rakefile.rb
|
279
265
|
- TODO.md
|
266
|
+
- ext/active_record/associations.rb
|
280
267
|
- ext/active_record/associations/association.rb
|
281
268
|
- ext/active_record/associations/collection_association.rb
|
282
269
|
- ext/active_record/attribute_methods.rb
|
@@ -318,8 +305,13 @@ files:
|
|
318
305
|
- test/active_record/eager_loading_test.rb
|
319
306
|
- test/active_record/persistance_test.rb
|
320
307
|
- test/active_record/preload_test.rb
|
308
|
+
- test/active_record/query/all_test.rb
|
309
|
+
- test/active_record/query/count_test.rb
|
310
|
+
- test/active_record/query/distinct_test.rb
|
311
|
+
- test/active_record/query/find_test.rb
|
312
|
+
- test/active_record/query/where_test.rb
|
321
313
|
- test/active_record/query_test.rb
|
322
|
-
- test/
|
314
|
+
- test/schema_mock.rb
|
323
315
|
- test/sunstone/connection/configuration_test.rb
|
324
316
|
- test/sunstone/connection/cookie_store_test.rb
|
325
317
|
- test/sunstone/connection/request_helper_test.rb
|
@@ -355,8 +347,13 @@ test_files:
|
|
355
347
|
- test/active_record/eager_loading_test.rb
|
356
348
|
- test/active_record/persistance_test.rb
|
357
349
|
- test/active_record/preload_test.rb
|
350
|
+
- test/active_record/query/all_test.rb
|
351
|
+
- test/active_record/query/count_test.rb
|
352
|
+
- test/active_record/query/distinct_test.rb
|
353
|
+
- test/active_record/query/find_test.rb
|
354
|
+
- test/active_record/query/where_test.rb
|
358
355
|
- test/active_record/query_test.rb
|
359
|
-
- test/
|
356
|
+
- test/schema_mock.rb
|
360
357
|
- test/sunstone/connection/configuration_test.rb
|
361
358
|
- test/sunstone/connection/cookie_store_test.rb
|
362
359
|
- test/sunstone/connection/request_helper_test.rb
|
data/test/models.rb
DELETED
@@ -1,115 +0,0 @@
|
|
1
|
-
WebMock::StubRegistry.instance.global_stubs.push(
|
2
|
-
WebMock::RequestStub.new(:get, "http://example.com/ping").to_return(
|
3
|
-
body: "pong",
|
4
|
-
headers: { 'StandardAPI-Version' => '5.0.0.5' }
|
5
|
-
),
|
6
|
-
|
7
|
-
WebMock::RequestStub.new(:get, "http://example.com/tables").to_return(
|
8
|
-
body: %w(ships fleets sailors).to_json,
|
9
|
-
headers: { 'StandardAPI-Version' => '5.0.0.5' }
|
10
|
-
),
|
11
|
-
|
12
|
-
WebMock::RequestStub.new(:get, "http://example.com/ships/schema").to_return(
|
13
|
-
body: {
|
14
|
-
columns: {
|
15
|
-
id: {type: 'integer', primary_key: true, null: false, array: false},
|
16
|
-
fleet_id: {type: 'integer', primary_key: false, null: true, array: false},
|
17
|
-
name: {type: 'string', primary_key: false, null: true, array: false}
|
18
|
-
},
|
19
|
-
limit: 100
|
20
|
-
}.to_json,
|
21
|
-
headers: { 'StandardAPI-Version' => '5.0.0.5' }
|
22
|
-
),
|
23
|
-
|
24
|
-
WebMock::RequestStub.new(:get, "http://example.com/fleets/schema").to_return(
|
25
|
-
body: {
|
26
|
-
columns: {
|
27
|
-
id: {type: 'integer', primary_key: true, null: false, array: false},
|
28
|
-
name: {type: 'string', primary_key: false, null: true, array: false}
|
29
|
-
},
|
30
|
-
limit: nil
|
31
|
-
}.to_json,
|
32
|
-
headers: { 'StandardAPI-Version' => '5.0.0.5' }
|
33
|
-
),
|
34
|
-
|
35
|
-
WebMock::RequestStub.new(:get, "http://example.com/sailors/schema").to_return(
|
36
|
-
body: {
|
37
|
-
columns: {
|
38
|
-
id: {type: 'integer', primary_key: true, null: false, array: false},
|
39
|
-
name: {type: 'string', primary_key: false, null: true, array: false}
|
40
|
-
},
|
41
|
-
limit: 100
|
42
|
-
}.to_json,
|
43
|
-
headers: { 'StandardAPI-Version' => '5.0.0.5' }
|
44
|
-
),
|
45
|
-
|
46
|
-
WebMock::RequestStub.new(:get, "http://example.com/sailors_ships/schema").to_return(
|
47
|
-
body: {
|
48
|
-
columns: {
|
49
|
-
sailor_id: {type: 'integer', primary_key: false, null: false, array: false},
|
50
|
-
ship_id: {type: 'integer', primary_key: false, null: true, array: false}
|
51
|
-
},
|
52
|
-
limit: 100
|
53
|
-
}.to_json,
|
54
|
-
headers: { 'StandardAPI-Version' => '5.0.0.5' }
|
55
|
-
),
|
56
|
-
|
57
|
-
WebMock::RequestStub.new(:get, "http://example.com/countries/schema").to_return(
|
58
|
-
body: {
|
59
|
-
columns: {
|
60
|
-
id: {type: 'integer', primary_key: true, null: false, array: false},
|
61
|
-
name: {type: 'string', primary_key: false, null: true, array: false}
|
62
|
-
},
|
63
|
-
limit: 100
|
64
|
-
}.to_json,
|
65
|
-
headers: { 'StandardAPI-Version' => '5.0.0.5' }
|
66
|
-
),
|
67
|
-
|
68
|
-
WebMock::RequestStub.new(:get, "http://example.com/ownerships/schema").to_return(
|
69
|
-
body: {
|
70
|
-
columns: {
|
71
|
-
country_id: {type: 'integer', primary_key: false, null: false, array: false},
|
72
|
-
asset_type: {type: 'string', primary_key: false, null: false, array: false},
|
73
|
-
asset_id: {type: 'integer', primary_key: false, null: true, array: false}
|
74
|
-
},
|
75
|
-
limit: 100
|
76
|
-
}.to_json,
|
77
|
-
headers: { 'StandardAPI-Version' => '5.0.0.5' }
|
78
|
-
)
|
79
|
-
)
|
80
|
-
|
81
|
-
class ExampleRecord < ActiveRecord::Base
|
82
|
-
self.abstract_class = true
|
83
|
-
end
|
84
|
-
|
85
|
-
ExampleRecord.establish_connection(
|
86
|
-
adapter: 'sunstone',
|
87
|
-
url: 'http://example.com'
|
88
|
-
)
|
89
|
-
|
90
|
-
class Fleet < ExampleRecord
|
91
|
-
has_many :ships
|
92
|
-
end
|
93
|
-
|
94
|
-
class Ship < ExampleRecord
|
95
|
-
belongs_to :fleet
|
96
|
-
|
97
|
-
has_and_belongs_to_many :sailors
|
98
|
-
|
99
|
-
has_many :ownerships, as: :asset
|
100
|
-
has_many :nations, through: :ownerships, source: :country, inverse_of: :ships
|
101
|
-
end
|
102
|
-
|
103
|
-
class Sailor < ExampleRecord
|
104
|
-
has_and_belongs_to_many :ships
|
105
|
-
end
|
106
|
-
|
107
|
-
class Country < ExampleRecord
|
108
|
-
has_many :ownerships
|
109
|
-
has_many :fleets, through: :ownerships
|
110
|
-
end
|
111
|
-
|
112
|
-
class Ownership < ExampleRecord
|
113
|
-
belongs_to :country
|
114
|
-
belongs_to :asset, polymorphic: true
|
115
|
-
end
|