I've implemented some functionality around MultiCurrency in a Managed package. Since it needs to be able to support non-multi-currency orgs, all references to the CurrencyIsoCode field are done using Dynamic apex.
When requesting a record via SOQL, it appears that the CurrencyIsoCode field is transparently added to the resultset when executing code in the UI - I discovered this by accident and was pleasantly surprised that it works.
For example, the following query
Order__c order = [SELECT Name FROM Order__c WHERE Id = :op_id]; String currencyCode = order.get('CurrencyIsoCode');
Will successfully fetch the Currency Iso Code when executed normally via the user, even through I didn't explicitly include that field in the SOQL query.
However, the same code fails in a Test Case with the expected error "SObject row was retrieved via SOQL without querying the requested field: CurrencyIsoCode"
Am I missing something? How come this works in Production but not in actual test code? It would be nice to be able to keep the above code rather than modifying it to use (somewhat messier) dynamic SOQL.