You need to sign in to do that
Don't have an account?
Chitral Chadda
ur parent account type is set to prospect then.
help with test class
test class issue
trigger setAccountToProspect on Opportunity (after insert , after update) { set<id> accId = new set<id>(); for(opportunity op :trigger.new) { if(op.AccountId!=null) { accId.add(op.AccountId); } } list<account> accMap = [ select Type from account where id IN : accId ]; map<id,account> accMaps = new map<id,account>(); for(account a :accMap) { accMaps.put(a.id,a); } // map<id,account> accMaps = new map<id,account>([select id, Type from account where id IN : accId ]); list<account> ac = new list<account>(); for(opportunity o :trigger.new) { if(accMaps.get(o.accountid).Type=='Other') { if(o.StageName=='Prospecting' || o.StageName=='Qualification' || o.StageName=='Needs Analysis') { account a = accMaps.get(o.Accountid); a.Type = 'Prospect'; ac.add(a); } } } update ac; }hello whenever from opportunity if stage name is prospecting,qualification etc
ur parent account type is set to prospect then.
@isTest public class testsetAccountToProspect { static testMethod void updateaccount() { account acct = new account(); acct.name='ABC'; acct.Type='Other'; insert acct; opportunity oppt = new opportunity(Accountid=acct.id); oppt.StageName='Prospecting'; oppt.Name='Test'; oppt.closeDate = date.today() + 30; insert oppt; acct = [ select id,type from account where id=: acct.id]; system.assertequals('Prospect',acct.Type); } }
help with test class
I have modified the trigger and test class. Please check this:
Trigger:
trigger oppaccupdt on opportunity(after insert, after update) {
set<id> accids=new set<id>();
list<account> acclist= new list<account> ();
list<account> accupdate= new list<account> ();
map<id,account> accmap= new map<id,account>();
for(opportunity opp:trigger.new) {
accids.add(opp.accountid);
}
acclist=[select id,type from account where id=:accids];
for(account a:acclist) {
accmap.put(a.id,a);
}
for(opportunity oppty:trigger.new) {
If(oppty.stagename=='Prospecting' || oppty.stagename=='Qualification') {
If(accmap.get(oppty.accountid).type=='Other') {
account acc= accmap.get(oppty.accountid);
acc.type='Prospect';
accupdate.add(acc);
}
}
}
If(accupdate.size() > 0)
update accupdate;
}
TestClass:
@istest
Public class testopptrgr {
private static testmethod void testmethodopp() {
account acct = new account();
acct.name='ABC123';
acct.Type='Other';
insert acct;
id accid=acct.id;
opportunity oppt = new opportunity();
oppt.accountid=accid;
oppt.StageName='Prospecting';
oppt.Name='Test';
oppt.closeDate = date.today() + 30;
insert oppt;
acct = [ select id,type from account where id=: acct.id];
system.assertequals('Prospect',acct.Type);
}
}
It gave me 100% code coverage.Try this and let me know how it goes.
Thanks,
Pratik
All Answers
You can update the opportunity to stage Qualification and Need analysis aso the OR part will be covered.
What issue you are cusarrently facinf in this test class?
Thanks,
Pratik
Here is the test class for 100% coverage:
Test Class:
@isTest
public class testsetAccountToProspect
{
static testMethod void updateaccount()
{
account acct = new account();
acct.name='ABC';
acct.Type='Other';
insert acct;
opportunity oppt = new opportunity(Accountid=acct.id);
oppt.StageName='Prospecting';
oppt.Name='Test';
oppt.closeDate = date.today() + 30;
insert oppt;
acct = [ select id,type from account where id=: acct.id];
system.assertequals('Prospect',acct.Type);
oppt.stagename='Needs Analysis';
update oppt;
oppt.stagename='Qualification';
update oppt;
}
}
I tried and it return 100% test coverage for the trigger.
Thanks,
Pratik
P.S. If this answers you question, please mark it as "Best Answer" so it will help other community members too.
again i copy pasted ur code nd got this error
System.AssertException: Assertion Failed: Expected: Prospect, Actual: Other
Can you please try it by removing the System.assertequals statement and then rune the test class.
The System.assertequals statement is giving the different result than the expected "Prospect" value.
Thanks,
Pratik
but its not showing code coverage still
0%
I have modified the trigger and test class. Please check this:
Trigger:
trigger oppaccupdt on opportunity(after insert, after update) {
set<id> accids=new set<id>();
list<account> acclist= new list<account> ();
list<account> accupdate= new list<account> ();
map<id,account> accmap= new map<id,account>();
for(opportunity opp:trigger.new) {
accids.add(opp.accountid);
}
acclist=[select id,type from account where id=:accids];
for(account a:acclist) {
accmap.put(a.id,a);
}
for(opportunity oppty:trigger.new) {
If(oppty.stagename=='Prospecting' || oppty.stagename=='Qualification') {
If(accmap.get(oppty.accountid).type=='Other') {
account acc= accmap.get(oppty.accountid);
acc.type='Prospect';
accupdate.add(acc);
}
}
}
If(accupdate.size() > 0)
update accupdate;
}
TestClass:
@istest
Public class testopptrgr {
private static testmethod void testmethodopp() {
account acct = new account();
acct.name='ABC123';
acct.Type='Other';
insert acct;
id accid=acct.id;
opportunity oppt = new opportunity();
oppt.accountid=accid;
oppt.StageName='Prospecting';
oppt.Name='Test';
oppt.closeDate = date.today() + 30;
insert oppt;
acct = [ select id,type from account where id=: acct.id];
system.assertequals('Prospect',acct.Type);
}
}
It gave me 100% code coverage.Try this and let me know how it goes.
Thanks,
Pratik
thnkyou dear...
it works fine with ur code
bt strange why its nt showing any coverage in my code ..
Glad it helped!
You can check for any conflicts with your trigger i.e. any other trigger or workflow may be changing the stage value.
Thanks,
Pratik