You need to sign in to do that
Don't have an account?

I'm having problems writing a test class for this trigger
Here's my Trigger:
trigger SoldCustomer on Opportunity (after update) {
for (Opportunity opp : Trigger.new) {
if (opp.Account.Type != 'Customer' && opp.StageName == 'Sold' && opp.Account.Type != null) {
opp.Account.Type = 'Customer';
}
}
}
Here's my Test Class:
@isTest
private class SoldCustomerTest {
@isTest static void CreateOpp() {
// Create Account
Account acc = new Account();
acc.Name = 'Created Account';
acc.Type = 'Prospect';
String accId = acc.Id;
Opportunity opp = new Opportunity();
opp.StageName = 'Discovery';
opp.CloseDate = date.parse('12/27/2019');
opp.Name = 'Sold Customer Test Opp';
opp.AccountId = accId;
}
@isTest static void UpdateOpp() {
List<Opportunity> records = [
SELECT Id FROM Opportunity WHERE Name = 'Sold Customer Test Opp'
];
for (Opportunity record : records) {
record.StageName = 'Sold';
}
update records;
}
}
When I run the test class, it shows no coverage for the trigger. This is my 2nd trigger and I'm really excited about asking my first question. Hopefully, someone can help. Thanks in advance!
trigger SoldCustomer on Opportunity (after update) {
for (Opportunity opp : Trigger.new) {
if (opp.Account.Type != 'Customer' && opp.StageName == 'Sold' && opp.Account.Type != null) {
opp.Account.Type = 'Customer';
}
}
}
Here's my Test Class:
@isTest
private class SoldCustomerTest {
@isTest static void CreateOpp() {
// Create Account
Account acc = new Account();
acc.Name = 'Created Account';
acc.Type = 'Prospect';
String accId = acc.Id;
Opportunity opp = new Opportunity();
opp.StageName = 'Discovery';
opp.CloseDate = date.parse('12/27/2019');
opp.Name = 'Sold Customer Test Opp';
opp.AccountId = accId;
}
@isTest static void UpdateOpp() {
List<Opportunity> records = [
SELECT Id FROM Opportunity WHERE Name = 'Sold Customer Test Opp'
];
for (Opportunity record : records) {
record.StageName = 'Sold';
}
update records;
}
}
When I run the test class, it shows no coverage for the trigger. This is my 2nd trigger and I'm really excited about asking my first question. Hopefully, someone can help. Thanks in advance!
Use Insert operation on account and opportunity records to insert and then make changes and update the records.
Trigger
Test Class
@isTest
private class SoldCustomerTest {
@isTest static void CreateOpp() {
// Create Account
Account acc = new Account();
// Set required values for account
acc.Name = 'Created Account';
acc.Type = 'Prospect';
String accId = acc.Id;
insert acc;
// Create opp and set values
Opportunity opp = new Opportunity();
opp.StageName = 'Discovery';
opp.CloseDate = date.parse('12/27/2019');
opp.Name = 'Sold Customer Test Opp';
opp.AccountId = accId;
insert opp;
// Update opp to sold
opp.StageName = 'Sold';
update opp;
}
@isTest static void UpdateOpp() {
// Create Account
List<Opportunity> records = [SELECT Id
FROM Opportunity
WHERE Name = 'Sold Customer Test Opp'];
for (Opportunity record : records) {
record.StageName = 'Sold';
}
update records;
}
}
Now I get 67% coverage.