Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
D
diaspora
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Environments
Packages & Registries
Packages & Registries
Package Registry
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
diasporg
diaspora
Commits
83809c92
Commit
83809c92
authored
Oct 13, 2012
by
Gonzalo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor MessagesController
parent
811ef66b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
60 deletions
+71
-60
app/controllers/messages_controller.rb
app/controllers/messages_controller.rb
+11
-15
spec/controllers/messages_controller_spec.rb
spec/controllers/messages_controller_spec.rb
+60
-45
No files found.
app/controllers/messages_controller.rb
View file @
83809c92
...
...
@@ -3,29 +3,25 @@
# the COPYRIGHT file.
class
MessagesController
<
ApplicationController
include
ApplicationHelper
before_filter
:authenticate_user!
respond_to
:html
,
:mobile
respond_to
:json
,
:only
=>
:show
def
create
cnv
=
Conversation
.
joins
(
:conversation_visibilities
).
where
(
:id
=>
params
[
:conversation_id
],
:conversation_visibilities
=>
{
:person_id
=>
current_user
.
person_id
}).
first
conversation
=
Conversation
.
find
(
params
[
:conversation_id
])
if
cnv
message
=
Message
.
new
(
:conversation_id
=>
cnv
.
id
,
:text
=>
params
[
:message
][
:text
],
:author
=>
current_user
.
person
)
if
message
.
save
Rails
.
logger
.
info
(
"event=create type=comment user=
#{
current_user
.
diaspora_handle
}
status=success message=
#{
message
.
id
}
chars=
#{
params
[
:message
][
:text
].
length
}
"
)
Postzord
::
Dispatcher
.
build
(
current_user
,
message
).
post
else
flash
[
:error
]
=
I18n
.
t
(
'conversations.new_message.fail'
)
end
redirect_to
conversations_path
(
:conversation_id
=>
cnv
.
id
)
message
=
conversation
.
messages
.
build
(
:text
=>
params
[
:message
][
:text
],
:author
=>
current_user
.
person
)
if
message
.
save
Rails
.
logger
.
info
(
"event=create type=comment user=
#{
current_user
.
diaspora_handle
}
status=success message=
#{
message
.
id
}
chars=
#{
params
[
:message
][
:text
].
length
}
"
)
Postzord
::
Dispatcher
.
build
(
current_user
,
message
).
post
else
render
:nothing
=>
true
,
:status
=>
422
flash
[
:error
]
=
I18n
.
t
(
'conversations.new_message.fail'
)
end
redirect_to
conversations_path
(
:conversation_id
=>
conversation
.
id
)
end
end
spec/controllers/messages_controller_spec.rb
View file @
83809c92
...
...
@@ -6,99 +6,114 @@ require 'spec_helper'
describe
MessagesController
do
before
do
@user1
=
alice
@user2
=
bob
@aspect1
=
@user1
.
aspects
.
first
@aspect2
=
@user2
.
aspects
.
first
sign_in
:user
,
@user1
sign_in
:user
,
alice
end
describe
'#create'
do
before
do
@c
reate_hash
=
{
:author
=>
@user1
.
person
,
:participant_ids
=>
[
@user1
.
contacts
.
first
.
person
.
id
,
@user1
.
person
.
id
],
:subject
=>
'cool stuff'
,
:messages_attributes
=>
[
{
:author
=>
@user1
.
person
,
:text
=>
'stuff'
}
]
@c
onversation_params
=
{
:author
=>
alice
.
person
,
:participant_ids
=>
[
alice
.
contacts
.
first
.
person
.
id
,
alice
.
person
.
id
],
:subject
=>
'cool stuff'
,
:messages_attributes
=>
[
{
:author
=>
alice
.
person
,
:text
=>
'stuff'
}
]
}
end
context
"on my own post"
do
before
do
@c
nv
=
Conversation
.
create
(
@create_hash
)
@c
onversation
=
Conversation
.
create!
(
@conversation_params
)
end
context
"with a valid message"
do
before
do
@message_hash
=
{
:conversation_id
=>
@cnv
.
id
,
:message
=>
{
:text
=>
"here is something else"
}}
@message_params
=
{
:conversation_id
=>
@conversation
.
id
,
:message
=>
{
:text
=>
"here is something else"
}
}
end
it
'redirects to conversation'
do
lambda
{
post
:create
,
@message_
hash
lambda
{
post
:create
,
@message_
params
}.
should
change
(
Message
,
:count
).
by
(
1
)
response
.
code
.
should
==
'302'
response
.
should
redirect_to
(
conversations_path
(
:conversation_id
=>
@c
nv
))
response
.
status
.
should
==
302
response
.
should
redirect_to
(
conversations_path
(
:conversation_id
=>
@c
onversation
))
end
end
context
"with an empty message"
do
before
do
@message_hash
=
{
:conversation_id
=>
@cnv
.
id
,
:message
=>
{
:text
=>
" "
}}
@message_params
=
{
:conversation_id
=>
@conversation
.
id
,
:message
=>
{
:text
=>
" "
}
}
end
it
'redirects to conversation'
do
lambda
{
post
:create
,
@message_hash
}.
should_not
change
(
Message
,
:count
).
by
(
1
)
response
.
code
.
should
==
'302'
response
.
should
redirect_to
(
conversations_path
(
:conversation_id
=>
@cnv
))
it
'does not create the message'
do
lambda
{
post
:create
,
@message_params
}.
should_not
change
(
Message
,
:count
)
flash
[
:error
].
should
be_present
end
end
end
context
"on a post from a contact"
do
before
do
@create_hash
[
:author
]
=
@user2
.
person
@cnv
=
Conversation
.
create
(
@create_hash
)
@message_hash
=
{
:conversation_id
=>
@cnv
.
id
,
:message
=>
{
:text
=>
"here is something else"
}}
@conversation_params
[
:author
]
=
bob
.
person
@conversation
=
Conversation
.
create!
(
@conversation_params
)
@message_params
=
{
:conversation_id
=>
@conversation
.
id
,
:message
=>
{
:text
=>
"here is something else"
}
}
end
it
'comments'
do
post
:create
,
@message_
hash
response
.
code
.
should
==
'302'
response
.
should
redirect_to
(
conversations_path
(
:conversation_id
=>
@c
nv
))
post
:create
,
@message_
params
response
.
status
.
should
==
302
response
.
should
redirect_to
(
conversations_path
(
:conversation_id
=>
@c
onversation
))
end
it
"doesn't overwrite author_id"
do
new_user
=
FactoryGirl
.
create
(
:user
)
@message_hash
[
:author_id
]
=
new_user
.
person
.
id
.
to_s
post
:create
,
@message_hash
Message
.
find_by_text
(
@message_hash
[
:message
][
:text
]).
author_id
.
should
==
@user1
.
person
.
id
@message_params
[
:author_id
]
=
new_user
.
person
.
id
.
to_s
post
:create
,
@message_params
created_message
=
Message
.
find_by_text
(
@message_params
[
:message
][
:text
])
created_message
.
author
.
should
==
alice
.
person
end
it
"doesn't overwrite id"
do
old_message
=
Message
.
create
(
:text
=>
"hello"
,
:author_id
=>
@user1
.
person
.
id
,
:conversation_id
=>
@cnv
.
id
)
@message_hash
[
:id
]
=
old_message
.
id
post
:create
,
@message_hash
old_message
=
Message
.
create!
(
:text
=>
"hello"
,
:author_id
=>
alice
.
person
.
id
,
:conversation_id
=>
@conversation
.
id
)
@message_params
[
:id
]
=
old_message
.
id
post
:create
,
@message_params
old_message
.
reload
.
text
.
should
==
'hello'
end
end
context
'on a post from a stranger'
do
before
do
@create_hash
[
:author
]
=
eve
.
person
@create_hash
[
:participant_ids
]
=
[
eve
.
person
.
id
,
bob
.
person
.
id
]
@cnv
=
Conversation
.
create
(
@create_hash
)
@message_hash
=
{
:conversation_id
=>
@cnv
.
id
,
:message
=>
{
:text
=>
"here is something else"
}}
conversation
=
Conversation
.
create!
(
:author
=>
eve
.
person
,
:participant_ids
=>
[
eve
.
person
.
id
,
bob
.
person
.
id
]
)
@message_params
=
{
:conversation_id
=>
conversation
.
id
,
:message
=>
{
:text
=>
"here is something else"
}
}
end
it
'posts no comment'
do
post
:create
,
@message_hash
response
.
code
.
should
==
'422'
it
'does not create the message'
do
lambda
{
post
:create
,
@message_params
}.
should_not
change
(
Message
,
:count
)
flash
[
:error
].
should
be_present
end
end
end
end
\ No newline at end of file
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment