-
ChatterFeed
-
0Best Answers
-
0Likes Received
-
0Likes Given
-
2Questions
-
3Replies
need help with a test class don get the coverage
hi, can you help me. im trying to get the coverage of a class but im only have 68% and i cant get more.
public without sharing class TTRelacionados {
public List<Case> ttPadres{get;set;}
public List<FieldWrap> campos{get;set;}
public Case TTPadre{get;set;}
public List<CasoRelacionado> casosRelacionados{get;set;}
public List<CaseComment> comentarios{get;set;}
public List<SectionWrap> secciones{get;set;}
public String newCIDS{get;set;}
public List<CIDWrap> agregarCIDSResultado{get;set;}
public List<CaseUpdateWrap> actualizarResultado{get;set;}
public String previousSortField {get; set;}
public TTRelacionados(){
}
public TTRelacionados(ApexPages.StandardController controller){
}
public void initTTPadres(){
this.ttPadres = new List<Case>();
for(Case record:[select Id, CaseNumber, Subject, Status, Fecha_y_Hora_de_Inicio__c, Fecha_y_Hora_de_Fin__c, RecordTypeId, RecordType.Name from Case where TT_Padre__c = true and Status != 'Cerrado']){
this.ttPadres.add(record);
}
//superSort.sortList(this.ttPadres,'CaseNumber','desc');
}
public void doSortByNumber(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'CaseNumber'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'CaseNumber';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'CaseNumber',order);
}
public void doSortByStatus(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'Status'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'Status';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'Status',order);
}
public void initPageLayout(){
String qid = ApexPages.currentPage().getParameters().get('id');
//this.TTPadre = [select id, dany__c from Case where id= :qid];
//Consultamos el tipo de registro del caso padre
Case tiporegistrocaso = [select RecordTypeId, RecordType.Name from Case where Id = :qid];
System.debug('tiporegistrocaso:'+tiporegistrocaso);
this.campos = new List<FieldWrap>();
this.secciones = new List<SectionWrap>();
Map<String, Schema.SobjectField> fields = Schema.SobjectType.Case.fields.getMap();
System.debug('fields:'+fields);
String fieldstr = '';
System.debug('tipo registro:'+tiporegistrocaso.RecordType.Name);
//Validacion de existencia de secciones especificas para este tipo de registro, o en su defecto usar una default
List<Seccion_TTRelacionados__c> seccionesdisponibles = new List<Seccion_TTRelacionados__c>();
seccionesdisponibles = [select Id from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrocaso.RecordType.Name];
String tiporegistrostr;
if(seccionesdisponibles.size()>0){
tiporegistrostr = tiporegistrocaso.RecordType.Name;
}else{
tiporegistrostr = 'Ventana de Mantenimiento';
}
//Aqui vamos a consultar los campos asignados para ese tipo de registro
for(Seccion_TTRelacionados__c record:[select Id,Name,(select Nombre_API__c,Read_Only__c from Campos_TTRelacionados__r Order by Orden__c) from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrostr Order by Orden__c]){
System.debug('seccion:'+record);
System.debug('record.Campos_TTRelacionados__r:'+record.Campos_TTRelacionados__r);
//Hacemos una instancia de SectionWrap
SectionWrap section = new SectionWrap();
section.sectionName = record.Name;
this.secciones.add(section);
for(Campo_TTRelacionados__c field:record.Campos_TTRelacionados__r){
System.debug('field:'+field.Nombre_API__c);
if(fields.containsKey(field.Nombre_API__c)){
if (fields.get(field.Nombre_API__c).getDescribe().isAccessible() && field.Nombre_API__c != 'id'){
fieldstr += field.Nombre_API__c + ',';
System.debug('fieldstr:'+fieldstr);
FieldWrap fw = new FieldWrap();
fw.campo = field.Nombre_API__c;
if(field.Read_Only__c){
fw.readonly = true;
}
this.campos.add(fw);
section.campos.add(fw);
}
}
}
}
fieldstr += 'Id';
System.debug('query:'+'select ' + fieldstr + ' from Case where Id = \''+ qid + '\'');
this.TTPadre = database.query('select ' + fieldstr + ' from Case where Id = \''+ qid+'\'');
//Buscamos los comentarios relacionados con el caso
this.comentarios = new List<CaseComment>();
for(CaseComment record:[select CommentBody, IsPublished, CreatedDate from CaseComment where ParentId = :this.TTPadre.Id order by CreatedDate DESC]){
this.comentarios.add(record);
}
try{
System.debug('this.TTPadre.CaseNumber:'+this.TTPadre.CaseNumber);
//return;
//Buscamos los casos relacionados con este TTPAdre
this.casosRelacionados = new List<CasoRelacionado>();
for(Case record:[select Id, CaseNumber, Circuit_ID__c, AssetId, Status, Account.Name, Asset.Name from Case where Relacionado_con_el_TT__c = :this.TTPadre.CaseNumber and Status != 'Cerrado']){
System.debug('casorel:'+record);
CasoRelacionado casorel = new CasoRelacionado();
casorel.caso = record;
casorel.isSelected = true;
this.casosRelacionados.add(casorel);
}
}catch(Exception e){
}
}
public PageReference Actualizar(){
this.actualizarResultado = new List<CaseUpdateWrap>();
PageReference sigpag = null;
//Inicializamos los campos por actualizar
List<String> camposporactualizar = new List<String>();
String camposporactualizarstr = 'Id';
//Corremos por los campos seleccionados para actualizar
for(FieldWrap record:campos){
if(record.selected == true){
camposporactualizar.add(record.campo);
camposporactualizarstr += ',' + record.campo;
System.debug('campo elegido:'+ record.campo + ' valor:' + TTPadre.get(record.campo));
}
}
//Validams que existan campos seleccionados para actualizar
if(camposporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun campo por actualizar, debe de selecionarlo usando las casillas junto a los campos que desea actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Inicializamos los casos por actualizar
List<Case> casosporactualizar = new List<Case>();
//Corremos por los casos seleccionados para actualizar
for(CasoRelacionado record:this.casosRelacionados){
if(record.isSelected == true){
casosporactualizar.add(record.caso);
}
}
//Validmos que existan casos relacionados por actulizar
if(casosporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun caso relacionado por actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Cargamos una vez mas el caso padre pero solo con los campos elegidos para actualizar
System.debug('queryTTPAdre:'+'select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
Case ttpadreoriginal = database.query('select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
//Agregamos el caso padre a los casos por actualizar
casosporactualizar.add(ttpadreoriginal);
//Corremos por los casos y por los campos asignando el nuevo valor
for(Case record:casosporactualizar){
for(String campo:camposporactualizar){
record.put(campo,this.TTPadre.get(campo));
}
}
//Hacemso la actualizacion
try{
List<Database.SaveResult> resultados = Database.update(casosporactualizar,false);
//Iniciamos un contador
Integer a = 0;
//Corremos por los resultados
for(Database.SaveResult result:resultados){
Case caso = casosporactualizar[a];
CaseUpdateWrap cuw = new CaseUpdateWrap();
cuw.caso = caso;
if(result.isSuccess()){
cuw.isSuccess = true;
cuw.msg = 'El caso fue actualizado correctamente';
}else{
cuw.isSuccess = false;
cuw.msg = 'El caso no pudo ser actualizado';
}
this.actualizarResultado.add(cuw);
a++;
}
}catch(Exception e){
}
sigpag = Page.TTRelacionados3;
return sigpag;
}
public PageReference AgregarCIDS(){
return Page.TTRelacionados4;
}
public PageReference Agregar(){
/*
Por hacer
* Copiar los comentarios de caso original a todos los casos hijo
* Envio del email de notificacion, que el usaurio pueda seleccionar entre las plantillas disponibles para tal efecto
*/
//Buscamos el recordtype correspondiente a ventana de mantenimiento
RecordType vmrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Ventana de Mantenimiento' limit 1];
//Buscamos el recordtype correspondiente a problema operativo
RecordType ttrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Trouble ticket' limit 1];
PageReference sigpag = null;
if(this.newCIDS == null || this.newCIDS == ''){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se ingreso ninguna lista de CIDS.');
ApexPages.addMessage(myMsg);
return sigpag;
}
List<String> lines = this.newCIDS.split('\n');
//Inicializamos una lista de CIDS
Set<String> cids = new Set<String>();
//Inicializamos un mapa para poder reportar sobre el exito de un particular CID
Map<String,CIDWrap> cidsmap = new Map<String,CIDWrap>();
for(String line:lines){
System.debug('line:'+line);
//Recopilamos los numeros de CID en una lista
System.debug('cid:'+line.split('_')[0].trim());
cids.add(line.split('_')[0].trim());
CIDWrap cidw = new CIDWrap();
cidw.CID = line.split('_')[0].trim();
cidsmap.put(line.split('_')[0].trim(),cidw);
}
System.debug('cidsmap:'+cidsmap);
System.debug('cids:'+cids);
//Inicializamos una lista de assets encintrados por su cid
Map<String,Asset> servicios = new Map<String,Asset>();
//Traemos los CDIS que se estan buscando
for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and ((Status = 'Activo' or Status = 'Backlog') or (Account.Segmento_de_Cuenta__c = 'PYMES Cablecom' and (Status = 'Activo' or Status = 'Backlog' or Status = 'Cancelado')))]){
//for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and (Status = 'Activo' or Status = 'Backlog')]){
System.debug('servicio:'+record);
servicios.put(record.Circuit_ID__c,record);
}
//Primera validacion, debemos de tener al menos un servicio localizado
if(servicios.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se localizo ningún servicio con los identificadores provistos.');
ApexPages.addMessage(myMsg);
return sigpag;
}
public without sharing class TTRelacionados {
public List<Case> ttPadres{get;set;}
public List<FieldWrap> campos{get;set;}
public Case TTPadre{get;set;}
public List<CasoRelacionado> casosRelacionados{get;set;}
public List<CaseComment> comentarios{get;set;}
public List<SectionWrap> secciones{get;set;}
public String newCIDS{get;set;}
public List<CIDWrap> agregarCIDSResultado{get;set;}
public List<CaseUpdateWrap> actualizarResultado{get;set;}
public String previousSortField {get; set;}
public TTRelacionados(){
}
public TTRelacionados(ApexPages.StandardController controller){
}
public void initTTPadres(){
this.ttPadres = new List<Case>();
for(Case record:[select Id, CaseNumber, Subject, Status, Fecha_y_Hora_de_Inicio__c, Fecha_y_Hora_de_Fin__c, RecordTypeId, RecordType.Name from Case where TT_Padre__c = true and Status != 'Cerrado']){
this.ttPadres.add(record);
}
//superSort.sortList(this.ttPadres,'CaseNumber','desc');
}
public void doSortByNumber(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'CaseNumber'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'CaseNumber';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'CaseNumber',order);
}
public void doSortByStatus(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'Status'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'Status';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'Status',order);
}
public void initPageLayout(){
String qid = ApexPages.currentPage().getParameters().get('id');
//this.TTPadre = [select id, dany__c from Case where id= :qid];
//Consultamos el tipo de registro del caso padre
Case tiporegistrocaso = [select RecordTypeId, RecordType.Name from Case where Id = :qid];
System.debug('tiporegistrocaso:'+tiporegistrocaso);
this.campos = new List<FieldWrap>();
this.secciones = new List<SectionWrap>();
Map<String, Schema.SobjectField> fields = Schema.SobjectType.Case.fields.getMap();
System.debug('fields:'+fields);
String fieldstr = '';
System.debug('tipo registro:'+tiporegistrocaso.RecordType.Name);
//Validacion de existencia de secciones especificas para este tipo de registro, o en su defecto usar una default
List<Seccion_TTRelacionados__c> seccionesdisponibles = new List<Seccion_TTRelacionados__c>();
seccionesdisponibles = [select Id from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrocaso.RecordType.Name];
String tiporegistrostr;
if(seccionesdisponibles.size()>0){
tiporegistrostr = tiporegistrocaso.RecordType.Name;
}else{
tiporegistrostr = 'Ventana de Mantenimiento';
}
//Aqui vamos a consultar los campos asignados para ese tipo de registro
for(Seccion_TTRelacionados__c record:[select Id,Name,(select Nombre_API__c,Read_Only__c from Campos_TTRelacionados__r Order by Orden__c) from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrostr Order by Orden__c]){
System.debug('seccion:'+record);
System.debug('record.Campos_TTRelacionados__r:'+record.Campos_TTRelacionados__r);
//Hacemos una instancia de SectionWrap
SectionWrap section = new SectionWrap();
section.sectionName = record.Name;
this.secciones.add(section);
for(Campo_TTRelacionados__c field:record.Campos_TTRelacionados__r){
System.debug('field:'+field.Nombre_API__c);
if(fields.containsKey(field.Nombre_API__c)){
if (fields.get(field.Nombre_API__c).getDescribe().isAccessible() && field.Nombre_API__c != 'id'){
fieldstr += field.Nombre_API__c + ',';
System.debug('fieldstr:'+fieldstr);
FieldWrap fw = new FieldWrap();
fw.campo = field.Nombre_API__c;
if(field.Read_Only__c){
fw.readonly = true;
}
this.campos.add(fw);
section.campos.add(fw);
}
}
}
}
fieldstr += 'Id';
System.debug('query:'+'select ' + fieldstr + ' from Case where Id = \''+ qid + '\'');
this.TTPadre = database.query('select ' + fieldstr + ' from Case where Id = \''+ qid+'\'');
//Buscamos los comentarios relacionados con el caso
this.comentarios = new List<CaseComment>();
for(CaseComment record:[select CommentBody, IsPublished, CreatedDate from CaseComment where ParentId = :this.TTPadre.Id order by CreatedDate DESC]){
this.comentarios.add(record);
}
try{
System.debug('this.TTPadre.CaseNumber:'+this.TTPadre.CaseNumber);
//return;
//Buscamos los casos relacionados con este TTPAdre
this.casosRelacionados = new List<CasoRelacionado>();
for(Case record:[select Id, CaseNumber, Circuit_ID__c, AssetId, Status, Account.Name, Asset.Name from Case where Relacionado_con_el_TT__c = :this.TTPadre.CaseNumber and Status != 'Cerrado']){
System.debug('casorel:'+record);
CasoRelacionado casorel = new CasoRelacionado();
casorel.caso = record;
casorel.isSelected = true;
this.casosRelacionados.add(casorel);
}
}catch(Exception e){
}
}
public PageReference Actualizar(){
this.actualizarResultado = new List<CaseUpdateWrap>();
PageReference sigpag = null;
//Inicializamos los campos por actualizar
List<String> camposporactualizar = new List<String>();
String camposporactualizarstr = 'Id';
//Corremos por los campos seleccionados para actualizar
for(FieldWrap record:campos){
if(record.selected == true){
camposporactualizar.add(record.campo);
camposporactualizarstr += ',' + record.campo;
System.debug('campo elegido:'+ record.campo + ' valor:' + TTPadre.get(record.campo));
}
}
//Validams que existan campos seleccionados para actualizar
if(camposporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun campo por actualizar, debe de selecionarlo usando las casillas junto a los campos que desea actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Inicializamos los casos por actualizar
List<Case> casosporactualizar = new List<Case>();
//Corremos por los casos seleccionados para actualizar
for(CasoRelacionado record:this.casosRelacionados){
if(record.isSelected == true){
casosporactualizar.add(record.caso);
}
}
//Validmos que existan casos relacionados por actulizar
if(casosporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun caso relacionado por actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Cargamos una vez mas el caso padre pero solo con los campos elegidos para actualizar
System.debug('queryTTPAdre:'+'select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
Case ttpadreoriginal = database.query('select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
//Agregamos el caso padre a los casos por actualizar
casosporactualizar.add(ttpadreoriginal);
//Corremos por los casos y por los campos asignando el nuevo valor
for(Case record:casosporactualizar){
for(String campo:camposporactualizar){
record.put(campo,this.TTPadre.get(campo));
}
}
//Hacemso la actualizacion
try{
List<Database.SaveResult> resultados = Database.update(casosporactualizar,false);
//Iniciamos un contador
Integer a = 0;
//Corremos por los resultados
for(Database.SaveResult result:resultados){
Case caso = casosporactualizar[a];
CaseUpdateWrap cuw = new CaseUpdateWrap();
cuw.caso = caso;
if(result.isSuccess()){
cuw.isSuccess = true;
cuw.msg = 'El caso fue actualizado correctamente';
}else{
cuw.isSuccess = false;
cuw.msg = 'El caso no pudo ser actualizado';
}
this.actualizarResultado.add(cuw);
a++;
}
}catch(Exception e){
}
sigpag = Page.TTRelacionados3;
return sigpag;
}
public PageReference AgregarCIDS(){
return Page.TTRelacionados4;
}
public PageReference Agregar(){
/*
Por hacer
* Copiar los comentarios de caso original a todos los casos hijo
* Envio del email de notificacion, que el usaurio pueda seleccionar entre las plantillas disponibles para tal efecto
*/
//Buscamos el recordtype correspondiente a ventana de mantenimiento
RecordType vmrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Ventana de Mantenimiento' limit 1];
//Buscamos el recordtype correspondiente a problema operativo
RecordType ttrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Trouble ticket' limit 1];
PageReference sigpag = null;
if(this.newCIDS == null || this.newCIDS == ''){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se ingreso ninguna lista de CIDS.');
ApexPages.addMessage(myMsg);
return sigpag;
}
List<String> lines = this.newCIDS.split('\n');
//Inicializamos una lista de CIDS
Set<String> cids = new Set<String>();
//Inicializamos un mapa para poder reportar sobre el exito de un particular CID
Map<String,CIDWrap> cidsmap = new Map<String,CIDWrap>();
for(String line:lines){
System.debug('line:'+line);
//Recopilamos los numeros de CID en una lista
System.debug('cid:'+line.split('_')[0].trim());
cids.add(line.split('_')[0].trim());
CIDWrap cidw = new CIDWrap();
cidw.CID = line.split('_')[0].trim();
cidsmap.put(line.split('_')[0].trim(),cidw);
}
System.debug('cidsmap:'+cidsmap);
System.debug('cids:'+cids);
//Inicializamos una lista de assets encintrados por su cid
Map<String,Asset> servicios = new Map<String,Asset>();
//Traemos los CDIS que se estan buscando
for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and ((Status = 'Activo' or Status = 'Backlog') or (Account.Segmento_de_Cuenta__c = 'PYMES Cablecom' and (Status = 'Activo' or Status = 'Backlog' or Status = 'Cancelado')))]){
//for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and (Status = 'Activo' or Status = 'Backlog')]){
System.debug('servicio:'+record);
servicios.put(record.Circuit_ID__c,record);
}
//Primera validacion, debemos de tener al menos un servicio localizado
if(servicios.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se localizo ningún servicio con los identificadores provistos.');
ApexPages.addMessage(myMsg);
return sigpag;
}
- Javier Esquivel
- October 11, 2021
- Like
- 0
can you help me with test class for a email Messaging
im trying to do the test class for this code
public class Claseprogramadausuario {
public static void obtenerinfo(){
List<User> nlist = [SELECT Id, Username, FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, CreatedDate, LastModifiedDate, LastLoginDate, isActive FROM User WHERE Profile.Name != 'SelfService'];
string header = 'Id, Username , FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, Created Date, LastModifiedDate, LastLoginDate, isActive \n';
string finalstr = header ;
for(User u: nlist)
{
string recordString = u.id+','+u.Username +',' + u.FirstName +','+ u.LastName +','+ u.EmployeeNumber+','+ u.UserRole.name +','+ u.profile.name +','+ u.CreatedDate +','+ u.LastModifiedDate +','+ u.LastLoginDate +','+ u.IsActive +'\n';
finalstr = finalstr +recordString;
}
Messaging.EmailFileAttachment csvAttc = new Messaging.EmailFileAttachment();
blob csvBlob = Blob.valueOf(finalstr);
string csvname= 'Userinfo.csv';
csvAttc.setFileName(csvname);
csvAttc.setBody(csvBlob);
Messaging.SingleEmailMessage correo = new Messaging.SingleEmailMessage();
correo.toAddresses = new String[] {'javierandoni@gmail.com', 'dlramirez@izzi.mx'};
correo.subject = 'Clase programada test';
correo.plainTextBody = 'Clase programada test';
Messaging.SingleEmailMessage[] correos = new List<Messaging.SingleEmailMessage> {correo};
correo.setPlainTextBody('Account CSV ');
correo.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttc});
Messaging.SendEmailResult[] results = Messaging.sendEmail(correos);
if (results[0].success)
{
System.debug('The email was sent successfully.');
} else
{
System.debug('The email failed to send: ' + results[0].errors[0].message);
}
}
}
And the test class im trying to do is this
// Test Class
@IsTest
Public class ClaseprogramadausuarioTest {
@isTest static void testenviomail(){
string pri= Claseprogramadausuario.obtenerinfo();
System.assertEquals('The email was sent successfully.', pri);
}
}
but i get this message: Illegal assignment from void to String.
public class Claseprogramadausuario {
public static void obtenerinfo(){
List<User> nlist = [SELECT Id, Username, FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, CreatedDate, LastModifiedDate, LastLoginDate, isActive FROM User WHERE Profile.Name != 'SelfService'];
string header = 'Id, Username , FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, Created Date, LastModifiedDate, LastLoginDate, isActive \n';
string finalstr = header ;
for(User u: nlist)
{
string recordString = u.id+','+u.Username +',' + u.FirstName +','+ u.LastName +','+ u.EmployeeNumber+','+ u.UserRole.name +','+ u.profile.name +','+ u.CreatedDate +','+ u.LastModifiedDate +','+ u.LastLoginDate +','+ u.IsActive +'\n';
finalstr = finalstr +recordString;
}
Messaging.EmailFileAttachment csvAttc = new Messaging.EmailFileAttachment();
blob csvBlob = Blob.valueOf(finalstr);
string csvname= 'Userinfo.csv';
csvAttc.setFileName(csvname);
csvAttc.setBody(csvBlob);
Messaging.SingleEmailMessage correo = new Messaging.SingleEmailMessage();
correo.toAddresses = new String[] {'javierandoni@gmail.com', 'dlramirez@izzi.mx'};
correo.subject = 'Clase programada test';
correo.plainTextBody = 'Clase programada test';
Messaging.SingleEmailMessage[] correos = new List<Messaging.SingleEmailMessage> {correo};
correo.setPlainTextBody('Account CSV ');
correo.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttc});
Messaging.SendEmailResult[] results = Messaging.sendEmail(correos);
if (results[0].success)
{
System.debug('The email was sent successfully.');
} else
{
System.debug('The email failed to send: ' + results[0].errors[0].message);
}
}
}
And the test class im trying to do is this
// Test Class
@IsTest
Public class ClaseprogramadausuarioTest {
@isTest static void testenviomail(){
string pri= Claseprogramadausuario.obtenerinfo();
System.assertEquals('The email was sent successfully.', pri);
}
}
but i get this message: Illegal assignment from void to String.
- Javier Esquivel
- October 04, 2021
- Like
- 0
need help with a test class don get the coverage
hi, can you help me. im trying to get the coverage of a class but im only have 68% and i cant get more.
public without sharing class TTRelacionados {
public List<Case> ttPadres{get;set;}
public List<FieldWrap> campos{get;set;}
public Case TTPadre{get;set;}
public List<CasoRelacionado> casosRelacionados{get;set;}
public List<CaseComment> comentarios{get;set;}
public List<SectionWrap> secciones{get;set;}
public String newCIDS{get;set;}
public List<CIDWrap> agregarCIDSResultado{get;set;}
public List<CaseUpdateWrap> actualizarResultado{get;set;}
public String previousSortField {get; set;}
public TTRelacionados(){
}
public TTRelacionados(ApexPages.StandardController controller){
}
public void initTTPadres(){
this.ttPadres = new List<Case>();
for(Case record:[select Id, CaseNumber, Subject, Status, Fecha_y_Hora_de_Inicio__c, Fecha_y_Hora_de_Fin__c, RecordTypeId, RecordType.Name from Case where TT_Padre__c = true and Status != 'Cerrado']){
this.ttPadres.add(record);
}
//superSort.sortList(this.ttPadres,'CaseNumber','desc');
}
public void doSortByNumber(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'CaseNumber'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'CaseNumber';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'CaseNumber',order);
}
public void doSortByStatus(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'Status'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'Status';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'Status',order);
}
public void initPageLayout(){
String qid = ApexPages.currentPage().getParameters().get('id');
//this.TTPadre = [select id, dany__c from Case where id= :qid];
//Consultamos el tipo de registro del caso padre
Case tiporegistrocaso = [select RecordTypeId, RecordType.Name from Case where Id = :qid];
System.debug('tiporegistrocaso:'+tiporegistrocaso);
this.campos = new List<FieldWrap>();
this.secciones = new List<SectionWrap>();
Map<String, Schema.SobjectField> fields = Schema.SobjectType.Case.fields.getMap();
System.debug('fields:'+fields);
String fieldstr = '';
System.debug('tipo registro:'+tiporegistrocaso.RecordType.Name);
//Validacion de existencia de secciones especificas para este tipo de registro, o en su defecto usar una default
List<Seccion_TTRelacionados__c> seccionesdisponibles = new List<Seccion_TTRelacionados__c>();
seccionesdisponibles = [select Id from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrocaso.RecordType.Name];
String tiporegistrostr;
if(seccionesdisponibles.size()>0){
tiporegistrostr = tiporegistrocaso.RecordType.Name;
}else{
tiporegistrostr = 'Ventana de Mantenimiento';
}
//Aqui vamos a consultar los campos asignados para ese tipo de registro
for(Seccion_TTRelacionados__c record:[select Id,Name,(select Nombre_API__c,Read_Only__c from Campos_TTRelacionados__r Order by Orden__c) from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrostr Order by Orden__c]){
System.debug('seccion:'+record);
System.debug('record.Campos_TTRelacionados__r:'+record.Campos_TTRelacionados__r);
//Hacemos una instancia de SectionWrap
SectionWrap section = new SectionWrap();
section.sectionName = record.Name;
this.secciones.add(section);
for(Campo_TTRelacionados__c field:record.Campos_TTRelacionados__r){
System.debug('field:'+field.Nombre_API__c);
if(fields.containsKey(field.Nombre_API__c)){
if (fields.get(field.Nombre_API__c).getDescribe().isAccessible() && field.Nombre_API__c != 'id'){
fieldstr += field.Nombre_API__c + ',';
System.debug('fieldstr:'+fieldstr);
FieldWrap fw = new FieldWrap();
fw.campo = field.Nombre_API__c;
if(field.Read_Only__c){
fw.readonly = true;
}
this.campos.add(fw);
section.campos.add(fw);
}
}
}
}
fieldstr += 'Id';
System.debug('query:'+'select ' + fieldstr + ' from Case where Id = \''+ qid + '\'');
this.TTPadre = database.query('select ' + fieldstr + ' from Case where Id = \''+ qid+'\'');
//Buscamos los comentarios relacionados con el caso
this.comentarios = new List<CaseComment>();
for(CaseComment record:[select CommentBody, IsPublished, CreatedDate from CaseComment where ParentId = :this.TTPadre.Id order by CreatedDate DESC]){
this.comentarios.add(record);
}
try{
System.debug('this.TTPadre.CaseNumber:'+this.TTPadre.CaseNumber);
//return;
//Buscamos los casos relacionados con este TTPAdre
this.casosRelacionados = new List<CasoRelacionado>();
for(Case record:[select Id, CaseNumber, Circuit_ID__c, AssetId, Status, Account.Name, Asset.Name from Case where Relacionado_con_el_TT__c = :this.TTPadre.CaseNumber and Status != 'Cerrado']){
System.debug('casorel:'+record);
CasoRelacionado casorel = new CasoRelacionado();
casorel.caso = record;
casorel.isSelected = true;
this.casosRelacionados.add(casorel);
}
}catch(Exception e){
}
}
public PageReference Actualizar(){
this.actualizarResultado = new List<CaseUpdateWrap>();
PageReference sigpag = null;
//Inicializamos los campos por actualizar
List<String> camposporactualizar = new List<String>();
String camposporactualizarstr = 'Id';
//Corremos por los campos seleccionados para actualizar
for(FieldWrap record:campos){
if(record.selected == true){
camposporactualizar.add(record.campo);
camposporactualizarstr += ',' + record.campo;
System.debug('campo elegido:'+ record.campo + ' valor:' + TTPadre.get(record.campo));
}
}
//Validams que existan campos seleccionados para actualizar
if(camposporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun campo por actualizar, debe de selecionarlo usando las casillas junto a los campos que desea actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Inicializamos los casos por actualizar
List<Case> casosporactualizar = new List<Case>();
//Corremos por los casos seleccionados para actualizar
for(CasoRelacionado record:this.casosRelacionados){
if(record.isSelected == true){
casosporactualizar.add(record.caso);
}
}
//Validmos que existan casos relacionados por actulizar
if(casosporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun caso relacionado por actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Cargamos una vez mas el caso padre pero solo con los campos elegidos para actualizar
System.debug('queryTTPAdre:'+'select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
Case ttpadreoriginal = database.query('select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
//Agregamos el caso padre a los casos por actualizar
casosporactualizar.add(ttpadreoriginal);
//Corremos por los casos y por los campos asignando el nuevo valor
for(Case record:casosporactualizar){
for(String campo:camposporactualizar){
record.put(campo,this.TTPadre.get(campo));
}
}
//Hacemso la actualizacion
try{
List<Database.SaveResult> resultados = Database.update(casosporactualizar,false);
//Iniciamos un contador
Integer a = 0;
//Corremos por los resultados
for(Database.SaveResult result:resultados){
Case caso = casosporactualizar[a];
CaseUpdateWrap cuw = new CaseUpdateWrap();
cuw.caso = caso;
if(result.isSuccess()){
cuw.isSuccess = true;
cuw.msg = 'El caso fue actualizado correctamente';
}else{
cuw.isSuccess = false;
cuw.msg = 'El caso no pudo ser actualizado';
}
this.actualizarResultado.add(cuw);
a++;
}
}catch(Exception e){
}
sigpag = Page.TTRelacionados3;
return sigpag;
}
public PageReference AgregarCIDS(){
return Page.TTRelacionados4;
}
public PageReference Agregar(){
/*
Por hacer
* Copiar los comentarios de caso original a todos los casos hijo
* Envio del email de notificacion, que el usaurio pueda seleccionar entre las plantillas disponibles para tal efecto
*/
//Buscamos el recordtype correspondiente a ventana de mantenimiento
RecordType vmrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Ventana de Mantenimiento' limit 1];
//Buscamos el recordtype correspondiente a problema operativo
RecordType ttrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Trouble ticket' limit 1];
PageReference sigpag = null;
if(this.newCIDS == null || this.newCIDS == ''){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se ingreso ninguna lista de CIDS.');
ApexPages.addMessage(myMsg);
return sigpag;
}
List<String> lines = this.newCIDS.split('\n');
//Inicializamos una lista de CIDS
Set<String> cids = new Set<String>();
//Inicializamos un mapa para poder reportar sobre el exito de un particular CID
Map<String,CIDWrap> cidsmap = new Map<String,CIDWrap>();
for(String line:lines){
System.debug('line:'+line);
//Recopilamos los numeros de CID en una lista
System.debug('cid:'+line.split('_')[0].trim());
cids.add(line.split('_')[0].trim());
CIDWrap cidw = new CIDWrap();
cidw.CID = line.split('_')[0].trim();
cidsmap.put(line.split('_')[0].trim(),cidw);
}
System.debug('cidsmap:'+cidsmap);
System.debug('cids:'+cids);
//Inicializamos una lista de assets encintrados por su cid
Map<String,Asset> servicios = new Map<String,Asset>();
//Traemos los CDIS que se estan buscando
for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and ((Status = 'Activo' or Status = 'Backlog') or (Account.Segmento_de_Cuenta__c = 'PYMES Cablecom' and (Status = 'Activo' or Status = 'Backlog' or Status = 'Cancelado')))]){
//for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and (Status = 'Activo' or Status = 'Backlog')]){
System.debug('servicio:'+record);
servicios.put(record.Circuit_ID__c,record);
}
//Primera validacion, debemos de tener al menos un servicio localizado
if(servicios.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se localizo ningún servicio con los identificadores provistos.');
ApexPages.addMessage(myMsg);
return sigpag;
}
public without sharing class TTRelacionados {
public List<Case> ttPadres{get;set;}
public List<FieldWrap> campos{get;set;}
public Case TTPadre{get;set;}
public List<CasoRelacionado> casosRelacionados{get;set;}
public List<CaseComment> comentarios{get;set;}
public List<SectionWrap> secciones{get;set;}
public String newCIDS{get;set;}
public List<CIDWrap> agregarCIDSResultado{get;set;}
public List<CaseUpdateWrap> actualizarResultado{get;set;}
public String previousSortField {get; set;}
public TTRelacionados(){
}
public TTRelacionados(ApexPages.StandardController controller){
}
public void initTTPadres(){
this.ttPadres = new List<Case>();
for(Case record:[select Id, CaseNumber, Subject, Status, Fecha_y_Hora_de_Inicio__c, Fecha_y_Hora_de_Fin__c, RecordTypeId, RecordType.Name from Case where TT_Padre__c = true and Status != 'Cerrado']){
this.ttPadres.add(record);
}
//superSort.sortList(this.ttPadres,'CaseNumber','desc');
}
public void doSortByNumber(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'CaseNumber'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'CaseNumber';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'CaseNumber',order);
}
public void doSortByStatus(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'Status'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'Status';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'Status',order);
}
public void initPageLayout(){
String qid = ApexPages.currentPage().getParameters().get('id');
//this.TTPadre = [select id, dany__c from Case where id= :qid];
//Consultamos el tipo de registro del caso padre
Case tiporegistrocaso = [select RecordTypeId, RecordType.Name from Case where Id = :qid];
System.debug('tiporegistrocaso:'+tiporegistrocaso);
this.campos = new List<FieldWrap>();
this.secciones = new List<SectionWrap>();
Map<String, Schema.SobjectField> fields = Schema.SobjectType.Case.fields.getMap();
System.debug('fields:'+fields);
String fieldstr = '';
System.debug('tipo registro:'+tiporegistrocaso.RecordType.Name);
//Validacion de existencia de secciones especificas para este tipo de registro, o en su defecto usar una default
List<Seccion_TTRelacionados__c> seccionesdisponibles = new List<Seccion_TTRelacionados__c>();
seccionesdisponibles = [select Id from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrocaso.RecordType.Name];
String tiporegistrostr;
if(seccionesdisponibles.size()>0){
tiporegistrostr = tiporegistrocaso.RecordType.Name;
}else{
tiporegistrostr = 'Ventana de Mantenimiento';
}
//Aqui vamos a consultar los campos asignados para ese tipo de registro
for(Seccion_TTRelacionados__c record:[select Id,Name,(select Nombre_API__c,Read_Only__c from Campos_TTRelacionados__r Order by Orden__c) from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrostr Order by Orden__c]){
System.debug('seccion:'+record);
System.debug('record.Campos_TTRelacionados__r:'+record.Campos_TTRelacionados__r);
//Hacemos una instancia de SectionWrap
SectionWrap section = new SectionWrap();
section.sectionName = record.Name;
this.secciones.add(section);
for(Campo_TTRelacionados__c field:record.Campos_TTRelacionados__r){
System.debug('field:'+field.Nombre_API__c);
if(fields.containsKey(field.Nombre_API__c)){
if (fields.get(field.Nombre_API__c).getDescribe().isAccessible() && field.Nombre_API__c != 'id'){
fieldstr += field.Nombre_API__c + ',';
System.debug('fieldstr:'+fieldstr);
FieldWrap fw = new FieldWrap();
fw.campo = field.Nombre_API__c;
if(field.Read_Only__c){
fw.readonly = true;
}
this.campos.add(fw);
section.campos.add(fw);
}
}
}
}
fieldstr += 'Id';
System.debug('query:'+'select ' + fieldstr + ' from Case where Id = \''+ qid + '\'');
this.TTPadre = database.query('select ' + fieldstr + ' from Case where Id = \''+ qid+'\'');
//Buscamos los comentarios relacionados con el caso
this.comentarios = new List<CaseComment>();
for(CaseComment record:[select CommentBody, IsPublished, CreatedDate from CaseComment where ParentId = :this.TTPadre.Id order by CreatedDate DESC]){
this.comentarios.add(record);
}
try{
System.debug('this.TTPadre.CaseNumber:'+this.TTPadre.CaseNumber);
//return;
//Buscamos los casos relacionados con este TTPAdre
this.casosRelacionados = new List<CasoRelacionado>();
for(Case record:[select Id, CaseNumber, Circuit_ID__c, AssetId, Status, Account.Name, Asset.Name from Case where Relacionado_con_el_TT__c = :this.TTPadre.CaseNumber and Status != 'Cerrado']){
System.debug('casorel:'+record);
CasoRelacionado casorel = new CasoRelacionado();
casorel.caso = record;
casorel.isSelected = true;
this.casosRelacionados.add(casorel);
}
}catch(Exception e){
}
}
public PageReference Actualizar(){
this.actualizarResultado = new List<CaseUpdateWrap>();
PageReference sigpag = null;
//Inicializamos los campos por actualizar
List<String> camposporactualizar = new List<String>();
String camposporactualizarstr = 'Id';
//Corremos por los campos seleccionados para actualizar
for(FieldWrap record:campos){
if(record.selected == true){
camposporactualizar.add(record.campo);
camposporactualizarstr += ',' + record.campo;
System.debug('campo elegido:'+ record.campo + ' valor:' + TTPadre.get(record.campo));
}
}
//Validams que existan campos seleccionados para actualizar
if(camposporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun campo por actualizar, debe de selecionarlo usando las casillas junto a los campos que desea actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Inicializamos los casos por actualizar
List<Case> casosporactualizar = new List<Case>();
//Corremos por los casos seleccionados para actualizar
for(CasoRelacionado record:this.casosRelacionados){
if(record.isSelected == true){
casosporactualizar.add(record.caso);
}
}
//Validmos que existan casos relacionados por actulizar
if(casosporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun caso relacionado por actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Cargamos una vez mas el caso padre pero solo con los campos elegidos para actualizar
System.debug('queryTTPAdre:'+'select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
Case ttpadreoriginal = database.query('select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
//Agregamos el caso padre a los casos por actualizar
casosporactualizar.add(ttpadreoriginal);
//Corremos por los casos y por los campos asignando el nuevo valor
for(Case record:casosporactualizar){
for(String campo:camposporactualizar){
record.put(campo,this.TTPadre.get(campo));
}
}
//Hacemso la actualizacion
try{
List<Database.SaveResult> resultados = Database.update(casosporactualizar,false);
//Iniciamos un contador
Integer a = 0;
//Corremos por los resultados
for(Database.SaveResult result:resultados){
Case caso = casosporactualizar[a];
CaseUpdateWrap cuw = new CaseUpdateWrap();
cuw.caso = caso;
if(result.isSuccess()){
cuw.isSuccess = true;
cuw.msg = 'El caso fue actualizado correctamente';
}else{
cuw.isSuccess = false;
cuw.msg = 'El caso no pudo ser actualizado';
}
this.actualizarResultado.add(cuw);
a++;
}
}catch(Exception e){
}
sigpag = Page.TTRelacionados3;
return sigpag;
}
public PageReference AgregarCIDS(){
return Page.TTRelacionados4;
}
public PageReference Agregar(){
/*
Por hacer
* Copiar los comentarios de caso original a todos los casos hijo
* Envio del email de notificacion, que el usaurio pueda seleccionar entre las plantillas disponibles para tal efecto
*/
//Buscamos el recordtype correspondiente a ventana de mantenimiento
RecordType vmrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Ventana de Mantenimiento' limit 1];
//Buscamos el recordtype correspondiente a problema operativo
RecordType ttrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Trouble ticket' limit 1];
PageReference sigpag = null;
if(this.newCIDS == null || this.newCIDS == ''){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se ingreso ninguna lista de CIDS.');
ApexPages.addMessage(myMsg);
return sigpag;
}
List<String> lines = this.newCIDS.split('\n');
//Inicializamos una lista de CIDS
Set<String> cids = new Set<String>();
//Inicializamos un mapa para poder reportar sobre el exito de un particular CID
Map<String,CIDWrap> cidsmap = new Map<String,CIDWrap>();
for(String line:lines){
System.debug('line:'+line);
//Recopilamos los numeros de CID en una lista
System.debug('cid:'+line.split('_')[0].trim());
cids.add(line.split('_')[0].trim());
CIDWrap cidw = new CIDWrap();
cidw.CID = line.split('_')[0].trim();
cidsmap.put(line.split('_')[0].trim(),cidw);
}
System.debug('cidsmap:'+cidsmap);
System.debug('cids:'+cids);
//Inicializamos una lista de assets encintrados por su cid
Map<String,Asset> servicios = new Map<String,Asset>();
//Traemos los CDIS que se estan buscando
for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and ((Status = 'Activo' or Status = 'Backlog') or (Account.Segmento_de_Cuenta__c = 'PYMES Cablecom' and (Status = 'Activo' or Status = 'Backlog' or Status = 'Cancelado')))]){
//for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and (Status = 'Activo' or Status = 'Backlog')]){
System.debug('servicio:'+record);
servicios.put(record.Circuit_ID__c,record);
}
//Primera validacion, debemos de tener al menos un servicio localizado
if(servicios.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se localizo ningún servicio con los identificadores provistos.');
ApexPages.addMessage(myMsg);
return sigpag;
}
- Javier Esquivel
- October 11, 2021
- Like
- 0
can you help me with test class for a email Messaging
im trying to do the test class for this code
public class Claseprogramadausuario {
public static void obtenerinfo(){
List<User> nlist = [SELECT Id, Username, FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, CreatedDate, LastModifiedDate, LastLoginDate, isActive FROM User WHERE Profile.Name != 'SelfService'];
string header = 'Id, Username , FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, Created Date, LastModifiedDate, LastLoginDate, isActive \n';
string finalstr = header ;
for(User u: nlist)
{
string recordString = u.id+','+u.Username +',' + u.FirstName +','+ u.LastName +','+ u.EmployeeNumber+','+ u.UserRole.name +','+ u.profile.name +','+ u.CreatedDate +','+ u.LastModifiedDate +','+ u.LastLoginDate +','+ u.IsActive +'\n';
finalstr = finalstr +recordString;
}
Messaging.EmailFileAttachment csvAttc = new Messaging.EmailFileAttachment();
blob csvBlob = Blob.valueOf(finalstr);
string csvname= 'Userinfo.csv';
csvAttc.setFileName(csvname);
csvAttc.setBody(csvBlob);
Messaging.SingleEmailMessage correo = new Messaging.SingleEmailMessage();
correo.toAddresses = new String[] {'javierandoni@gmail.com', 'dlramirez@izzi.mx'};
correo.subject = 'Clase programada test';
correo.plainTextBody = 'Clase programada test';
Messaging.SingleEmailMessage[] correos = new List<Messaging.SingleEmailMessage> {correo};
correo.setPlainTextBody('Account CSV ');
correo.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttc});
Messaging.SendEmailResult[] results = Messaging.sendEmail(correos);
if (results[0].success)
{
System.debug('The email was sent successfully.');
} else
{
System.debug('The email failed to send: ' + results[0].errors[0].message);
}
}
}
And the test class im trying to do is this
// Test Class
@IsTest
Public class ClaseprogramadausuarioTest {
@isTest static void testenviomail(){
string pri= Claseprogramadausuario.obtenerinfo();
System.assertEquals('The email was sent successfully.', pri);
}
}
but i get this message: Illegal assignment from void to String.
public class Claseprogramadausuario {
public static void obtenerinfo(){
List<User> nlist = [SELECT Id, Username, FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, CreatedDate, LastModifiedDate, LastLoginDate, isActive FROM User WHERE Profile.Name != 'SelfService'];
string header = 'Id, Username , FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, Created Date, LastModifiedDate, LastLoginDate, isActive \n';
string finalstr = header ;
for(User u: nlist)
{
string recordString = u.id+','+u.Username +',' + u.FirstName +','+ u.LastName +','+ u.EmployeeNumber+','+ u.UserRole.name +','+ u.profile.name +','+ u.CreatedDate +','+ u.LastModifiedDate +','+ u.LastLoginDate +','+ u.IsActive +'\n';
finalstr = finalstr +recordString;
}
Messaging.EmailFileAttachment csvAttc = new Messaging.EmailFileAttachment();
blob csvBlob = Blob.valueOf(finalstr);
string csvname= 'Userinfo.csv';
csvAttc.setFileName(csvname);
csvAttc.setBody(csvBlob);
Messaging.SingleEmailMessage correo = new Messaging.SingleEmailMessage();
correo.toAddresses = new String[] {'javierandoni@gmail.com', 'dlramirez@izzi.mx'};
correo.subject = 'Clase programada test';
correo.plainTextBody = 'Clase programada test';
Messaging.SingleEmailMessage[] correos = new List<Messaging.SingleEmailMessage> {correo};
correo.setPlainTextBody('Account CSV ');
correo.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttc});
Messaging.SendEmailResult[] results = Messaging.sendEmail(correos);
if (results[0].success)
{
System.debug('The email was sent successfully.');
} else
{
System.debug('The email failed to send: ' + results[0].errors[0].message);
}
}
}
And the test class im trying to do is this
// Test Class
@IsTest
Public class ClaseprogramadausuarioTest {
@isTest static void testenviomail(){
string pri= Claseprogramadausuario.obtenerinfo();
System.assertEquals('The email was sent successfully.', pri);
}
}
but i get this message: Illegal assignment from void to String.
- Javier Esquivel
- October 04, 2021
- Like
- 0