Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F5811065
stats_test.exs
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
stats_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.StatsTest
do
use
Pleroma.DataCase
import
Pleroma.Factory
alias
Pleroma.Web.CommonAPI
describe
"user count"
do
test
"it ignores internal users"
do
_user
=
insert
(
:user
,
local
:
true
)
_internal
=
insert
(
:user
,
local
:
true
,
nickname
:
nil
)
_internal
=
Pleroma.Web.ActivityPub.Relay
.
get_actor
()
assert
match?
(%{
stats
:
%{
user_count
:
1
}},
Pleroma.Stats
.
calculate_stat_data
())
end
end
describe
"status visibility sum count"
do
test
"on new status"
do
instance2
=
"instance2.tld"
user
=
insert
(
:user
)
other_user
=
insert
(
:user
,
%{
ap_id
:
"https://
#{
instance2
}
/@actor"
})
CommonAPI
.
post
(
user
,
%{
visibility
:
"public"
,
status
:
"hey"
})
Enum
.
each
(
0
..
1
,
fn
_
->
CommonAPI
.
post
(
user
,
%{
visibility
:
"unlisted"
,
status
:
"hey"
})
end
)
Enum
.
each
(
0
..
2
,
fn
_
->
CommonAPI
.
post
(
user
,
%{
visibility
:
"direct"
,
status
:
"hey @
#{
other_user
.
nickname
}
"
})
end
)
Enum
.
each
(
0
..
3
,
fn
_
->
CommonAPI
.
post
(
user
,
%{
visibility
:
"private"
,
status
:
"hey"
})
end
)
assert
%{
"direct"
=>
3
,
"private"
=>
4
,
"public"
=>
1
,
"unlisted"
=>
2
}
=
Pleroma.Stats
.
get_status_visibility_count
()
end
test
"on status delete"
do
user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
visibility
:
"public"
,
status
:
"hey"
})
assert
%{
"public"
=>
1
}
=
Pleroma.Stats
.
get_status_visibility_count
()
CommonAPI
.
delete
(
activity
.
id
,
user
)
assert
%{
"public"
=>
0
}
=
Pleroma.Stats
.
get_status_visibility_count
()
end
test
"on status visibility update"
do
user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
visibility
:
"public"
,
status
:
"hey"
})
assert
%{
"public"
=>
1
,
"private"
=>
0
}
=
Pleroma.Stats
.
get_status_visibility_count
()
{
:ok
,
_
}
=
CommonAPI
.
update_activity_scope
(
activity
.
id
,
%{
visibility
:
"private"
})
assert
%{
"public"
=>
0
,
"private"
=>
1
}
=
Pleroma.Stats
.
get_status_visibility_count
()
end
test
"doesn't count unrelated activities"
do
user
=
insert
(
:user
)
other_user
=
insert
(
:user
)
{
:ok
,
activity
}
=
CommonAPI
.
post
(
user
,
%{
visibility
:
"public"
,
status
:
"hey"
})
_
=
CommonAPI
.
follow
(
user
,
other_user
)
CommonAPI
.
favorite
(
other_user
,
activity
.
id
)
CommonAPI
.
repeat
(
activity
.
id
,
other_user
)
assert
%{
"direct"
=>
0
,
"private"
=>
0
,
"public"
=>
1
,
"unlisted"
=>
0
}
=
Pleroma.Stats
.
get_status_visibility_count
()
end
end
describe
"status visibility by instance count"
do
test
"single instance"
do
local_instance
=
Pleroma.Web.Endpoint
.
url
()
|>
String
.
split
(
"//"
)
|>
Enum
.
at
(
1
)
instance2
=
"instance2.tld"
user1
=
insert
(
:user
)
user2
=
insert
(
:user
,
%{
ap_id
:
"https://
#{
instance2
}
/@actor"
})
CommonAPI
.
post
(
user1
,
%{
visibility
:
"public"
,
status
:
"hey"
})
Enum
.
each
(
1
..
5
,
fn
_
->
CommonAPI
.
post
(
user1
,
%{
visibility
:
"unlisted"
,
status
:
"hey"
})
end
)
Enum
.
each
(
1
..
10
,
fn
_
->
CommonAPI
.
post
(
user1
,
%{
visibility
:
"direct"
,
status
:
"hey @
#{
user2
.
nickname
}
"
})
end
)
Enum
.
each
(
1
..
20
,
fn
_
->
CommonAPI
.
post
(
user2
,
%{
visibility
:
"private"
,
status
:
"hey"
})
end
)
assert
%{
"direct"
=>
10
,
"private"
=>
0
,
"public"
=>
1
,
"unlisted"
=>
5
}
=
Pleroma.Stats
.
get_status_visibility_count
(
local_instance
)
assert
%{
"direct"
=>
0
,
"private"
=>
20
,
"public"
=>
0
,
"unlisted"
=>
0
}
=
Pleroma.Stats
.
get_status_visibility_count
(
instance2
)
end
end
end
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Aug 14, 3:29 AM (23 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
305564
Default Alt Text
stats_test.exs (3 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment