I'm new to test classes and I'm trying create one for an apex schedulable class I made. I read the documentation but don't completely understand it. I want to schedule the class through the Apex Scheduler UI. Here's my schedulable class:
global class Scrum_Diario implements Schedulable {
global void execute(SchedulableContext SC) {
Account accts = [SELECT Id, Name, OwnerID from account where Name='Scrum Diario The Influence' ];
List<User> usuario = [Select Id, Alias from user where IsActive=True];
List<task> ta = new list<task>();
for (User us: usuario)
{
if(us.Alias!='EBenc'||us.Alias!='PEF'||us.Alias!='arodas'||us.Alias!='vecheve'){
Task t= new task();
t.Subject = 'Scrum Diario';
t.ActivityDate = Date.today();
t.Description = 'Llevar a cabo el Scrum diario antes de las 9:30';
t.Status = 'Open';
t.WhatId = accts.Id;
t.OwnerId = us.Id;
t.Priority = 'Normal';
ta.add(t);
}
}
insert ta;
}
}
And here is my test class, it's a copy paste from the documentation plus what I think it needs to adapt to my schedulable class:
@istest
class TestClass {
static testmethod void test() {
Test.startTest();
Account myaccount = new account();
myaccount.Name='Scrum Diario The Influence';
myaccount.Cliente_Activo__c=TRUE;
User usuario = new User();
usuario.IsActive=TRUE;
usuario.Alias = 'vic';
Insert usuario;
Insert myaccount;
String jobId = System.schedule('testBasicScheduledApex',
TestScheduledApexFromTestMethod.CRON_EXP,
new TestScheduledApexFromTestMethod());
CronTrigger ct = [SELECT Id, CronExpression, TimesTriggered,
NextFireTime
FROM CronTrigger WHERE id = :jobId];
// Verify the expressions are the same
System.assertEquals(TestScheduledApexFromTestMethod.CRON_EXP,
ct.CronExpression);
// Verify the job has not run
System.assertEquals(0, ct.TimesTriggered);
// Verify the next time the job will run
System.assertEquals('2022-09-03 00:00:00',
String.valueOf(ct.NextFireTime));
System.assertNotEquals('testScheduledApexFromTestMethodUpdated',
[SELECT id, name FROM account WHERE id = :a.id].name);
Test.stopTest();
System.assertEquals('testScheduledApexFromTestMethodUpdated',
[SELECT Id, Name FROM Account WHERE Id = :a.Id].Name);
}
}
Scrum_Diario
class you are scheduling a class namedTestScheduledApexFromTestMethod
which I doubt exists and if it does not the test class would not have compiled