You need to sign in to do that
Don't have an account?
Abhinav Gupta
Chatter Apex Test Case Bug in API version 24
I noticed this issue while writing an Apex test case for some chatter related functionality. For sake of this post, I am just posting the simplified test case. Here is the code
public static testmethod void testFeeds() { Test.startTest(); // Create a Test Account Account acc = new Account(Name = 'Demo Account'); insert acc; // Create FeedItem using this Account as a Parent Record FeedItem fp = new FeedItem(); fp.Body = 'Testing via Apex'; fp.parentId = acc.id; insert fp; // Query AccountFeed back to verify if the post was created correctly AccountFeed[] accFeed = [Select Id, Body From AccountFeed Where ParentId =:acc.Id]; // should be 1 record in the feed for this accountid System.assertEquals(1, accFeed.size()); Test.stopTest(); }
This test case fails, because there are no rows in AccountFeed for the given “parentId”. This happens only if Apex class API version is “24”, but the same tests passes if the API version is lowered, for ex. “23”.
Seems something is broken in Apex Test fixture.
Use @isTest(SeeAllData=true) please,
default you cannot see the real data in test from Ver. 24
Document is here:
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_annotation_isTest.htm
I'm writing unit tests for a controller. In my controller, I'm inserting a record and attaching a chatter post to it. While I can query the record, I can *not* query the record's feed in v24. I am forced to use the @isTest(SeeAllData=true) version of the unit test in order to get it.
This doesn't make sense to me. If my controller inserts a chatter post, I should be able to query it out in my test. This is a little confusing and should be noted in the documenation if this is by design.
Thanks for bringing this topic up, OP.
I tested based on your scenario.
In a apex, I insert a account and then insert a feed on this new account.
In the test class, without (SeeAllData=true), I can access this account and the feed on this account.
If you can give more details, ....
Would be nice if you can share the detail, I am interested to know, how it worked in API v24 test case and without using SeeAllData=true !
Not sure if this is in your case,
public with sharing class Apex_Test1 {
public static Id Account1() {
Account acc = new Account();
acc.Name = 'New ' + Datetime.now();
insert acc;
FeedItem fi = new FeedItem();
fi.Body = acc.Name;
fi.ParentId = acc.Id;
insert fi;
return acc.Id;
}
@isTest static void test1() {
Id id1 = Apex_Test1.Account1();
FeedItem fi = [Select Id, Body From FeedItem Where ParentId = : id1];
System.assertEquals( fi.Body, [Select Name From Account Where Id =: id1].Name );
}
}
Hi ,
I have test method where i try to get the Feeditem of type trackedChange which is automatically created when we update a field value that is being tracked via feedTracking. But the test method is not able to get that feedItem record. Even tried with lowering the version, but no results. Can someone help?
Following is the testmethod: -
static testmethod void mytest(){
Account acc = new Account(Name = 'TestAccountBhushan',Phone = '040-754-7845');
insert acc;
acc.Phone = '040-123-4567';
update acc;
List<FeedItem > txtFeedItem = [SELECT Id,
ParentId FROM FeedItem Where ParentId=: acc.Id];
System.assertEquals(1, txtFeedItem.size());
}