Skip to content

Commit

Permalink
Added some better catching.
Browse files Browse the repository at this point in the history
  • Loading branch information
Winslett committed Feb 27, 2012
1 parent 594a28b commit ded2377
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 1 deletion.
36 changes: 36 additions & 0 deletions models/call.rb
@@ -0,0 +1,36 @@
class Call
class << self
def create(attributes)
sender = User.find_by_phone(attributes["From"])

recipients = User.all().find_all { |u| u["_id"] != sender["_id"] }
recipients = recipients.map { |u| {"name" => u["name"], "phone" => u["phone"], "_id" => u["_id"]} }

document = {
"sender" => {
"name" => sender["name"],
"phone" => sender["phone"],
"_id" => sender["_id"]
},
"body" => attributes["Body"],
"recipients" => recipients
}

id = self.collection.insert(document)

self.find(id)
end

def find(id)
self.collection.find_one("_id" => id)
end

def all
self.collection.find().to_a
end

def collection
$db.collection("calls")
end
end
end
16 changes: 16 additions & 0 deletions spec/integration/phone_call_spec.rb
Expand Up @@ -43,6 +43,22 @@ def app
RESPONSE
end

it "redirects you back to connection if you cannot type" do
caller = User.create(new_user_attributes)
recipient = User.create(new_user_attributes)

post "/connect_extension", sms_attributes("From" => caller["phone"], "Digits" => "35235")

last_response.status.should eq(200)
last_response.body.should == <<-RESPONSE
<?xml version='1.0' encoding='utf-8' ?>
<Response>
<Say>Error finding dialed extension. Please try again.</Say>
<Redirect>http://example.org/connect_extension</Redirect>
</Response>
RESPONSE
end

it "does not offer to connect you if we don't know you" do
caller = new_user_attributes
recipient = User.create(new_user_attributes)
Expand Down
21 changes: 21 additions & 0 deletions spec/unit/voice_spec.rb
@@ -0,0 +1,21 @@
require 'spec_helper'

describe Sms do

before do
User.collection.remove()
Sms.collection.remove()
end

it "creates messages" do
sender = User.create(new_user_attributes)

1.upto(5) do
User.create(new_user_attributes)
end

sms = Sms.create(sms_attributes("From" => sender["phone"]))
sms["recipients"].length.should == 5
end

end
9 changes: 8 additions & 1 deletion twilio_mongo_bootstrap.rb
Expand Up @@ -70,7 +70,14 @@ def base_url
haml :"voice_errors.xml"
else
@user = User.find_by_extension(@params["Digits"])
haml :"connect_extension.xml"

if @user.nil?
haml :"connect_extension_error.xml"
else
Call.create(@params.merge("recipient" => @user))

haml :"connect_extension.xml"
end
end
end
end
4 changes: 4 additions & 0 deletions views/connect_extension_error.xml.haml
@@ -0,0 +1,4 @@
!!! XML
%Response
%Say Error finding dialed extension. Please try again.
%Redirect #{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}/connect_extension

0 comments on commit ded2377

Please sign in to comment.