So I suggest we refactor `activate` in Promotion as well or at least rethink how all promos are activated. Looping through line items here sounds like a really bad idea to me. Guess we agree on that?

Maybe `action.perform(line_item: line_item)`. But I'd rather not have such a general api with this payload. Honestly not so sure about how we move on here. Will update the PR with the `line_item: line_item` payload model for now.