You need to sign in to do that
Don't have an account?
Abhishek Tiwari 25
System.DmlException: Update failed. First exception on row 0; first error: MISSING_ARGUMENT, Id not specified in an update call: []
I am getting error as
System.DmlException: Update failed. First exception on row 0; first error: MISSING_ARGUMENT, Id not specified in an update call: [] while executing my test class for trigger Please suggest:
Trigger:
trigger selectOneCheckbox on Survey_Mcd__c (before update) {
for(Survey_Mcd__c sms : Trigger.New){
if(Trigger.isUpdate){
if((sms.Yes_No__c && sms.X5_Scale_Rating__c && sms.Comment__c) || (sms.Yes_No__c && sms.X5_Scale_Rating__c)
|| (sms.Yes_No__c && sms.Comment__c) || (sms.X5_Scale_Rating__c && sms.Comment__c)){
sms.addError('Please select only one checkbox');
}
}
}
}
Test Class:
@isTest
public class TestselectOneCheckbox {
static testMethod void myUnitTest() {
system.test.startTest();
Survey_Mcd__c sms= new Survey_Mcd__c();
sms.Yes_No__c=true;
sms.X5_Scale_Rating__c=true;
sms.Comment__c=true;
update sms;
List <Survey_Mcd__c> sm= [select id,Comment__c,X5_Scale_Rating__c,Yes_No__c from Survey_Mcd__c where id=:sms.id];
for ( Survey_Mcd__c v:sm)
{
v.Comment__c=true;
}
insert sm;
system.test.stopTest();
}
}
System.DmlException: Update failed. First exception on row 0; first error: MISSING_ARGUMENT, Id not specified in an update call: [] while executing my test class for trigger Please suggest:
Trigger:
trigger selectOneCheckbox on Survey_Mcd__c (before update) {
for(Survey_Mcd__c sms : Trigger.New){
if(Trigger.isUpdate){
if((sms.Yes_No__c && sms.X5_Scale_Rating__c && sms.Comment__c) || (sms.Yes_No__c && sms.X5_Scale_Rating__c)
|| (sms.Yes_No__c && sms.Comment__c) || (sms.X5_Scale_Rating__c && sms.Comment__c)){
sms.addError('Please select only one checkbox');
}
}
}
}
Test Class:
@isTest
public class TestselectOneCheckbox {
static testMethod void myUnitTest() {
system.test.startTest();
Survey_Mcd__c sms= new Survey_Mcd__c();
sms.Yes_No__c=true;
sms.X5_Scale_Rating__c=true;
sms.Comment__c=true;
update sms;
List <Survey_Mcd__c> sm= [select id,Comment__c,X5_Scale_Rating__c,Yes_No__c from Survey_Mcd__c where id=:sms.id];
for ( Survey_Mcd__c v:sm)
{
v.Comment__c=true;
}
insert sm;
system.test.stopTest();
}
}
Please check once below modified code :
Hope this helps you.
Thanks
Varaprasad
You can fix the unit test by calling insert sms, update the field values, then update sms;
You also might want to evaluate if your trigger should run only on update, or insert as well.
Please mark this answer as correct if it has helped you!
code coverage is 100% but below error is coming :
System.DmlException: Update failed. First exception on row 0 with id a1h17000003NcsjAAC; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Please select only one checkbox: []
Class.TestselectOneCheckbox.myUnitTest: line 18, column 1
@isTest
public class TestselectOneCheckbox {
static testMethod void myUnitTest() {
system.test.startTest();
Survey_Mcd__c sms= new Survey_Mcd__c();
sms.Yes_No__c=true;
sms.X5_Scale_Rating__c=true;
sms.Comment__c=true;
insert sms;
List <Survey_Mcd__c> sm= [select id,Comment__c,X5_Scale_Rating__c,Yes_No__c
from Survey_Mcd__c where id=:sms.id];
for ( Survey_Mcd__c v:sm)
{
v.Comment__c=true;
v.X5_Scale_Rating__c=false;
}
update sm;
Survey_Mcd__c sms1= new Survey_Mcd__c();
sms1.Yes_No__c=true;
sms1.X5_Scale_Rating__c=true;
sms1.Comment__c=true;
update sms1;
system.test.stopTest();
}
}
System.DmlException: Update failed. First exception on row 0 with id a1h17000003NcuzAAC; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Please select only one checkbox: []
@isTest
public class TestselectOneCheckbox {
static testMethod void myUnitTest() {
system.test.startTest();
Survey_Mcd__c sms= new Survey_Mcd__c();
sms.Yes_No__c=true;
sms.X5_Scale_Rating__c=false;
sms.Comment__c=false;
insert sms;
List <Survey_Mcd__c> sm= [select id,Comment__c,X5_Scale_Rating__c,Question__c,Survey_Name__c,Yes_No__c
from Survey_Mcd__c where id=:sms.id LIMIT 1];
for ( Survey_Mcd__c v:sm)
{
system.debug('----ID--'+v.id);
v.Comment__c=true;
v.Question__c= '3) Please provide any additional comments on the service you received from GBS Finance?';
v.Survey_Name__c='McDonald';
}
update sm;
Survey_Mcd__c sms1= new Survey_Mcd__c();
sms1.id=sms.id;
sms1.Yes_No__c=true;
sms1.X5_Scale_Rating__c=true;
sms1.Comment__c=true;
update sms1;
system.test.stopTest();
}
}
Also please mark the appropriate answer as resolved, as it appears your original question/problem has been solved, but you are experiencing proper validation messages, not code errors any longer.
sms.addError('Please select only one checkbox');
The if conditional criteria is being met, and it is adding a validation error to the record. It seems to suggest your trigger is written incorrectly. Please describe what your trigger is supposed to do.
I hope your this issue is resolved in below post
1) https://developer.salesforce.com/forums/ForumsMain?id=9060G0000005SKyQAM
Let us know if you need more help on same