# activitypub-testing uml ```plantuml interface TestCase interface TestRule { input applicability target expectations run } TestCase <|-- TestRule TestRule <|-- ActivityPubTestingRule ``` ```plantuml @startuml component actor testRunner actor testDeveloper rectangle providerA { database dbA node activityPubServerA } rectangle providerB { node activityPubServerB } rectangle hobbyistC { node activityPubServerC database dbC rectangle testingSection { (actor tester ui c) } } rectangle activitypub-testing { dbA <-> activityPubServerA dbC <-> activityPubServerC activityPubServerB <--> activityPubServerA activityPubServerA <--> (runTest) activityPubServerB <--> (runTest) activityPubServerC <--> (runTest) (cli) -> (testActor) (testActor) -> (runTest) (cli) -> (runTest) } (testActor) <-- (actor tester ui c) rectangle activitypub-testing-website { (actor tester ui) --> (testActor) (test case) (test case list) --> (test case) } (test case) <-- testRunner (test case list) <-- testRunner testRunner --> (actor tester ui) (cli) <-- testRunner (cli) <-- testDeveloper testDeveloper -> (testSuite) (testSuite) <-- (testActor) (testSuite) <-- (runTest) actor alice alice --> (alice.client) (alice.client) --> activityPubServerA actor bengo bengo --> (bengo.client) bengo -> (cli) bengo -> (test case) bengo -> (test case list) bengo -> (actor tester ui) bengo ..> (actor tester ui c) (bengo.client) <--> activityPubServerA actor charlie charlie --> (charlie.client) charlie --> (actor tester ui c) (charlie.client) <--> activityPubServerC @enduml ``` ```plantuml @startuml left to right direction package SocialAppDevTeam { actor ServerDev as SD actor TestDev as TD } package SocialWebUser { actor Alice } package ActivityPubTesting { usecase "get tests" as UC_GT usecase "run test --slug <slug>" as UC_RTS usecase "test actor <uri>" as UC_TA } SD --> UC_TA SD --> UC_GT SD --> UC_RTS TD -> UC_GT TD -> UC_RTS Alice --> UC_TA @enduml ```