Slack announcements can be tested

This commit is contained in:
Filip Gralinski 2021-08-21 09:28:19 +02:00
parent 97021947be
commit 8417e20851
8 changed files with 35 additions and 0 deletions

View File

@ -62,6 +62,7 @@ import Handler.Dashboard
import Handler.Evaluate import Handler.Evaluate
import Handler.Swagger import Handler.Swagger
import Handler.Team import Handler.Team
import Handler.Announcements
-- This line actually creates our YesodDispatch instance. It is the second half -- This line actually creates our YesodDispatch instance. It is the second half
-- of the call to mkYesodData which occurs in Foundation.hs. Please see the -- of the call to mkYesodData which occurs in Foundation.hs. Please see the

View File

@ -166,6 +166,8 @@ instance Yesod App where
isAuthorized (EditAchievementR _) _ = isAdmin isAuthorized (EditAchievementR _) _ = isAdmin
isAuthorized ExtraPointsR _ = isAdmin isAuthorized ExtraPointsR _ = isAdmin
isAuthorized TestAnnouncementsR _ = isAdmin
isAuthorized DashboardR _ = regularAuthorization isAuthorized DashboardR _ = regularAuthorization
isAuthorized (ShowChallengeR _) _ = regularAuthorization isAuthorized (ShowChallengeR _) _ = regularAuthorization

23
Handler/Announcements.hs Normal file
View File

@ -0,0 +1,23 @@
module Handler.Announcements where
import Import
import Handler.Shared
getTestAnnouncementsR :: Handler Html
getTestAnnouncementsR = do
app <- getYesod
let webHook = appNewBestResultSlackHook $ appSettings app
let name = case appLocation $ appSettings app of
Just loc -> "Gonito@" ++ loc
Nothing -> "Gonito"
case webHook of
Just hook -> liftIO $ runSlackHook hook ("Test message from " ++ (slackLink app name ""))
Nothing -> return ()
defaultLayout $ do
setTitle "Test announcements"
$(widgetFile "test-announcements")

View File

@ -16,6 +16,8 @@
/api/test-progress/#Int/#Int TestProgressJsonR GET /api/test-progress/#Int/#Int TestProgressJsonR GET
/list-challenges ListChallengesR GET /list-challenges ListChallengesR GET
/test-announcements TestAnnouncementsR GET
/api/list-challenges ListChallengesJsonR GET /api/list-challenges ListChallengesJsonR GET
/api/leaderboard/#Text LeaderboardJsonR GET /api/leaderboard/#Text LeaderboardJsonR GET
/api/challenge-my-submissions/#Text ChallengeMySubmissionsJsonR GET /api/challenge-my-submissions/#Text ChallengeMySubmissionsJsonR GET

View File

@ -63,6 +63,7 @@ library
Handler.Swagger Handler.Swagger
Handler.JWT Handler.JWT
Handler.Team Handler.Team
Handler.Announcements
if flag(dev) || flag(library-only) if flag(dev) || flag(library-only)
cpp-options: -DDEVELOPMENT cpp-options: -DDEVELOPMENT

View File

@ -106,3 +106,4 @@ AsTeam: As team
InviteToTeam: Invite to team (give the identifier/login of a user) InviteToTeam: Invite to team (give the identifier/login of a user)
Join: Join Join: Join
NoTests: SOMETHING IS WRONG WITH THE CHALLENGE, THERE ARE NO TESTS DEFINED. MAYBE TEST DIRECTORY ARE MISSING OR THE CHALLENGE WAS CREATED/UPDATE IN THE INVALID MANNER NoTests: SOMETHING IS WRONG WITH THE CHALLENGE, THERE ARE NO TESTS DEFINED. MAYBE TEST DIRECTORY ARE MISSING OR THE CHALLENGE WAS CREATED/UPDATE IN THE INVALID MANNER
TestAnnouncements: test announcements

View File

@ -37,6 +37,7 @@
<li><a href="@{CoursesITeachR}">_{MsgCoursesITeach}</a> <li><a href="@{CoursesITeachR}">_{MsgCoursesITeach}</a>
<li><a href="@{ListArchivedChallengesR}">_{MsgShowArchivedChallenges}</a> <li><a href="@{ListArchivedChallengesR}">_{MsgShowArchivedChallenges}</a>
<li><a href="@{ListAnnotationsR}">_{MsgShowAnnotations}</a> <li><a href="@{ListAnnotationsR}">_{MsgShowAnnotations}</a>
<li><a href="@{TestAnnouncementsR}">_{MsgTestAnnouncements}</a>
<ul class="nav navbar-nav navbar-collapse collapse navbar-right"> <ul class="nav navbar-nav navbar-collapse collapse navbar-right">
<li class="dropdown"> <li class="dropdown">

View File

@ -0,0 +1,4 @@
$maybe _ <- webHook
<p>A test message was sent!
$nothing
<p>No webhook integrated. No test message sent.