{"action":"created","comment":{"url":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/comments/95491012","pull_request_review_id":16047262,"id":95491012,"diff_hunk":"@@ -24,476 +24,688 @@\n  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n **/\n \n+@isTest\n+private class fflib_QueryFactoryTest {\n \n-@IsTest\n-private class fflib_ApplicationTest \n-{\n-\t@IsTest\n-\tprivate static void callingDomainFactoryShouldGiveRegisteredImplsAndMocks()\n-\t{\n-\t\t// Registered Accounts domain class by SObject List\n-\t\tId testAccountId = fflib_IDGenerator.generate(Account.SObjectType);\n-\t\tfflib_ISObjectDomain domainObjectAcct = \n-\t\t\tDomain.newInstance(\n-\t\t\t\tnew List<Account> \n-\t\t\t\t\t{ new Account( \n-\t\t\t\t\t\tId = testAccountId,\n-\t\t\t\t\t\tName = 'Test Account') });\n-\t\tSystem.assert(domainObjectAcct instanceof AccountsDomain);\n-\t\tSystem.assertEquals(testAccountId, domainObjectAcct.getRecords()[0].Id);\n-\n-\t\t// Registered Accounts domain class by SObject List\n-\t\ttestAccountId = fflib_IDGenerator.generate(Account.SObjectType);\n-\t\tdomainObjectAcct = \n-\t\t\tDomain.newInstance(\n-\t\t\t\tnew List<SObject> \n-\t\t\t\t\t{ new Account( \n-\t\t\t\t\t\tId = testAccountId,\n-\t\t\t\t\t\tName = 'Test Account') }\n-\t\t\t\t, Account.SObjectType);\n-\t\tSystem.assert(domainObjectAcct instanceof AccountsDomain);\n-\t\tSystem.assertEquals(testAccountId, domainObjectAcct.getRecords()[0].Id);\t\t\n-\n-\t\t// Registered Opportunities domain class by SObject List\n-\t\tId testOpportunityId = fflib_IDGenerator.generate(Opportunity.SObjectType);\n-\t\tfflib_ISObjectDomain domainObjectOpp = \n-\t\t\tDomain.newInstance(\n-\t\t\t\tnew List<Opportunity> \n-\t\t\t\t\t{ new Opportunity( \n-\t\t\t\t\t\tId = testOpportunityId,\n-\t\t\t\t\t\tName = 'Test Opportunity') });\n-\t\tSystem.assertEquals(testOpportunityId, domainObjectOpp.getRecords()[0].Id);\t\t\n-\t\tSystem.assert(domainObjectOpp instanceof OpportuntiesDomain);\n-\n-\t\t// Test failure for creating new instance using IConstructable2\n-\t\t// for domain class that does not support it\n-\t\ttestOpportunityId = fflib_IDGenerator.generate(Opportunity.SObjectType);\n-\t\tdomainObjectOpp = \n-\t\t\tDomain.newInstance(\n-\t\t\t\tnew List<SObject> \n-\t\t\t\t\t{ new Opportunity( \n-\t\t\t\t\t\tId = testOpportunityId,\n-\t\t\t\t\t\tName = 'Test Opportunity') }\n-\t\t\t\t, Opportunity.SObjectType);\n-\t\tSystem.assertEquals(testOpportunityId, domainObjectOpp.getRecords()[0].Id);\t\t\n-\t\tSystem.assert(domainObjectOpp instanceof OpportuntiesDomain);\n-\n-\t\t// Given\n-\t\tfflib_ApexMocks mocks = new fflib_ApexMocks();\n-\t\tmocks.startStubbing();\t\t\n-\t\tfflib_ISObjectDomain domainMock = new fflib_SObjectMocks.SObjectDomain(mocks);\n-\t\tmocks.when(domainMock.sObjectType()).thenReturn(Account.SObjectType);\n-\t\tmocks.stopStubbing();\t\t\n-\t\tDomain.setMock(domainMock);\n-\n-\t\t// When\n-\t\tdomainObjectAcct = \n-\t\t\tDomain.newInstance(\n-\t\t\t\tnew List<Account> \n-\t\t\t\t\t{ new Account( \n-\t\t\t\t\t\tId = testAccountId,\n-\t\t\t\t\t\tName = 'Test Account') });\n-\n-\t\t// Then\n-\t\tSystem.assert(domainObjectAcct instanceof fflib_SObjectMocks.SObjectDomain);\n-\n-\t\t// When\n-\t\tdomainObjectAcct = \n-\t\t\tDomain.newInstance(\n-\t\t\t\tnew List<SObject> \n-\t\t\t\t\t{ new Account( \n-\t\t\t\t\t\tId = testAccountId,\n-\t\t\t\t\t\tName = 'Test Account') }\n-\t\t\t\t, Account.SObjectType);\n-\n-\t\t// Then\n-\t\tSystem.assert(domainObjectAcct instanceof fflib_SObjectMocks.SObjectDomain);\t\t\n+\t@isTest\n+\t\n+\t@isTest\n+\tstatic void invalidFields_string(){\n+\t\tfflib_QueryFactory qf = new fflib_QueryFactory(Contact.SObjectType);\n+\t\tqf.selectField('name');\n+\t\tException e; \n+\t\ttry{\n+\t\t\tqf.selectFields( new List<String>{'not_a__field'} );\n+\t\t}catch(fflib_QueryFactory.InvalidFieldException ex){\n+\t\t\te = ex;\n+\t\t}\n+\t\tSystem.assertNotEquals(null,e);\n \t}\n \n-\t@IsTest\n-\tprivate static void callingDomainFactoryWithIdsShouldGiveRegisteredImpls()\n-\t{\n-\t\t// Given\n-\t\tfflib_ApexMocks mocks = new fflib_ApexMocks();\n-\t\tmocks.startStubbing();\n-\t\tfflib_ISObjectSelector selectorMock = new fflib_SObjectMocks.SObjectSelector(mocks);\n-\t\tId testAccountId = fflib_IDGenerator.generate(Account.SObjectType);\n-\t\tList<Account> accounts = \n-\t\t\tnew List<Account> \n-\t\t\t\t{ new Account( \n-\t\t\t\t\tId = testAccountId,\n-\t\t\t\t\tName = 'Test Account') };\n-\t\tSet<Id> accountIds = new Map<Id, Account>(accounts).keySet();\n-\t\tmocks.when(selectorMock.selectSObjectsById(accountIds)).thenReturn(accounts);\n-\t\tmocks.when(selectorMock.sObjectType()).thenReturn(Account.SObjectType);\n-\t\tmocks.stopStubbing();\n-\n-\t\t// When\n-\t\tSelector.setMock(selectorMock);\n-\t\tfflib_ISObjectDomain domainObjectAcc = Domain.newInstance(new Set<Id> { testAccountId });\n-\n-\t\t// Then\n-\t\tList<Account> assertAccounts = (List<Account>) domainObjectAcc.getRecords();\n-\t\tSystem.assert(domainObjectAcc instanceof AccountsDomain);\n-\t\tSystem.assertEquals(testAccountId, domainObjectAcc.getRecords()[0].Id);\t\t\n-\t\tSystem.assertEquals(1, assertAccounts.size());\n-\t\tSystem.assertEquals(testAccountId, assertAccounts[0].Id);\n-\t\tSystem.assertEquals('Test Account', assertAccounts[0].Name);\n+\t@isTest\n+\tstatic void invalidField_nullToken(){\n+\t\tfflib_QueryFactory qf = new fflib_QueryFactory(Contact.SObjectType);\n+\t\tqf.selectField('name');\n+\t\tException e;\n+\t\tSchema.SObjectField token = null;\n+\t\ttry{\n+\t\t\tqf.selectField( token );\n+\t\t}catch(fflib_QueryFactory.InvalidFieldException ex){\n+\t\t\te = ex;\n+\t\t}\n+\t\tSystem.assertNotEquals(null,e);\n \t}\n \n-\t@IsTest\n-\tprivate static void callingDomainFactoryWithGenericListShouldGiveException()\n-\t{\n-\t\ttry {\n-\t\t\tDomain.newInstance(new List<SObject>());\n-\t\t\tSystem.assert(false, 'Expected exception');\n-\t\t} catch (fflib_Application.DeveloperException e) {\n-\t\t\tSystem.assertEquals('Unable to determine SObjectType', e.getMessage());\n+\t@isTest\n+\tstatic void invalidFields_nullToken(){\n+\t\tfflib_QueryFactory qf = new fflib_QueryFactory(Contact.SObjectType);\n+\t\tqf.selectField('name');\n+\t\tException e;\n+\t\tList<Schema.SObjectField> token = new List<Schema.SObjectField>{\n+\t\t\tnull\n+\t\t};\n+\t\ttry{\n+\t\t\tqf.selectFields( token );\n+\t\t}catch(fflib_QueryFactory.InvalidFieldException ex){\n+\t\t\te = ex;\n \t\t}\n+\t\tSystem.assertNotEquals(null,e);\n \t}\n \n-\t@IsTest\n-\tprivate static void callingDomainFactoryWithNoSObjectTypeShouldGiveException()\n-\t{\n+\t@isTest\n+\tstatic void invalidFields_noQueryFields(){\n+\t\tException e;\n+\t\tList<Schema.SObjectField> sObjectFields = new List<Schema.SObjectField>();\n \t\ttry {\n-\t\t\tDomain.newInstance(new List<SObject>(), null);\n-\t\t\tSystem.assert(false, 'Expected exception');\n-\t\t} catch (fflib_Application.DeveloperException e) {\n-\t\t\tSystem.assertEquals('Must specify sObjectType', e.getMessage());\n-\t\t}\n-\t}\t\n-\n-\t@IsTest\n-\tprivate static void callingDomainFactoryWithInAccessableConstructorShouldGiveException()\n-\t{\n+\t\t\tfflib_QueryFactory.QueryField qfld = new fflib_QueryFactory.QueryField(sObjectFields);\n+\t\t} catch (Exception ex) {\n+\t\t\te = ex;\n+\t\t}\t  \n+\t\tSystem.assertNotEquals(null,e);\n+\t}\n+  \n+\t@isTest\n+\tstatic void invalidFields_noQueryField(){\n+\t\tException e;\n+\t\tSchema.SObjectField sObjectField;\n \t\ttry {\n-\t\t\tDomain.newInstance(new List<Product2>{ new Product2(Name = 'Test Product') });\n-\t\t\tSystem.assert(false, 'Expected exception');\n-\t\t} catch (fflib_Application.DeveloperException e) {\n-\t\t\tSystem.assertEquals('Domain constructor class not found for SObjectType Product2', e.getMessage());\n-\t\t}\n+\t\t\tfflib_QueryFactory.QueryField qfld = new fflib_QueryFactory.QueryField(sObjectField);\n+\t\t} catch (Exception ex) {\n+\t\t\te = ex;\n+\t\t}\t  \n+\t\tSystem.assertNotEquals(null,e);\n+\t}\n \n-\t\ttry {\n-\t\t\tDomain.newInstance(new List<SObject>{ new Product2(Name = 'Test Product') }, Product2.SObjectType);\n-\t\t\tSystem.assert(false, 'Expected exception');\n-\t\t} catch (fflib_Application.DeveloperException e) {\n-\t\t\tSystem.assertEquals('Domain constructor class not found for SObjectType Product2', e.getMessage());\n-\t\t}\t\t\n+\t@isTest\n+\tstatic void invalidFields_queryFieldsNotEquals(){\n+\t\tException e;\n+\t\tSchema.SObjectField sObjectField;\n+\t\tfflib_QueryFactory.QueryField qfld = new fflib_QueryFactory.QueryField(Contact.Name);","path":"fflib/src/classes/fflib_ApplicationTest.cls","position":224,"original_position":224,"commit_id":"4c53b37ede51235ca6d5bc24a6c94e2c56a07b7e","original_commit_id":"4c53b37ede51235ca6d5bc24a6c94e2c56a07b7e","user":{"login":"dieffrei","id":3090010,"avatar_url":"https://avatars.githubusercontent.com/u/3090010?v=3","gravatar_id":"","url":"https://api.github.com/users/dieffrei","html_url":"https://github.com/dieffrei","followers_url":"https://api.github.com/users/dieffrei/followers","following_url":"https://api.github.com/users/dieffrei/following{/other_user}","gists_url":"https://api.github.com/users/dieffrei/gists{/gist_id}","starred_url":"https://api.github.com/users/dieffrei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dieffrei/subscriptions","organizations_url":"https://api.github.com/users/dieffrei/orgs","repos_url":"https://api.github.com/users/dieffrei/repos","events_url":"https://api.github.com/users/dieffrei/events{/privacy}","received_events_url":"https://api.github.com/users/dieffrei/received_events","type":"User","site_admin":false},"body":"Method names should not contain underscores","created_at":"2017-01-11T00:40:56Z","updated_at":"2017-01-11T00:40:56Z","html_url":"https://github.com/dieffrei/fflib-apex-common/pull/20#discussion_r95491012","pull_request_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/20","_links":{"self":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/comments/95491012"},"html":{"href":"https://github.com/dieffrei/fflib-apex-common/pull/20#discussion_r95491012"},"pull_request":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/20"}}},"pull_request":{"url":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/20","id":100980651,"html_url":"https://github.com/dieffrei/fflib-apex-common/pull/20","diff_url":"https://github.com/dieffrei/fflib-apex-common/pull/20.diff","patch_url":"https://github.com/dieffrei/fflib-apex-common/pull/20.patch","issue_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues/20","number":20,"state":"open","locked":false,"title":"Another branch","user":{"login":"dieffrei","id":3090010,"avatar_url":"https://avatars.githubusercontent.com/u/3090010?v=3","gravatar_id":"","url":"https://api.github.com/users/dieffrei","html_url":"https://github.com/dieffrei","followers_url":"https://api.github.com/users/dieffrei/followers","following_url":"https://api.github.com/users/dieffrei/following{/other_user}","gists_url":"https://api.github.com/users/dieffrei/gists{/gist_id}","starred_url":"https://api.github.com/users/dieffrei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dieffrei/subscriptions","organizations_url":"https://api.github.com/users/dieffrei/orgs","repos_url":"https://api.github.com/users/dieffrei/repos","events_url":"https://api.github.com/users/dieffrei/events{/privacy}","received_events_url":"https://api.github.com/users/dieffrei/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-01-11T00:20:16Z","updated_at":"2017-01-11T00:40:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8b3b14d6ae840cc3808e443f2812275b61681f0d","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/20/commits","review_comments_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/20/comments","review_comment_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues/20/comments","statuses_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/statuses/4c53b37ede51235ca6d5bc24a6c94e2c56a07b7e","head":{"label":"dieffrei:another-branch","ref":"another-branch","sha":"4c53b37ede51235ca6d5bc24a6c94e2c56a07b7e","user":{"login":"dieffrei","id":3090010,"avatar_url":"https://avatars.githubusercontent.com/u/3090010?v=3","gravatar_id":"","url":"https://api.github.com/users/dieffrei","html_url":"https://github.com/dieffrei","followers_url":"https://api.github.com/users/dieffrei/followers","following_url":"https://api.github.com/users/dieffrei/following{/other_user}","gists_url":"https://api.github.com/users/dieffrei/gists{/gist_id}","starred_url":"https://api.github.com/users/dieffrei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dieffrei/subscriptions","organizations_url":"https://api.github.com/users/dieffrei/orgs","repos_url":"https://api.github.com/users/dieffrei/repos","events_url":"https://api.github.com/users/dieffrei/events{/privacy}","received_events_url":"https://api.github.com/users/dieffrei/received_events","type":"User","site_admin":false},"repo":{"id":77337343,"name":"fflib-apex-common","full_name":"dieffrei/fflib-apex-common","owner":{"login":"dieffrei","id":3090010,"avatar_url":"https://avatars.githubusercontent.com/u/3090010?v=3","gravatar_id":"","url":"https://api.github.com/users/dieffrei","html_url":"https://github.com/dieffrei","followers_url":"https://api.github.com/users/dieffrei/followers","following_url":"https://api.github.com/users/dieffrei/following{/other_user}","gists_url":"https://api.github.com/users/dieffrei/gists{/gist_id}","starred_url":"https://api.github.com/users/dieffrei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dieffrei/subscriptions","organizations_url":"https://api.github.com/users/dieffrei/orgs","repos_url":"https://api.github.com/users/dieffrei/repos","events_url":"https://api.github.com/users/dieffrei/events{/privacy}","received_events_url":"https://api.github.com/users/dieffrei/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dieffrei/fflib-apex-common","description":"Common Apex Library supporting Apex Enterprise Patterns and much more!","fork":true,"url":"https://api.github.com/repos/dieffrei/fflib-apex-common","forks_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/forks","keys_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/teams","hooks_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/hooks","issue_events_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues/events{/number}","events_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/events","assignees_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/assignees{/user}","branches_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/branches{/branch}","tags_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/tags","blobs_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/refs{/sha}","trees_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/statuses/{sha}","languages_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/languages","stargazers_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/stargazers","contributors_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/contributors","subscribers_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/subscribers","subscription_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/subscription","commits_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/commits{/sha}","git_commits_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/commits{/sha}","comments_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/comments{/number}","issue_comment_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues/comments{/number}","contents_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/contents/{+path}","compare_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/merges","archive_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/downloads","issues_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues{/number}","pulls_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls{/number}","milestones_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/milestones{/number}","notifications_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/labels{/name}","releases_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/releases{/id}","deployments_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/deployments","created_at":"2016-12-25T18:07:36Z","updated_at":"2016-12-25T18:07:39Z","pushed_at":"2017-01-11T00:20:17Z","git_url":"git://github.com/dieffrei/fflib-apex-common.git","ssh_url":"git@github.com:dieffrei/fflib-apex-common.git","clone_url":"https://github.com/dieffrei/fflib-apex-common.git","svn_url":"https://github.com/dieffrei/fflib-apex-common","homepage":"","size":19890,"stargazers_count":0,"watchers_count":0,"language":"Apex","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"dieffrei:master","ref":"master","sha":"efc431f44e687c8a91854f14a106a8cde18f02f2","user":{"login":"dieffrei","id":3090010,"avatar_url":"https://avatars.githubusercontent.com/u/3090010?v=3","gravatar_id":"","url":"https://api.github.com/users/dieffrei","html_url":"https://github.com/dieffrei","followers_url":"https://api.github.com/users/dieffrei/followers","following_url":"https://api.github.com/users/dieffrei/following{/other_user}","gists_url":"https://api.github.com/users/dieffrei/gists{/gist_id}","starred_url":"https://api.github.com/users/dieffrei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dieffrei/subscriptions","organizations_url":"https://api.github.com/users/dieffrei/orgs","repos_url":"https://api.github.com/users/dieffrei/repos","events_url":"https://api.github.com/users/dieffrei/events{/privacy}","received_events_url":"https://api.github.com/users/dieffrei/received_events","type":"User","site_admin":false},"repo":{"id":77337343,"name":"fflib-apex-common","full_name":"dieffrei/fflib-apex-common","owner":{"login":"dieffrei","id":3090010,"avatar_url":"https://avatars.githubusercontent.com/u/3090010?v=3","gravatar_id":"","url":"https://api.github.com/users/dieffrei","html_url":"https://github.com/dieffrei","followers_url":"https://api.github.com/users/dieffrei/followers","following_url":"https://api.github.com/users/dieffrei/following{/other_user}","gists_url":"https://api.github.com/users/dieffrei/gists{/gist_id}","starred_url":"https://api.github.com/users/dieffrei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dieffrei/subscriptions","organizations_url":"https://api.github.com/users/dieffrei/orgs","repos_url":"https://api.github.com/users/dieffrei/repos","events_url":"https://api.github.com/users/dieffrei/events{/privacy}","received_events_url":"https://api.github.com/users/dieffrei/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dieffrei/fflib-apex-common","description":"Common Apex Library supporting Apex Enterprise Patterns and much more!","fork":true,"url":"https://api.github.com/repos/dieffrei/fflib-apex-common","forks_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/forks","keys_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/teams","hooks_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/hooks","issue_events_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues/events{/number}","events_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/events","assignees_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/assignees{/user}","branches_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/branches{/branch}","tags_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/tags","blobs_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/refs{/sha}","trees_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/statuses/{sha}","languages_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/languages","stargazers_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/stargazers","contributors_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/contributors","subscribers_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/subscribers","subscription_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/subscription","commits_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/commits{/sha}","git_commits_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/git/commits{/sha}","comments_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/comments{/number}","issue_comment_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues/comments{/number}","contents_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/contents/{+path}","compare_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/merges","archive_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/downloads","issues_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues{/number}","pulls_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls{/number}","milestones_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/milestones{/number}","notifications_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/labels{/name}","releases_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/releases{/id}","deployments_url":"https://api.github.com/repos/dieffrei/fflib-apex-common/deployments","created_at":"2016-12-25T18:07:36Z","updated_at":"2016-12-25T18:07:39Z","pushed_at":"2017-01-11T00:20:17Z","git_url":"git://github.com/dieffrei/fflib-apex-common.git","ssh_url":"git@github.com:dieffrei/fflib-apex-common.git","clone_url":"https://github.com/dieffrei/fflib-apex-common.git","svn_url":"https://github.com/dieffrei/fflib-apex-common","homepage":"","size":19890,"stargazers_count":0,"watchers_count":0,"language":"Apex","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/20"},"html":{"href":"https://github.com/dieffrei/fflib-apex-common/pull/20"},"issue":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues/20"},"comments":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/issues/20/comments"},"review_comments":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/20/comments"},"review_comment":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/pulls/20/commits"},"statuses":{"href":"https://api.github.com/repos/dieffrei/fflib-apex-common/statuses/4c53b37ede51235ca6d5bc24a6c94e2c56a07b7e"}}}}
{"actor":{"display_login":"dieffrei"}}