Skip to content

Instantly share code, notes, and snippets.

@itsmebasti
Created April 30, 2021 09:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itsmebasti/2cf7dde46ad94ff4afc3d08e55cec877 to your computer and use it in GitHub Desktop.
Save itsmebasti/2cf7dde46ad94ff4afc3d08e55cec877 to your computer and use it in GitHub Desktop.
GackAwareIterable
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;
}
}
@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