Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85197409
notification_test.exs
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
4 KB
Referenced Files
None
Subscribers
None
notification_test.exs
View Options
defmodule
Pleroma.NotificationTest
do
use
Pleroma.DataCase
alias
Pleroma.Web.TwitterAPI.TwitterAPI
alias
Pleroma
.
{
User
,
Notification
}
import
Pleroma.Factory
describe
"create_notifications"
do
test
"notifies someone when they are directly addressed"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
third_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
TwitterAPI
.
create_status
(
user
,
%{
"status"
=>
"hey @
#{
other_user
.
nickname
}
and @
#{
third_user
.
nickname
}
"
})
{
:ok
,
[
notification
,
other_notification
]}
=
Notification
.
create_notifications
(
activity
)
notified_ids
=
Enum
.
sort
([
notification
.
user_id
,
other_notification
.
user_id
])
assert
notified_ids
==
[
other_user
.
id
,
third_user
.
id
]
assert
notification
.
activity_id
==
activity
.
id
assert
other_notification
.
activity_id
==
activity
.
id
end
end
describe
"create_notification"
do
test
"it doesn't create a notification for user if the user blocks the activity author"
do
activity
=
insert
(
:note_activity
)
author
=
User
.
get_by_ap_id
(
activity
.
data
[
"actor"
])
user
=
insert
(
:user
)
{
:ok
,
user
}
=
User
.
block
(
user
,
author
)
assert
nil
==
Notification
.
create_notification
(
activity
,
user
)
end
test
"it doesn't create a notification for user if he is the activity author"
do
activity
=
insert
(
:note_activity
)
author
=
User
.
get_by_ap_id
(
activity
.
data
[
"actor"
])
assert
nil
==
Notification
.
create_notification
(
activity
,
author
)
end
end
describe
"get notification"
do
test
"it gets a notification that belongs to the user"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
TwitterAPI
.
create_status
(
user
,
%{
"status"
=>
"hey @
#{
other_user
.
nickname
}
"
})
{
:ok
,
[
notification
]}
=
Notification
.
create_notifications
(
activity
)
{
:ok
,
notification
}
=
Notification
.
get
(
other_user
,
notification
.
id
)
assert
notification
.
user_id
==
other_user
.
id
end
test
"it returns error if the notification doesn't belong to the user"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
TwitterAPI
.
create_status
(
user
,
%{
"status"
=>
"hey @
#{
other_user
.
nickname
}
"
})
{
:ok
,
[
notification
]}
=
Notification
.
create_notifications
(
activity
)
{
:error
,
_notification
}
=
Notification
.
get
(
user
,
notification
.
id
)
end
end
describe
"dismiss notification"
do
test
"it dismisses a notification that belongs to the user"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
TwitterAPI
.
create_status
(
user
,
%{
"status"
=>
"hey @
#{
other_user
.
nickname
}
"
})
{
:ok
,
[
notification
]}
=
Notification
.
create_notifications
(
activity
)
{
:ok
,
notification
}
=
Notification
.
dismiss
(
other_user
,
notification
.
id
)
assert
notification
.
user_id
==
other_user
.
id
end
test
"it returns error if the notification doesn't belong to the user"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
TwitterAPI
.
create_status
(
user
,
%{
"status"
=>
"hey @
#{
other_user
.
nickname
}
"
})
{
:ok
,
[
notification
]}
=
Notification
.
create_notifications
(
activity
)
{
:error
,
_notification
}
=
Notification
.
dismiss
(
user
,
notification
.
id
)
end
end
describe
"clear notification"
do
test
"it clears all notifications belonging to the user"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
third_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
TwitterAPI
.
create_status
(
user
,
%{
"status"
=>
"hey @
#{
other_user
.
nickname
}
and @
#{
third_user
.
nickname
}
!"
})
{
:ok
,
_notifs
}
=
Notification
.
create_notifications
(
activity
)
{
:ok
,
activity
}
=
TwitterAPI
.
create_status
(
user
,
%{
"status"
=>
"hey again @
#{
other_user
.
nickname
}
and @
#{
third_user
.
nickname
}
!"
})
{
:ok
,
_notifs
}
=
Notification
.
create_notifications
(
activity
)
Notification
.
clear
(
other_user
)
assert
Notification
.
for_user
(
other_user
)
==
[]
assert
Notification
.
for_user
(
third_user
)
!=
[]
end
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jun 29, 9:20 AM (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1611404
Default Alt Text
notification_test.exs (4 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment