Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F21967778
poll_view_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
poll_view_test.exs
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.MastodonAPI.PollViewTest
do
use
Pleroma.DataCase
alias
Pleroma.Object
alias
Pleroma.Web.CommonAPI
alias
Pleroma.Web.MastodonAPI.PollView
import
Pleroma.Factory
import
Tesla.Mock
setup
do
mock
(
fn
env
->
apply
(
HttpRequestMock
,
:request
,
[
env
])
end
)
:ok
end
test
"renders a poll"
do
user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"Is Tenshi eating a corndog cute?"
,
poll
:
%{
options
:
[
"absolutely!"
,
"sure"
,
"yes"
,
"why are you even asking?"
],
expires_in
:
20
}
})
object
=
Object
.
normalize
(
activity
)
expected
=
%{
emojis
:
[],
expired
:
false
,
id
:
to_string
(
object
.
id
),
multiple
:
false
,
options
:
[
%{
title
:
"absolutely!"
,
votes_count
:
0
},
%{
title
:
"sure"
,
votes_count
:
0
},
%{
title
:
"yes"
,
votes_count
:
0
},
%{
title
:
"why are you even asking?"
,
votes_count
:
0
}
],
voted
:
false
,
votes_count
:
0
,
voters_count
:
0
}
result
=
PollView
.
render
(
"show.json"
,
%{
object
:
object
})
expires_at
=
result
.
expires_at
result
=
Map
.
delete
(
result
,
:expires_at
)
assert
result
==
expected
expires_at
=
NaiveDateTime
.
from_iso8601!
(
expires_at
)
assert
NaiveDateTime
.
diff
(
expires_at
,
NaiveDateTime
.
utc_now
())
in
15
..
20
end
test
"detects if it is multiple choice"
do
user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"Which Mastodon developer is your favourite?"
,
poll
:
%{
options
:
[
"Gargron"
,
"Eugen"
],
expires_in
:
20
,
multiple
:
true
}
})
voter
=
insert
(
:user
)
object
=
Object
.
normalize
(
activity
)
{
:ok
,
_votes
,
object
}
=
CommonAPI
.
vote
(
voter
,
object
,
[
0
,
1
])
assert
match?
(
%{
multiple
:
true
,
voters_count
:
1
,
votes_count
:
2
},
PollView
.
render
(
"show.json"
,
%{
object
:
object
})
)
end
test
"detects emoji"
do
user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"What's with the smug face?"
,
poll
:
%{
options
:
[
":blank: sip"
,
":blank::blank: sip"
,
":blank::blank::blank: sip"
],
expires_in
:
20
}
})
object
=
Object
.
normalize
(
activity
)
assert
%{
emojis
:
[%{
shortcode
:
"blank"
}]}
=
PollView
.
render
(
"show.json"
,
%{
object
:
object
})
end
test
"detects vote status"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"Which input devices do you use?"
,
poll
:
%{
options
:
[
"mouse"
,
"trackball"
,
"trackpoint"
],
multiple
:
true
,
expires_in
:
20
}
})
object
=
Object
.
normalize
(
activity
)
{
:ok
,
_
,
object
}
=
CommonAPI
.
vote
(
other_user
,
object
,
[
1
,
2
])
result
=
PollView
.
render
(
"show.json"
,
%{
object
:
object
,
for
:
other_user
})
assert
result
[
:voted
]
==
true
assert
Enum
.
at
(
result
[
:options
],
1
)[
:votes_count
]
==
1
assert
Enum
.
at
(
result
[
:options
],
2
)[
:votes_count
]
==
1
end
test
"does not crash on polls with no end date"
do
object
=
Object
.
normalize
(
"https://skippers-bin.com/notes/7x9tmrp97i"
)
result
=
PollView
.
render
(
"show.json"
,
%{
object
:
object
})
assert
result
[
:expires_at
]
==
nil
assert
result
[
:expired
]
==
false
end
test
"doesn't strips HTML tags"
do
user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
status
:
"What's with the smug face?"
,
poll
:
%{
options
:
[
"<input type=\"date\">"
,
"<input type=\"date\" >"
,
"<input type=\"date\"/>"
,
"<input type=\"date\"></input>"
],
expires_in
:
20
}
})
object
=
Object
.
normalize
(
activity
)
assert
%{
options
:
[
%{
title
:
"<input type=\"date\">"
,
votes_count
:
0
},
%{
title
:
"<input type=\"date\" >"
,
votes_count
:
0
},
%{
title
:
"<input type=\"date\"/>"
,
votes_count
:
0
},
%{
title
:
"<input type=\"date\"></input>"
,
votes_count
:
0
}
]
}
=
PollView
.
render
(
"show.json"
,
%{
object
:
object
})
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Dec 28, 3:23 AM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
816144
Default Alt Text
poll_view_test.exs (4 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment