jam-cloud/ruby/spec/jam_ruby/models/latency_tester_spec.rb

56 lines
2.2 KiB
Ruby

require 'spec_helper'
describe LatencyTester do
let(:params) {{client_id: 'abc', ip_address: '10.1.1.1', connection_stale_time:40, connection_expire_time:60, channel_id: '1', gateway: 'gateway1'} }
it "success" do
latency_tester = FactoryGirl.create(:latency_tester)
latency_tester.connection.should_not be_nil
latency_tester.connection.latency_tester.should_not be_nil
end
describe "connect" do
it "no existing latency tester" do
latency_tester = LatencyTester.connect(params)
latency_tester.errors.any?.should be_false
latency_tester.connection.ip_address.should == params[:ip_address]
latency_tester.connection.stale_time.should == params[:connection_stale_time]
latency_tester.connection.expire_time.should == params[:connection_expire_time]
end
it "existing latency tester, no connection" do
latency_tester = FactoryGirl.create(:latency_tester, client_id: params[:client_id], make_connection: false)
latency_tester.connection.should be_nil
latency_tester.client_id = params[:client_id]
latency_tester.save!
found = LatencyTester.connect(params)
found.should == latency_tester
found.connection.should_not be_nil
found.connection.aasm_state.should == Connection::CONNECT_STATE.to_s
found.connection.client_id.should == latency_tester.client_id
end
it "existing latency tester, existing connection" do
latency_tester = FactoryGirl.create(:latency_tester)
latency_tester.connection.aasm_state = Connection::STALE_STATE.to_s
latency_tester.save!
set_updated_at(latency_tester.connection, 6.hours.ago)
params[:client_id] = latency_tester.connection.client_id
found = LatencyTester.connect(params)
found.should == latency_tester
found.connection.should == latency_tester.connection
# state should have refreshed from stale to connected
found.connection.aasm_state.should == Connection::CONNECT_STATE.to_s
# updated_at needs to be poked on connection to keep stale non-stale
(found.connection.updated_at - latency_tester.connection.updated_at).to_i.should == 60 * 60 * 6 # 6hours
end
end
end