Created
April 30, 2021 09:51
-
-
Save itsmebasti/2cf7dde46ad94ff4afc3d08e55cec877 to your computer and use it in GitHub Desktop.
GackAwareIterable
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class GackAwareIterable implements Iterable<Object> { | |
private final Iterable<Object> iterable; | |
public GackAwareIterable(Iterable<Object> iterable) { | |
this.iterable = iterable; | |
} | |
public Iterator<Object> iterator() { | |
Iterator<Object> result; | |
if(iterable instanceof Database.QueryLocator) { | |
result = (Iterator<Object>) ((Database.QueryLocator) iterable).iterator(); | |
} | |
else { | |
result = iterable.iterator(); | |
} | |
return result; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@IsTest | |
private class GackAwareIterable_Test { | |
@IsTest | |
private static void happyPath() { | |
// Setup | |
insert new Account(Name = 'test'); | |
Database.QueryLocator queryLocator = Database.getQueryLocator([SELECT Name FROM Account]); | |
Iterable<SObject> iterable = queryLocator; | |
// Execute | |
Iterator<SObject> iterator = (Iterator<SObject>) new GackAwareIterable(iterable).iterator(); | |
// Verify | |
System.assertEquals([SELECT Name FROM Account], iterator.next()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment