@@ -158,6 +158,19 @@ def self.build_tables
158158
159159 end
160160
161+ def compare_to_server ( model , expression , expected_result , load = true )
162+ server_side = eval ( "#{ model . class } .find(#{ model . id } ).#{ expression } " )
163+ expect ( server_side ) . to eq ( expected_result )
164+ be_expected_result = expected_result . is_a? ( Array ) ? contain_exactly ( *expected_result ) : eq ( expected_result )
165+ if load
166+ expect_promise ( "Hyperstack::Model.load { #{ model . class } .find(#{ model . id } ).#{ expression } }" )
167+ . to be_expected_result
168+ else
169+ wait_for_ajax
170+ expect_evaluate_ruby ( "#{ model . class } .find(#{ model . id } ).#{ expression } " ) . to be_expected_result
171+ end
172+ end
173+
161174 context "simple polymorphic relationship" do
162175 before ( :each ) do
163176 @imageable1 = Employee . create ( name : 'imageable1' , ss : '123' )
@@ -170,18 +183,6 @@ def self.build_tables
170183
171184 end
172185
173- def compare_to_server ( model , expression , expected_result , load = true )
174- server_side = eval ( "#{ model . class } .find(#{ model . id } ).#{ expression } " )
175- expect ( server_side ) . to eq ( expected_result )
176- be_expected_result = expected_result . is_a? ( Array ) ? contain_exactly ( *expected_result ) : eq ( expected_result )
177- if load
178- expect_promise ( "Hyperstack::Model.load { #{ model . class } .find(#{ model . id } ).#{ expression } }" )
179- . to be_expected_result
180- else
181- wait_for_ajax
182- expect_evaluate_ruby ( "#{ model . class } .find(#{ model . id } ).#{ expression } " ) . to be_expected_result
183- end
184- end
185186
186187 it 'read belongs_to' do
187188 compare_to_server @picture11 , 'imageable.name' , 'imageable1'
@@ -281,30 +282,36 @@ def compare_to_server(model, expression, expected_result, load=true)
281282
282283 it 'loads previously defined data client side' do
283284 @uzer1 . groups << @group1
284- # run this on client after above
285- expect ( @group1 . uzers . collect ( &:id ) ) . to eq [ @uzer1 . id ]
285+ compare_to_server @group1 , 'uzers.collect(&:id)' , [ @uzer1 . id ]
286286 end
287287
288288 it 'creates due to a broadcast client side' do
289- expect ( @group1 . uzers . count ) . to eq ( 0 ) # client side
289+ compare_to_server @group1 , ' uzers.collect(&:id)' , [ ] # client side
290290 @uzer1 . groups << @group1 # server side
291- expect ( @group1 . uzers . collect ( &:id ) ) . to eq [ @uzer1 . id ] # client side
291+ compare_to_server @group1 , ' uzers.collect(&:id)' , [ @uzer1 . id ] , false # client side
292292 end
293293
294294 it 'destroys due to a broadcast client side' do
295295 @uzer1 . groups << @group1 # server side
296- expect ( @group1 . uzers . collect ( &:id ) ) . to eq [ @uzer1 . id ] # client
296+ compare_to_server @group1 , ' uzers.collect(&:id)' , [ @uzer1 . id ] # client
297297 Membership . find_by ( uzer : @uzer1 , memerable : @group1 ) . destroy # server side
298- expect ( @group1 . uzers . count ) . to eq ( 0 ) # client side
298+ compare_to_server @group1 , ' uzers.count' , 0 # client side
299299 end
300300
301301 it 'updates the server when new entries are made on the client' do
302- @uzer1 . groups << @group1 # client side
303- @uzer1 . save # needed for client side semantics
304- expect ( @group1 . uzers . collect ( &:id ) ) . to eq [ @uzer1 . id ] # server side
302+ # Not Working!
303+ evaluate_promise do
304+ uzer = Uzer . find ( 1 )
305+ group = Group . find ( 1 )
306+ uzer . groups << group # client side
307+ group . save # needed for client side semantics
308+ end
309+ binding . pry
310+ compare_to_server @group1 , 'uzers.collect(&:id)' , [ @uzer1 . id ] # server side
305311 end
306312
307313 it 'updates the server when entries are deleted on the client' do
314+ # Not converted to client side execution
308315 @uzer1 . groups << @group1 # server side
309316 Membership . find_by ( uzer : @uzer1 , memerable : @group1 ) . destroy # client side
310317 expect ( @group1 . uzers . count ) . to eq ( 0 ) # server side
0 commit comments