How can I stop a managed trigger from executing while running a test class?
Asked Answered
K

2

6

Usually, when a trigger runs, we check what kind of a profile the user has, and if it's the kind where we don't want the triggers to run, then we exit the trigger before running any other code.

Problem: we have a SF package installed that we purchased from some other company, and all of its code is invisible to us, and is not editable. How can we stop some of those triggers from running other than manually disabling them through UI? I want to temporarily disable them while running a test class.

Was thinking about doing something like this, but got an error saying "DML not allowed on ApexTrigger."

ApexTrigger at = [select id from ApexTrigger where name='SomeTriggerName'];
at.status = 'Inactive';
update at;
Kinna answered 26/1, 2012 at 18:35 Comment(2)
Do you have a good reason for wanting to disable it? I know test coverage is a pain, but it should be testing a real world scenario - if the trigger is going to run in the real world you want to make sure your code works with it!Carcajou
The reason I need to disable it is because the test class checks many scenarios, and the packaged triggers run multiple SOQL statements, execution of which I cannot control. Before I can get the test coverage up to 100%, the SOQL query count hits the governor limit of 100 in the packaged namespace.Kinna
E
4

I've tried doing something similar, and got stuck. I don't believe there's a way to do what you're asking without having the owner of the managed package update the Apex Code.

The approach you listed before the problem is a great solution; I would recommend using Custom Settings in addition, though. You could recommend to the owner/developer of the Trigger to implement a Custom Settings check before executing the Trigger(s). That's the best solution I could come up with for some of my own Triggers.

It would be great if the ApexTrigger object could be updated, but Salesforce doesn't allow it.

Explosion answered 26/1, 2012 at 18:57 Comment(0)
F
1

I believe your only options are to uninstall or undeploy the managed package.

Filiate answered 26/1, 2012 at 18:59 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.