async def METHOD_NAME():
    expected_do_events = [ActionExecuted("do")]
    form_name = "my form"
    class MyLoop(LoopAction):
        def name(self) -> Text:
            return form_name
        async def activate(self, *args: Any) -> List[Event]:
            raise ValueError("this shouldn't be called")
        async def do(self, *args: Any) -> List[Event]:
            return expected_do_events
        async def deactivate(self, *args) -> List[Event]:
            return [SlotSet("deactivated")]
        async def is_activated(self, *args: Any) -> bool:
            return True
        async def is_done(self, *args) -> bool:
            return False
    tracker = DialogueStateTracker.from_events("some sender", [])
    domain = Domain.empty()
    action = MyLoop()
    actual = await action.run(
        CollectingOutputChannel(),
        TemplatedNaturalLanguageGenerator(domain.responses),
        tracker,
        domain,
    )
    assert actual == [*expected_do_events]