Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enterprise Patterns 'Light' #36

Closed
john-m opened this issue Mar 24, 2015 · 28 comments
Closed

Enterprise Patterns 'Light' #36

john-m opened this issue Mar 24, 2015 · 28 comments

Comments

@john-m
Copy link

john-m commented Mar 24, 2015

Firstly - thanks for sharing the patterns!

This post was prompted by a brief exchange with Andrew after this tweet :

Great call with @LaceySnr this morning, talking about Apex Enterprise Patterns “Light” and consulting project usage! @SalesforceDevs

— Andrew Fawcett (@andyinthecloud) March 6, 2015
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

At the time I was trying to decide whether to use the patterns in my upcoming project but was concerned about the complexity. Hence, my interest in a ‘Light’ version…

We’ve been on Salesforce for about 18 months and our implementation, although not particularly large, covers quite a lot of the platform with two-way integrations to our website on the frontend and our legacy ERP on the backend, scheduled & batch Apex plus the usual VF controllers and triggers etc. At this stage I'm starting to feel the maintenance pain and therefore very receptive to the ‘separation of concerns’ approach.

I’m the business owner and spend only a small part of my time as a ‘developer’, going months (if all is running well) without touching the code… but we’re about to embark on another phase of implementation involving FinancialForce Accounts & HCM and then re-implementing what’s left of the ERP in Salesforce.

In short I want maximum separation of concerns to help with maintainability but with minimum complexity!

I've seen this post from Matt Lacey but I’m not confident enough to go pulling the framework apart and I have a feeling that I’m going to find some of the more advanced parts, eg mocks, useful once I get into it, so my approach to 'Light' so far is to just pick what seem like the more straightforward and approachable parts and start there. Something like this :

  • Application class that just implements Unit of Work
  • Service classes - I’d already started collecting related methods into classes so this involves the adoption of a more formal and disciplined approach to this, and Unit of Work is helpful here
  • Selector classes - pretty straightforward to implement and address an issue that I’ve already experienced trouble with (consistency of fields returned via SOQL)
  • Domain class - this one seems less obvious but plan to try it out next time I need to code a trigger
  • Avoid most of the interfaces/factories/mocks ie the 'advanced' stuff, at least for the time being

I plan to try this with new code or when any of the existing code has to be reworked.

I’d be interested to hear how others have approached getting started and working with the patterns.

@afawcett
Copy link
Contributor

Hi @john-m, thanks for the post!

Yes very keen to keep exploring with Matt on the light edition. Matt and I are keeping an an eye on it becoming a separate code base so want to find a way to update the main repo with a core version allowing extensions for features like mocks for example. Doing this so others using it already can have a clean upgrade path is still something we are pondering.

In the meantime your choices on what to use are perfect, the library is in fact quite modular, though Salesforce don't really help us realise this physically at the moment. You may want to take a closer look at the Unit Of Work, it really helps with bulkification and reduces code complexity when 'stitching' records together. Matt's original motivation was to keep down the 'footprint' as he is working in a consulting context and likely deploying raw into production orgs. In a packaged context, if your not worried about that and want to focus on only 'using' specific classes you want and just ignoring those you don't that also works just fine.

Thanks for taking the time to post and share your thoughts! 👍

@tfuda
Copy link
Contributor

tfuda commented Mar 26, 2015

We have been using some aspects of Enterprise Patterns since the summer of 2014 in our product. We have a large, complex codebase, and have been gradually incorporating Enterprise Patterns. At this time, we're primarily using the Selector pattern and the Unit of Work pattern within our application, but also making some use of the Domain pattern too. I think the Selector and Unit Of Work patterns are the two patterns that are most easily integrated into existing codebases.

In the case of the Selector pattern, what we've done is replace a lot of the static SOQL statements sprinkled throughout or code so that we are now utilizing classes that extend SObjectSelector. We find that in many cases, when we need to retrieve a set of records, in addition to pulling in the base fields directly from the SObject, we also need to pull related fields from the parent SObject(s). What we've done is extend the base SObjectSelector with a class that exposes a "getRelatedFieldList" method. This makes it easier for one SObjectSelector class to add related fields from a parent SObjectSelector. For example, if I had a Selector_Contact class, it could invoke the getRelatedFieldList on the Selector_Account class to add the related fields from the parent Account to the Contact queries it generates.

We use the Unit Of Work pattern pretty extensively too. We use it a lot in the scaffolding of objects for unit testing purposes. Our unit tests often require extensive scaffolding, with the creation of multiple layers of inter-related objects before the test can even be executed (one of these days, I need to devote some time to looking more closely at Apex Mocks). UOW makes for much cleaner, tighter scaffolding code. We also utilize it pretty extensively in some of the more complex pieces of business logic, where we're modifying collections of inter-related objects in different ways (for example, applying discounts, then calculating tax, then applying fees). We also integrated UOW with our CRUD/FLS security implementation, so that the "commitWork" operation delegates to our CRUD/FLS layer when performing the actual underlying DML operations.

We also make some use of the Domain pattern. Our system is an order processing system, whereby there is an order, plus any number of child line items. We implemented a Domain class to wrap these child line items. This Domain class contains the business logic for actually performing the operations such as applying discounts, or calculating tax, etc., on a collection of line items.

Hope this helps you get started within integrating Enterprise Patterns into your applications.

@afawcett
Copy link
Contributor

Awesome contribution to this thread @tfuda thank you!

@daveespo
Copy link
Contributor

(Disclaimer: @tfuda and I work together)

I also want to chime up in support Matt Lacey's blog post -- We're actually a few months behind on taking the upstream updates to fflib-apex-common due to all of the Apex Mocks code that is now a compile-time dependency -- it's kind of frightening to pull in 30 or 40 classes before you even write a line of code (this is more of a indictment of the lack of 'package' or external library support in Apex, not of Apex Mocks or the Enterprise Patterns)

So basically, this is a +1 comment :-)

@john-m
Copy link
Author

john-m commented Mar 27, 2015

Thanks for the comments everyone.

@tfuda getRelatedFieldList() on SObjectSelector sounds like a great idea! Your comments about the Domain class are interesting - I have a similar situation with Contracts & Contract 'Lines' to implement so I'll take a look at that.

Agree that the number of classes is a bit overwhelming at first and finding a manageable way to approach it has been a challenge. The very small amount I've done so far - a 'Service' using UoW went very smoothly :)

@afawcett
Copy link
Contributor

The integration with fflib_QueryFactory and fflib_SObjectSelector does permit selector parent child reuse through the approach shown in this exampe. By call addQueryFactorySubselect method. You can also configureQueryFactoryFields to add lookup relationship fields to the query.

public List<Opportunity> selectByIdWithProducts(Set<ID> idSet)
{
    fflib_QueryFactory opportunitiesQueryFactory = newQueryFactory();

    fflib_QueryFactory lineItemsQueryFactory = 
        new OpportunityLineItemsSelector().
            addQueryFactorySubselect(opportunitiesQueryFactory);

    new PricebookEntriesSelector().
        configureQueryFactoryFields(lineItemsQueryFactory, 'PricebookEntry');
    new ProductsSelector().
        configureQueryFactoryFields(lineItemsQueryFactory, 'PricebookEntry.Product2');
    new PricebooksSelector().
        configureQueryFactoryFields(lineItemsQueryFactory, 'PricebookEntry.Pricebook2');

    return (List<Opportunity>) Database.query(
        opportunitiesQueryFactory.setCondition('id in :idSet').toSOQL());
}

This results in the following SOQL...

SELECT CloseDate, ExpectedRevenue, Type, StageName, Pricebook2Id, Id, Description, Amount, AccountId, Name, DiscountType__c, Probability,  
   (SELECT PricebookEntry.Product2Id, PricebookEntry.Pricebook2.Description,
    PricebookEntry.UseStandardPrice, PricebookEntry.UnitPrice, Id, PricebookEntry.Id,
    PricebookEntry.Product2.Name, SortOrder, PricebookEntry.Pricebook2.Id,
    PricebookEntry.Pricebook2.IsStandard, PricebookEntry.Name, TotalPrice, PricebookEntryId,
    PricebookEntry.Pricebook2.IsActive, OpportunityId, PricebookEntry.Product2.Description,
    PricebookEntry.Product2.IsActive, PricebookEntry.Pricebook2.Name, Quantity, UnitPrice,
    PricebookEntry.IsActive, PricebookEntry.Pricebook2Id, PricebookEntry.Product2.ProductCode,
    Description, PricebookEntry.ProductCode, PricebookEntry.Product2.Id, ListPrice, 
    PricebookEntry.Product2.DiscountingApproved__c FROM OpportunityLineItems ORDER BY
    SortOrder ASC NULLS FIRST , PricebookEntry.Name ASC NULLS FIRST )
    FROM Opportunity WHERE id in :idSet ORDER BY Name ASC NULLS FIRST 

@john-m
Copy link
Author

john-m commented Mar 27, 2015

Thanks @afawcett !

@afawcett
Copy link
Contributor

afawcett commented Jun 6, 2015

Just a +1 from me to say, i've not forgotten about this thread and the great work Matt has started.

@mattlacey
Copy link

Heh, I had no idea this discussion had even started! Nice 👍

I'm definitely interested in seeing how we can get the changes I made merged back in like we talked about on the phone so many months ago (seriously, where does time go?). The stripped back version I created has worked really well for one of our clients so I think it has merit, finding free time is another matter of course.

@afawcett
Copy link
Contributor

@mattlacey i hear ya, i know, weeks are spinning by for me, Dreamforce feels like it could be next week and i've so much to do! But yes, i am also pleased the conversation is alive and the desire is as well, it would just take a strong window of effort to crack it i'm sure, but we will, confident in that i am! 👍

@cdcarter
Copy link

I'm looking at moving a client project of mine into the "light" branch that @mattlacey built out. So, a general +1 for this idea.

@afawcett
Copy link
Contributor

Excellent @cdcarter post Dreamforce when my world goes back standard level of busy, i'll for sure wanting to be looking at this! 👍

@o-lexi
Copy link

o-lexi commented Dec 12, 2015

I'm also interested in 'light edition', wondering how outdated it is from the original fflib-apex-common. @mattlacey, would it be possible to have instructions on how to remove the dependency on the Apex Mocks library?
P.S. Was googling for 'best practices' and frameworks for force.com development and this turned out to be the most thought concept, along with some other triggers and test 'factory' solutions available from other developers. It's such a shame for the company with billions in revenue, thousands of employees and certified developers, hundreds of platform evangelists and MVPs to have outdated and broken links on the help documentation and even more outdated code shares and who-knows-why so called 'best practice' articles, and to do not have at least a few open source community supported common utilities code repositories available.

@afawcett
Copy link
Contributor

I'm hoping to get stuck into this in the new year for sure!

@o-lexi
Copy link

o-lexi commented Dec 13, 2015

Thank you, Andrew!
I just compared some of the classes and, considering a larger user base (I hope ;)), continuous fixes, and not that many classes in the Apex Mocks library, it would be beneficial to start with FinancialForce Apex Common

@afawcett
Copy link
Contributor

#notforgotten

@mattlacey
Copy link

Whoah, where did the time go? Sorry for not replying @o-lexi, was travelling in December and just missed it :(

I've not updated my code in a while so it's probably lagging, but then it mostly consists of 'core' features only which don't change as much. Might try and review my fork over the next week or two.

@pyao-bwc
Copy link

pyao-bwc commented Jan 9, 2019

First of all, thanks for the patterns, the "light" fork, and for this thread!

I'd love to use the light fflib version, but for reason that @o-lexi mentions, feel like it's safer to go with the heavy version.

@cdcarter , @mattlacey , are you using the light fork and happy with it?

@mattlacey
Copy link

It' still in use in one of the AppExchange apps we support, but hasn't been updated in a long time. Basically it works well enough that it's not needed changes.

For the main code base I work on it wasn't a good fit as that has a rather unique architecture, but I do use a lot of the ideas and patterns, just reimplemented in a different way.

@pyao-bwc
Copy link

Thanks for the data point and your contributions to the community, Matt! Long time reader of your blog.

@mattlacey
Copy link

mattlacey commented Jan 13, 2019 via email

@marktroupe
Copy link

Is there a 'light' fork/version? if so where do I see it? thanks all

@mattlacey
Copy link

mattlacey commented Apr 10, 2019 via email

@marktroupe
Copy link

thanks @mattlacey

@gotstu
Copy link

gotstu commented May 3, 2019

@mattlacey Thanks for the fork. Was fflib_Application available when you forked? Seems also like a simple addition.

@mattlacey
Copy link

mattlacey commented May 6, 2019 via email

rob-baillie-ortoo added a commit to OrtooApps/fflib-apex-common that referenced this issue May 4, 2022
…/standardise-build-in-framework

Standardised the build - particularly running apex and getting the co…
rob-baillie-ortoo added a commit to OrtooApps/fflib-apex-common that referenced this issue May 5, 2022
573efa3 Merge pull request #1 from OrtooApps/feature/include-mocks-and-ext
869710a Merge branch 'feature/include-mocks-and-ext' into feature/ortoo
8730eea Added ortoo build script to repo
1a7964e Removed external dependencies from the fflib extensions
1b3ba7b Put apex-mocks and apex-extensions into the fflib directory
e33b28e Merge commit '07a3aafda9332ed74397bbec9319589bd3e0bec3' as 'subfolders/fflib'
47d1162 removed fflib again
cc23295 Merge commit '0598deef2560f7365d9c6c4a78b1846d75d6a6f1' as 'framework/fflib'
0598dee Squashed 'framework/fflib/' content from commit baaf94d
10bb547 removed fflib again
ad7ad4b Merge commit '2cadfa684480e349737d01f051c89ab7a425fda4' as 'subfolders/fflib'
2cadfa6 Squashed 'subfolders/fflib/' content from commit 6eb7db0
b42821a Fixed sharing on service snippets
3a8cd5e Fixed snippets issues
8d63341 Added a VSCode snippets file
1123e65 Avoid conflicting conditions being set
e19d5ea Added the ability to specify the condition on a queryfactory by using a 'ISearchCriteria'
d36342e Merge pull request apex-enterprise-patterns#41 from OrtooApps/feature/timestamped-cache-entries
2601d46 Improved hiding of date literal setters
eab9439 Merge pull request apex-enterprise-patterns#40 from OrtooApps/temp/demo-2
37c6223 Another change
d6caada Merge pull request apex-enterprise-patterns#39 from OrtooApps/temp/demo
8c028af Added some notes... temp commit
933fe55 Merge pull request apex-enterprise-patterns#38 from OrtooApps/feature/timestamped-cache-entries
cd363c5 Removed redundant TODOs
cb8cea0 Added test that re-querying aged results will put them back into the cache
97870e0 Added ability to specify maxAge and minDate in Dynamic Selector query calls
53edd71 Added test for age based cache retrieval in CachedSoqlExecutor
d122285 Added the ability to specify a maximum age or minimum date added on the CachedSoqlExecutor when querying
ba3a74c Updated TestDateTimeUtils so that now and today are always in step
807239c Added test and documentation for the cache entry
08124af Improved split between DateLiterals and DateTimeUtils
e8d1113 Added ageing capabilities to SessionCache and NullCache
14fc597 Added tests for OrgCache ageing and improved behaviours
3a26bd2 Started to build 'max age' on cache retrieval
a6c4484 Merge pull request apex-enterprise-patterns#37 from OrtooApps/feature/slight-improvement-to-session-cache
efc4672 Added removeAll to session cache
4683f0b Merge pull request apex-enterprise-patterns#36 from OrtooApps/feature/standardise-build-in-framework
e76cf0f Standardised the build - particularly running apex and getting the code coverage numbers
4938a08 Merge pull request apex-enterprise-patterns#35 from OrtooApps/temp/support-qassign-integration
a788274 Fixed merge error in test
2685af3 Simplified passing of mapping into SearchOrderBy and added test for the Null config
502b1c6 Merge branch 'main' into temp/support-qassign-integration
bb0d696 Merge pull request apex-enterprise-patterns#34 from OrtooApps/feature/add-credits-file
3dc4fcf Merge pull request apex-enterprise-patterns#33 from OrtooApps/feature/add-dynamic-uow
05c0b92 Tidy of TODO file
4f4b7d1 Minor update to credits file - do not imply that the license file linked is the one that is appropriate
a86e3f8 Added OS licenses as static resource
93d5fff Added factory methods for the Dynamic Unit of Work
01ca71e Merge pull request apex-enterprise-patterns#32 from OrtooApps/feature/add-dynamic-uow
fdc89e8 Added direct test for the dynamic unit of work ordering resolution
be4e4c4 Added output of better exception when a circular reference is found in the Dynamic UOW
0bf55d4 Added tests for the dynamic unit of work
ab04fad Started the sketch of the dynamic SObject UOW
bf2ffc9 Merge pull request apex-enterprise-patterns#31 from OrtooApps/feature/block-duplicate-configs
baaf94d Block duplicate config records
52c2442 Merge pull request apex-enterprise-patterns#30 from OrtooApps/feature/remove-example-services
9b099b5 Added custom metadata for the permissions service, so it cannot be overridden by customers
118f8d6 Added back the permissions service
20bface Removed the example services
8dd4482 Merge pull request apex-enterprise-patterns#29 from OrtooApps/feature/improve-applicaiton-performance
e366958 Added tests for the new getSobjectLocalName
9534a6f Fixed code that got the Selector type for a given Sobject Type
20d029e Fixed issue with selector factory not getting local namespaced SObject names correctly
e303575 Added tests for stripLocalNamespace
0dcd5ea Applied string based factory configurations to more factories, to improve startup performance
75e4e54 Improved the startup performance when AppLogic, ChildRecordFinder or MessageRenderer configurations exist
a82924a Improved the startup performance when AppLogic, ChildRecordFinder or MessageRenderer configurations exist
5bae05d FIxed bug with performance improvements in the logger service - null level should be regarded as ERROR
d4c4ad3 Fixed test
dd53ebb Attempting to improve startup and logging service performance
f10210a Lazy load the Unit of Work, so it doesn't get built when it isn't needed
bac4ce7 Made tests more robust
56df48d Merge pull request apex-enterprise-patterns#28 from OrtooApps/feature/simple-logging-module
04d8b4b Corrected test execution
88d1827 Improved comparing of exceptions in tests
3e3cffc Simplified the setup of the test logger instance
912d43f Simplified the setup of the test logger instance
c7a6997 Added test for ServiceUtils.logAndRethrow
5ae972a Moved logger service into core
875b961 Removed redundant TODO
bd86ba2 Move the logger service test over to use the new test utils
30d2f09 Added assertion capabilities to the TestLoggerService
145d9f6 Started to add testing around logging in the CachedSoqlExecutor
0870a6d Added TestLoggerUtils to make it easier to switch logging to the right level in tests
276ee44 Moved the FakeLogger out to TestLoggerService so other classes can use it
ab5112f Added the ability to strip context from ortoo_Exceptions
6238a10 Moved some code over to use the logger service
41658f9 Added test for the static method based LoggerService
778cafc Added testing for the logger implementation
53caeec Set the default logging level in the logging service implementation
ae77a3e Improved logging when failing to generate a logger
7c25516 Make the logger service more robust to exceptions
338f1a7 Added clarity of the log level for exceptions - handled in the static class
b53423e Added custom setting that allows for logging levels to be specified
ad9f7bc Improvements to the logger output
81f916b Starting to build a simple logger
acdf375 Merge pull request apex-enterprise-patterns#27 from OrtooApps/feature/defaulting-implementations
51f5c25 Added testing for the internals that determine the default Service name
7d7a255 Added tests for the defaulting of service implementations based on their name
da86bd7 Added tests for the defaulting of service implementations based on their name
278cca8 Implement defaulting of the Service implementation based on naming convention
d1e13aa Merge pull request apex-enterprise-patterns#22 from OrtooApps/feature/sobject-cache
de09d1a Merge branch 'main' into feature/sobject-cache
68b8323 Merge pull request apex-enterprise-patterns#26 from OrtooApps/feature/updates-to-support-example-app-repo
0009267 Added unit test for new errorRenderer capabilitites
65e34a1 Added unit test for the new configure labels on datatableHelper
69216ef Added capability to populate datatable columns with sobject definition based labels
f034717 Added capability to populate datatable columns with sobject definition based labels
868890c Added the ability to mark only certain fields as dirty when first adding a record to the DML
5e008f5 Improved output of inaccessible fields on security violation
62b2089 Added ability to convert a Set of Strings to a List of Strings
c818af7 Fixed sharing on class
0626cd9 Committing whitespace removal
0ad54fd Added test
bd555da Added the ability to get the Id of an Sobject saved via the DmlService
2a2e9b1 Added proper ortoo id to the save buttons in the view and edit form
dbfd232 Changed generateRowId to generateId, since that's more accurate
d29484d Changed generateRowId to generateId, since that's more accurate
9fa245e Added some generic labels
8c9d06a Added assertion comment
1380b62 Added objectHelper - which allows us to generate ids for use in the UI
fc8c930 Merge pull request apex-enterprise-patterns#25 from OrtooApps/feature/updates-to-support-example-app-repo
4e86c73 Added passing through of labels into the buttons in the view and edit form
2ccc43a Merge pull request apex-enterprise-patterns#24 from OrtooApps/main
69a9fea Merge pull request apex-enterprise-patterns#23 from OrtooApps/feature/updates-to-support-example-app-repo
a1c58d9 Added clearance of the object register when fabricated Sobjects are persisted.  Allows multiple persists to be called
0d88df9 Added ability to add sub criteria without specifying the logic condition
5fe2224 Added the ability to get the Id of a persisted fabricatedSobject
63c0a18 Added ability to find if a DmlDefiner will delete other records
f1b0c09 Added tests for DmlRecord.getChildSobjects
0b6d115 Added docs and clarified name for DmlRecord method to get child sobjects
a99c196 Added getChildren to the DmlRecord
34e2cce Removed bad update
72b4caf Pointless TODO update for testing
c7c7a7c Moved the default error prefix over to a label
1901e0b Added tests to SearchOrderBy with no config
cec3bf8 Fixed unit tests with literal strings for the prefix on errors
37801e0 Merge branch 'temp/support-qassign-integration' of github.com:OrtooApps/framework into temp/support-qassign-integration
7401666 Added static messagePrefix to error messages
77c0007 Added ability to configure the SearchOrderByWithout a config
999d1de Added static messagePrefix to error messages
aedd0a1 Added exception tests for put
678acfd Added single object puts
c40e580 Remove chance of blank keys and ids in the cache
6d1013e Added tests for getKeys
72e1eb9 Simplify ObjectCache to use a cache key per put
7bc1289 Finished ObjectCacheTest
00823a1 Started to test 'remove' methods
36dcd3d Adding more testing, removing some defunct code and clarifying error cases
475bf33 Fixed unit test fragility
dc44f8d Started testing get on objectCache
776d691 Started to write and sketch the test for ObjectCache
c743113 Fixed compile error
e456765 Reformatted tests to ensure Clayton picks up testing of the methods
3b80f95 Reformatted tests so they do not include fluent calls to the tested method
86f84bc Added tests for the OrgCache
525aa2c Added test and robustness to SessionCache
3906e1a Added a test for NullCache
c60ecc3 Added removeAll to the OrgCache and fixed test for setting ORG scope
8a5dfda Renamed the BulkObjectCache to the correct ObjectCache
377619d Changed permissions service test to test the actual implementation (less risky)
3658177 Abstraction of permissions check for access to the platform cache
5d00e7f Removed need to pass the namespace in to get the qualified keys
48259c6 Removed redundant code
72a988f Moved both types of cache into the same partition (core)
9e347aa Made the SObjectCache more generic.  Added docs
9b31ce9 Implemented a bulk version - everything in Maps...
577e8b0 Implemented version with a cache entry per sobject
6a6ba9f Sketching out the idea of the sobject cache
3f1ea97 Merge pull request apex-enterprise-patterns#21 from OrtooApps/feature/cached-soql-executor
b7ed664 Added PMD suppressions for valid violations
c4190c3 Tidy messages so cache misses are not reported when a NullCache is used
ef541de Added tests for NONE cache scope
b447dad Fixing issues with the use of other cache types
58625db Enhanced the cached soql executor
9c5361c Merge pull request apex-enterprise-patterns#20 from OrtooApps/feature/cached-soql-executor
a2f3aa6 Added cacheability to the dynamic Sobject Selector
a188674 Added tests and robustness to the org cache soql executor
6fcf832 Added simple test for Permissions Service
a27eb51 Formatting fixes on the Organisation Service
58624e0 Only allow access to the SOQL cache if the user has a custom permission
563ae2e Added a permissions service that allows us to find if a user has a custom permission
2e30935 Added cache partition
bff4b34 Co-authored-by: SundusShahbaz <[email protected]>
513d3d9 Started experimentation with Org Wide SOQL results cache
50aab44 Removed ortoo_qra reference
93b8eb2 Merge pull request apex-enterprise-patterns#19 from OrtooApps/feature/criteria-with-date-literals
fb6a7be Removed codecoverage from the apex test runs (buggy)
38da713 Added test and documentation to fflib objects relating to DateLiteral changes
49d47c9 Finished the date literal tests and fixed a boundary bug
8ae7cb9 Added tests for last / next n
e31bdd7 Added tests for DateLiterals for months and next / last 90 days
432925a Added tests for DateLiterals for weeks (and tomorrow)
796ca56 Started to add tests for the comparables in date literals
c0794ac Added some edge case tests
9850046 More tests on date literals - covering months
9c674fb Added more dateLiteral tests (this and next week)
ac74a5f Started a date literals test
8849cc8 Added ortoo_Asserts and moved all Amoss_Asserts calls over to ortoo
e49e2bc Formatting updated to standards
9323e95 Removed defunct 'evaluator'
d4d8519 More experiments with comparing dates
b858500 Started playing with evaluating things against date literals
6907297 Added ability to pass in literals to fflib_Criteria
234dc61 Merge pull request apex-enterprise-patterns#18 from OrtooApps/feature/more-robust-criteria
018946e Fixed typo
746fc54 Added a lot of tests for ortoo_Criteria
66303ff Minor improvement to uriUtils test to check console.error output
f392e92 Added remaining public methods from fflib_Criteria to ortoo_Criteria
2cb008c Started the process of fully wrapping fflib_Criteria
b68bd66 Merge pull request apex-enterprise-patterns#17 from OrtooApps/feature/improve-pagination-control
68306b3 Removed possibility of null offset in search window
11690fc Removed chances of NaN being displayed on pagination controls
040c5d1 Merge pull request apex-enterprise-patterns#16 from OrtooApps/feature/improve-criteria
45e3498 Added 'notInSet' for related fields into criteria
58a1c78 Added ability to specify criteria for related fields with IN
dd6c931 Merge pull request apex-enterprise-patterns#15 from OrtooApps/feature/access-uri-fragments
b88cb53 Added ability to reference the fragment / hash on a URI
bfc8c10 Added ability to reference the fragment / hash on a URI
33b42fa Merge pull request apex-enterprise-patterns#14 from OrtooApps/feature/filter-and-paging-backend
7ebdb39 Merge pull request apex-enterprise-patterns#13 from OrtooApps/feature/remove-package-lock
cfb8296 Remove package lock and ignore it
329321c Rename tabPageName to tabName - removing references to 'page'
778c28b Merge pull request apex-enterprise-patterns#12 from OrtooApps/feature/rename-tab-page-controller
7b48b6f Rename Tab Page Controller
10282b1 Merge pull request apex-enterprise-patterns#11 from OrtooApps/feature/more-core-lwc-work
b65a435 Added label for the lwcListViewWrapper 'old link' error
c746627 Formatting tidy
658ce8c Added editor config for formatting the PRs in github
b9bc589 Added unit tests for the redirect to tab page controller
71e5297 Added tests for getEpochTime
19601ba Upgraded Jest environment
0f90c2e Initial version of an LWC List View wrapper
c3e29f5 Added ability to disable the save button in saveButtons
0625bcb Added generic LWC to render a highlighted message with similar styling to a toast
9dcd0f6 Started work on a generic LWC that allows an LWC to be included in a Tab Page
7aef99b Merge branch 'main' into feature/filter-and-paging-backend
7432b57 Added overflow to modal so picklists render properly
4a2e1d4 Merge pull request apex-enterprise-patterns#10 from OrtooApps/feature/tweaks-to-error-renderer
a2c351c Added options to displayError so it can be adjusted on call
82c163d Added options to displayError so it can be adjusted on call
ae97c73 Merge pull request apex-enterprise-patterns#9 from OrtooApps/feature/filter-and-paging
103bfdf Enhancements to the filter and results
89bffc0 Merge branch 'feature/filter-and-paging-backend' into feature/filter-and-paging
df408a0 Merge branch 'main' into feature/filter-and-paging
f71596b Fixed issue with empty result sets resulting in error trying to find the domain
f1d6420 Merge pull request apex-enterprise-patterns#8 from OrtooApps/feature/filter-and-paging-backend
3448786 Fixed check on message
0745ef4 Brought in more changes from the example-app implementation of filter + results
4ce9495 Added framework changes from the example-app implementation of the filter and paging screen
6f868a8 Merge pull request apex-enterprise-patterns#7 from OrtooApps/feature/filter-and-paging
5d07aed Update to TODO
2965d97 Added test for filter and results
4be141b Tidied the paginationControls navigate event a little
a5a38ab Added test for the page info
88761c4 Added tests for the pagination controls
56f3140 Removed redundant parameter
2700d69 Removed redundant wire import
49e8aa9 Improved communication from the filter and pagination controls
8aa25c8 Removed inline style from pagination controls
6772f4f Removed accidental call to apex
6d965e5 Added the initial 'filter and results' layout LWC
9eb4f45 Added an initial design for pagination controls
32dff13 Merge pull request apex-enterprise-patterns#6 from OrtooApps/feature/updates-after-qassign-implementations
f129751 Fixed TODO
329af98 Updated ids to the standard in the self configured combobox
897e31a Updated ids to the standard in the view and edit form
c5a1dd5 Fixed tests relating to the new version of the name of buttons
b283f97 Added ortoo Id generation to the confirmation dialog
0916a86 Improved test describes for the library functions
c3f53fe Added the elementFinder library functions
bfcd7df Removed pointless html from libraries
47a4c93 Fix spacing around the confirmation screen buttons
141f1ef Standardised saveButtons and reference labels properly
19322de Added additional edit buttons back into the view and edit form
2d8ddc3 Moved a load of tests lets over to const, because they should be
87088b5 Added the test for the elementIdGenerator
94dced8 Improved options on and testing of the formValidator
eb67937 Completed the saveButtons test and removed some defunct code from the modal test
1aa2762 Added a save buttons component and added it to the view and edit form
c8dac7b Added element Id generation to the modal and increased the padding a little
e5155c4 Improved error renderer so it will render Javascript errors
1286e62 Removed done TODOs
7151a74 Merge pull request apex-enterprise-patterns#5 from OrtooApps/feature/dynamic-selector
c155680 Added the Dynamic Sobject Selector, for building SOQL statements based on configuration
8b15261 Fixed bug with the query factory not recognising an empty criteria when deciding if where clause should be added
6343a26 Merge pull request apex-enterprise-patterns#4 from OrtooApps/feature/add-initial-base-lwcs
d662d81 Fixed tests and more formatting on the view and edit form
164d22d Standardised some formatting of attributes
fd78481 Added tests for the formValidator
3014a98 Added tests for clicking buttons in the view and edit form
3affc08 Added tests for the errorRenderer
e8692bc Minor adds to the TODO
49ccd1a Added ability to put header buttons into a modal.
03cbe45 Hide the empty footer on the modal version of the view form
9c285b0 Added ability to hide the footer on the modal
521a494 Starting to build a modal mode for the view and edit form
b39e23c Move some view form text over to labels
61a02a3 Added more generic LWC components
16d8817 Removed defunct comment and updated TODOs
e2f17b7 Adde centring of the content in the modal footer
8f2707d Minor TODO added
b4d2326 Fixed error report on invalid type
b5cb6f1 Trying Jest tests in the build
0f2ad8c Added types to the confirmation dialog and improved its testing
6ef85c9 Started to add TODOs for LWCs
412cc55 Moved reference in test from aria-id to data-name in order to introduce a standard
18d97f8 Moved reference in test from aria-id to data-name in order to introduce a standard
62ea46a Improving the testing of the confirmation dialog
d8c3ace Changed the message on confirmationDialog to a slot - so we can have HTML in there
e86665d Added label for the 'close' text on the modal
aa746de Removed formatted-modal
f782fdf Removed linter pre-commit hook
fad409d Added initial versions of base LWCs, including a confirmation dialog and a formatted modal
78dabd3 Removed defunct TODO
144077b Merge pull request apex-enterprise-patterns#3 from OrtooApps/feature/adding-crud-and-dml-fls
d0c5af3 Added code coverage numbers back again, as this is the only reliable way of getting numbers out of Salesforce
07f5c87 Added test for the elevation in UOW
bc87fc0 Tidy of TODO
44dc4e7 Added ability to 'elevateContext' inside a Unit of Work
04128c9 Added docs to sobject selector
fc34884 Update to TODO
c840617 Changed method names to match template from fflib
becbac6 Added test for SobjectSelector
e2be197 Enforce FLS in Selectors by default
84da6ec Tweak to SecureDml to make publish rights slightly distinct
95e6654 Added unit test for secure deletes
757549f Added tests for update in SecureDml
dbe8a39 Fixed bug with recognising when fields have been removed
6ba0371 Removed actual DML (and therefore fragility) from SecureDmlTest
20f1106 Testing FLS configurations in SecureDml
f91edf4 Preparing SecureDml so that the FLS behaviours can be tested
4b2968e Started to test SecureDml
98d3472 Preparing SecureDml to be testable
80afd48 Added tests and documentation for the reseting of the stack trace on an exception
0cedce8 Added simple test for UnsecureDml
0f64657 Added testing and documentation to SobjectUtils method
31cf34d Tidy and documentation of new SobjectUtils methods
c1f7fa1 Removed temporary code
d1f8cf0 Removed temporary code
aabf774 Moved literal strings in SecureDml over to labels
3d11521 Added constant based error codes for DML violations
89b38df Documentation in the SecureDml class
a09bb9f Fixed null pointer bug in FLS checking
81cf3ac Removed defunct Dml Configuration class
a676317 Reshape SecureDml so it's possible to disable FLS for individual fields
3591292 Split SecureDml error handlers.  Tidy IDml references.
7e057f4 Default UoW now is secure - both FLS and CUD
bdba10d Added sketch of SecureDml - an Idml implementation for use with the Unit of Work
0797902 Merge pull request #2 from OrtooApps/feature/adding-sobject-fabricator
287e8c2 Removed TODO entries
fc6a887 Added a missing unit test to Fabricated SObject
f0bbfd1 Added documentation to the object describer and tried making an internal class private
1d0d3c9 Added tests for the persistence of fabricated SObjects
4a244d4 Added tests for the persistence of fabricated SObjects
b511b52 Added docs to the register
96dd85e Further reduction in code footprint
7427970 Reducing the footprint of sfab
b9e86a5 Reworked the singleton nature of SobjectRegister
533b206 Update to TODO
918873c Removed the ortoo_FabricatedSObject - have to accept that the library is bespoke
ca66375 Updated TODO
32b1f5e Fixed the fabricator tests
9ce7271 Can persist an object with a parent specified
da10ff0 Resolve the relationships on persist of fabricated sobjects
cd5e5b8 Added calculation of DML order in fabricatedSObjectRegister using a DirectedGraph
e61067f Starting to sketch out how to persist objects that have been fabricated
866bd72 Moved fabricator tests into a sub-directory
5f3f525 Added basic sobject fabricator
c7c3ec6 reversed old commit
932db0c this is a tiny reversable commit
dfbc9bc Improving test coverage and fixing bugs
47050d0 Merge branch 'main' of github.com:OrtooApps/framework
7833094 Always delete the scratch org, and only keep them for 3 days, just in case
8ae1762 Merge pull request #1 from OrtooApps/feature/test-a-failing-test
ae2dee9 Fixed the failing test
7d328de Added back grep and put in a pipestatus
0e921fe Remove grep, see if the build fails
d466b70 Back to the original format - you get more info on failure
680e5d5 fix branches matching
9eb17b5 Added a purposeful fail to see the rendering
ddfcb0b Add publish of results as JUnit
5524377 Grep out the passes in the automated build and run test
d44b177 Reference the framework folder in the deploy
59624e4 Removed force-app from the deploy command - not sure we need to specify anything
12f89dc Added execute permissions to build script
8cfb4f5 Added code coverage request to the command line run all
6f449d4 Fixed package utils bug that points out how bad the unit test is.  Shame - but can't test namespaces
35c4928 Added script for running all tests and only showing the fails
8e04a6a Removed bad utils class left over from experiments
8654fd2 Added auto-deploy and test in git
8109082 Initial Commit to new repo

git-subtree-dir: subfolders/fflib
git-subtree-split: 573efa3
rob-baillie-ortoo added a commit to OrtooApps/fflib-apex-common that referenced this issue May 5, 2022
* Squashed 'subfolders/fflib/' content from commit 6eb7db0

git-subtree-dir: subfolders/fflib
git-subtree-split: 6eb7db0

* removed odd fflib addition again

* Revert "removed fflib again"

This reverts commit 47d1162.

* Put apex-mocks and apex-extensions into the fflib directory

* Removed external dependencies from the fflib extensions

* Added reference to the fflib subfolder into the build

* Squashed 'subfolders/fflib/' changes from 6eb7db0..573efa3

573efa3 Merge pull request #1 from OrtooApps/feature/include-mocks-and-ext
869710a Merge branch 'feature/include-mocks-and-ext' into feature/ortoo
8730eea Added ortoo build script to repo
1a7964e Removed external dependencies from the fflib extensions
1b3ba7b Put apex-mocks and apex-extensions into the fflib directory
e33b28e Merge commit '07a3aafda9332ed74397bbec9319589bd3e0bec3' as 'subfolders/fflib'
47d1162 removed fflib again
cc23295 Merge commit '0598deef2560f7365d9c6c4a78b1846d75d6a6f1' as 'framework/fflib'
0598dee Squashed 'framework/fflib/' content from commit baaf94d
10bb547 removed fflib again
ad7ad4b Merge commit '2cadfa684480e349737d01f051c89ab7a425fda4' as 'subfolders/fflib'
2cadfa6 Squashed 'subfolders/fflib/' content from commit 6eb7db0
b42821a Fixed sharing on service snippets
3a8cd5e Fixed snippets issues
8d63341 Added a VSCode snippets file
1123e65 Avoid conflicting conditions being set
e19d5ea Added the ability to specify the condition on a queryfactory by using a 'ISearchCriteria'
d36342e Merge pull request apex-enterprise-patterns#41 from OrtooApps/feature/timestamped-cache-entries
2601d46 Improved hiding of date literal setters
eab9439 Merge pull request apex-enterprise-patterns#40 from OrtooApps/temp/demo-2
37c6223 Another change
d6caada Merge pull request apex-enterprise-patterns#39 from OrtooApps/temp/demo
8c028af Added some notes... temp commit
933fe55 Merge pull request apex-enterprise-patterns#38 from OrtooApps/feature/timestamped-cache-entries
cd363c5 Removed redundant TODOs
cb8cea0 Added test that re-querying aged results will put them back into the cache
97870e0 Added ability to specify maxAge and minDate in Dynamic Selector query calls
53edd71 Added test for age based cache retrieval in CachedSoqlExecutor
d122285 Added the ability to specify a maximum age or minimum date added on the CachedSoqlExecutor when querying
ba3a74c Updated TestDateTimeUtils so that now and today are always in step
807239c Added test and documentation for the cache entry
08124af Improved split between DateLiterals and DateTimeUtils
e8d1113 Added ageing capabilities to SessionCache and NullCache
14fc597 Added tests for OrgCache ageing and improved behaviours
3a26bd2 Started to build 'max age' on cache retrieval
a6c4484 Merge pull request apex-enterprise-patterns#37 from OrtooApps/feature/slight-improvement-to-session-cache
efc4672 Added removeAll to session cache
4683f0b Merge pull request apex-enterprise-patterns#36 from OrtooApps/feature/standardise-build-in-framework
e76cf0f Standardised the build - particularly running apex and getting the code coverage numbers
4938a08 Merge pull request apex-enterprise-patterns#35 from OrtooApps/temp/support-qassign-integration
a788274 Fixed merge error in test
2685af3 Simplified passing of mapping into SearchOrderBy and added test for the Null config
502b1c6 Merge branch 'main' into temp/support-qassign-integration
bb0d696 Merge pull request apex-enterprise-patterns#34 from OrtooApps/feature/add-credits-file
3dc4fcf Merge pull request apex-enterprise-patterns#33 from OrtooApps/feature/add-dynamic-uow
05c0b92 Tidy of TODO file
4f4b7d1 Minor update to credits file - do not imply that the license file linked is the one that is appropriate
a86e3f8 Added OS licenses as static resource
93d5fff Added factory methods for the Dynamic Unit of Work
01ca71e Merge pull request apex-enterprise-patterns#32 from OrtooApps/feature/add-dynamic-uow
fdc89e8 Added direct test for the dynamic unit of work ordering resolution
be4e4c4 Added output of better exception when a circular reference is found in the Dynamic UOW
0bf55d4 Added tests for the dynamic unit of work
ab04fad Started the sketch of the dynamic SObject UOW
bf2ffc9 Merge pull request apex-enterprise-patterns#31 from OrtooApps/feature/block-duplicate-configs
baaf94d Block duplicate config records
52c2442 Merge pull request apex-enterprise-patterns#30 from OrtooApps/feature/remove-example-services
9b099b5 Added custom metadata for the permissions service, so it cannot be overridden by customers
118f8d6 Added back the permissions service
20bface Removed the example services
8dd4482 Merge pull request apex-enterprise-patterns#29 from OrtooApps/feature/improve-applicaiton-performance
e366958 Added tests for the new getSobjectLocalName
9534a6f Fixed code that got the Selector type for a given Sobject Type
20d029e Fixed issue with selector factory not getting local namespaced SObject names correctly
e303575 Added tests for stripLocalNamespace
0dcd5ea Applied string based factory configurations to more factories, to improve startup performance
75e4e54 Improved the startup performance when AppLogic, ChildRecordFinder or MessageRenderer configurations exist
a82924a Improved the startup performance when AppLogic, ChildRecordFinder or MessageRenderer configurations exist
5bae05d FIxed bug with performance improvements in the logger service - null level should be regarded as ERROR
d4c4ad3 Fixed test
dd53ebb Attempting to improve startup and logging service performance
f10210a Lazy load the Unit of Work, so it doesn't get built when it isn't needed
bac4ce7 Made tests more robust
56df48d Merge pull request apex-enterprise-patterns#28 from OrtooApps/feature/simple-logging-module
04d8b4b Corrected test execution
88d1827 Improved comparing of exceptions in tests
3e3cffc Simplified the setup of the test logger instance
912d43f Simplified the setup of the test logger instance
c7a6997 Added test for ServiceUtils.logAndRethrow
5ae972a Moved logger service into core
875b961 Removed redundant TODO
bd86ba2 Move the logger service test over to use the new test utils
30d2f09 Added assertion capabilities to the TestLoggerService
145d9f6 Started to add testing around logging in the CachedSoqlExecutor
0870a6d Added TestLoggerUtils to make it easier to switch logging to the right level in tests
276ee44 Moved the FakeLogger out to TestLoggerService so other classes can use it
ab5112f Added the ability to strip context from ortoo_Exceptions
6238a10 Moved some code over to use the logger service
41658f9 Added test for the static method based LoggerService
778cafc Added testing for the logger implementation
53caeec Set the default logging level in the logging service implementation
ae77a3e Improved logging when failing to generate a logger
7c25516 Make the logger service more robust to exceptions
338f1a7 Added clarity of the log level for exceptions - handled in the static class
b53423e Added custom setting that allows for logging levels to be specified
ad9f7bc Improvements to the logger output
81f916b Starting to build a simple logger
acdf375 Merge pull request apex-enterprise-patterns#27 from OrtooApps/feature/defaulting-implementations
51f5c25 Added testing for the internals that determine the default Service name
7d7a255 Added tests for the defaulting of service implementations based on their name
da86bd7 Added tests for the defaulting of service implementations based on their name
278cca8 Implement defaulting of the Service implementation based on naming convention
d1e13aa Merge pull request apex-enterprise-patterns#22 from OrtooApps/feature/sobject-cache
de09d1a Merge branch 'main' into feature/sobject-cache
68b8323 Merge pull request apex-enterprise-patterns#26 from OrtooApps/feature/updates-to-support-example-app-repo
0009267 Added unit test for new errorRenderer capabilitites
65e34a1 Added unit test for the new configure labels on datatableHelper
69216ef Added capability to populate datatable columns with sobject definition based labels
f034717 Added capability to populate datatable columns with sobject definition based labels
868890c Added the ability to mark only certain fields as dirty when first adding a record to the DML
5e008f5 Improved output of inaccessible fields on security violation
62b2089 Added ability to convert a Set of Strings to a List of Strings
c818af7 Fixed sharing on class
0626cd9 Committing whitespace removal
0ad54fd Added test
bd555da Added the ability to get the Id of an Sobject saved via the DmlService
2a2e9b1 Added proper ortoo id to the save buttons in the view and edit form
dbfd232 Changed generateRowId to generateId, since that's more accurate
d29484d Changed generateRowId to generateId, since that's more accurate
9fa245e Added some generic labels
8c9d06a Added assertion comment
1380b62 Added objectHelper - which allows us to generate ids for use in the UI
fc8c930 Merge pull request apex-enterprise-patterns#25 from OrtooApps/feature/updates-to-support-example-app-repo
4e86c73 Added passing through of labels into the buttons in the view and edit form
2ccc43a Merge pull request apex-enterprise-patterns#24 from OrtooApps/main
69a9fea Merge pull request apex-enterprise-patterns#23 from OrtooApps/feature/updates-to-support-example-app-repo
a1c58d9 Added clearance of the object register when fabricated Sobjects are persisted.  Allows multiple persists to be called
0d88df9 Added ability to add sub criteria without specifying the logic condition
5fe2224 Added the ability to get the Id of a persisted fabricatedSobject
63c0a18 Added ability to find if a DmlDefiner will delete other records
f1b0c09 Added tests for DmlRecord.getChildSobjects
0b6d115 Added docs and clarified name for DmlRecord method to get child sobjects
a99c196 Added getChildren to the DmlRecord
34e2cce Removed bad update
72b4caf Pointless TODO update for testing
c7c7a7c Moved the default error prefix over to a label
1901e0b Added tests to SearchOrderBy with no config
cec3bf8 Fixed unit tests with literal strings for the prefix on errors
37801e0 Merge branch 'temp/support-qassign-integration' of github.com:OrtooApps/framework into temp/support-qassign-integration
7401666 Added static messagePrefix to error messages
77c0007 Added ability to configure the SearchOrderByWithout a config
999d1de Added static messagePrefix to error messages
aedd0a1 Added exception tests for put
678acfd Added single object puts
c40e580 Remove chance of blank keys and ids in the cache
6d1013e Added tests for getKeys
72e1eb9 Simplify ObjectCache to use a cache key per put
7bc1289 Finished ObjectCacheTest
00823a1 Started to test 'remove' methods
36dcd3d Adding more testing, removing some defunct code and clarifying error cases
475bf33 Fixed unit test fragility
dc44f8d Started testing get on objectCache
776d691 Started to write and sketch the test for ObjectCache
c743113 Fixed compile error
e456765 Reformatted tests to ensure Clayton picks up testing of the methods
3b80f95 Reformatted tests so they do not include fluent calls to the tested method
86f84bc Added tests for the OrgCache
525aa2c Added test and robustness to SessionCache
3906e1a Added a test for NullCache
c60ecc3 Added removeAll to the OrgCache and fixed test for setting ORG scope
8a5dfda Renamed the BulkObjectCache to the correct ObjectCache
377619d Changed permissions service test to test the actual implementation (less risky)
3658177 Abstraction of permissions check for access to the platform cache
5d00e7f Removed need to pass the namespace in to get the qualified keys
48259c6 Removed redundant code
72a988f Moved both types of cache into the same partition (core)
9e347aa Made the SObjectCache more generic.  Added docs
9b31ce9 Implemented a bulk version - everything in Maps...
577e8b0 Implemented version with a cache entry per sobject
6a6ba9f Sketching out the idea of the sobject cache
3f1ea97 Merge pull request apex-enterprise-patterns#21 from OrtooApps/feature/cached-soql-executor
b7ed664 Added PMD suppressions for valid violations
c4190c3 Tidy messages so cache misses are not reported when a NullCache is used
ef541de Added tests for NONE cache scope
b447dad Fixing issues with the use of other cache types
58625db Enhanced the cached soql executor
9c5361c Merge pull request apex-enterprise-patterns#20 from OrtooApps/feature/cached-soql-executor
a2f3aa6 Added cacheability to the dynamic Sobject Selector
a188674 Added tests and robustness to the org cache soql executor
6fcf832 Added simple test for Permissions Service
a27eb51 Formatting fixes on the Organisation Service
58624e0 Only allow access to the SOQL cache if the user has a custom permission
563ae2e Added a permissions service that allows us to find if a user has a custom permission
2e30935 Added cache partition
bff4b34 Co-authored-by: SundusShahbaz <[email protected]>
513d3d9 Started experimentation with Org Wide SOQL results cache
50aab44 Removed ortoo_qra reference
93b8eb2 Merge pull request apex-enterprise-patterns#19 from OrtooApps/feature/criteria-with-date-literals
fb6a7be Removed codecoverage from the apex test runs (buggy)
38da713 Added test and documentation to fflib objects relating to DateLiteral changes
49d47c9 Finished the date literal tests and fixed a boundary bug
8ae7cb9 Added tests for last / next n
e31bdd7 Added tests for DateLiterals for months and next / last 90 days
432925a Added tests for DateLiterals for weeks (and tomorrow)
796ca56 Started to add tests for the comparables in date literals
c0794ac Added some edge case tests
9850046 More tests on date literals - covering months
9c674fb Added more dateLiteral tests (this and next week)
ac74a5f Started a date literals test
8849cc8 Added ortoo_Asserts and moved all Amoss_Asserts calls over to ortoo
e49e2bc Formatting updated to standards
9323e95 Removed defunct 'evaluator'
d4d8519 More experiments with comparing dates
b858500 Started playing with evaluating things against date literals
6907297 Added ability to pass in literals to fflib_Criteria
234dc61 Merge pull request apex-enterprise-patterns#18 from OrtooApps/feature/more-robust-criteria
018946e Fixed typo
746fc54 Added a lot of tests for ortoo_Criteria
66303ff Minor improvement to uriUtils test to check console.error output
f392e92 Added remaining public methods from fflib_Criteria to ortoo_Criteria
2cb008c Started the process of fully wrapping fflib_Criteria
b68bd66 Merge pull request apex-enterprise-patterns#17 from OrtooApps/feature/improve-pagination-control
68306b3 Removed possibility of null offset in search window
11690fc Removed chances of NaN being displayed on pagination controls
040c5d1 Merge pull request apex-enterprise-patterns#16 from OrtooApps/feature/improve-criteria
45e3498 Added 'notInSet' for related fields into criteria
58a1c78 Added ability to specify criteria for related fields with IN
dd6c931 Merge pull request apex-enterprise-patterns#15 from OrtooApps/feature/access-uri-fragments
b88cb53 Added ability to reference the fragment / hash on a URI
bfc8c10 Added ability to reference the fragment / hash on a URI
33b42fa Merge pull request apex-enterprise-patterns#14 from OrtooApps/feature/filter-and-paging-backend
7ebdb39 Merge pull request apex-enterprise-patterns#13 from OrtooApps/feature/remove-package-lock
cfb8296 Remove package lock and ignore it
329321c Rename tabPageName to tabName - removing references to 'page'
778c28b Merge pull request apex-enterprise-patterns#12 from OrtooApps/feature/rename-tab-page-controller
7b48b6f Rename Tab Page Controller
10282b1 Merge pull request apex-enterprise-patterns#11 from OrtooApps/feature/more-core-lwc-work
b65a435 Added label for the lwcListViewWrapper 'old link' error
c746627 Formatting tidy
658ce8c Added editor config for formatting the PRs in github
b9bc589 Added unit tests for the redirect to tab page controller
71e5297 Added tests for getEpochTime
19601ba Upgraded Jest environment
0f90c2e Initial version of an LWC List View wrapper
c3e29f5 Added ability to disable the save button in saveButtons
0625bcb Added generic LWC to render a highlighted message with similar styling to a toast
9dcd0f6 Started work on a generic LWC that allows an LWC to be included in a Tab Page
7aef99b Merge branch 'main' into feature/filter-and-paging-backend
7432b57 Added overflow to modal so picklists render properly
4a2e1d4 Merge pull request apex-enterprise-patterns#10 from OrtooApps/feature/tweaks-to-error-renderer
a2c351c Added options to displayError so it can be adjusted on call
82c163d Added options to displayError so it can be adjusted on call
ae97c73 Merge pull request apex-enterprise-patterns#9 from OrtooApps/feature/filter-and-paging
103bfdf Enhancements to the filter and results
89bffc0 Merge branch 'feature/filter-and-paging-backend' into feature/filter-and-paging
df408a0 Merge branch 'main' into feature/filter-and-paging
f71596b Fixed issue with empty result sets resulting in error trying to find the domain
f1d6420 Merge pull request apex-enterprise-patterns#8 from OrtooApps/feature/filter-and-paging-backend
3448786 Fixed check on message
0745ef4 Brought in more changes from the example-app implementation of filter + results
4ce9495 Added framework changes from the example-app implementation of the filter and paging screen
6f868a8 Merge pull request apex-enterprise-patterns#7 from OrtooApps/feature/filter-and-paging
5d07aed Update to TODO
2965d97 Added test for filter and results
4be141b Tidied the paginationControls navigate event a little
a5a38ab Added test for the page info
88761c4 Added tests for the pagination controls
56f3140 Removed redundant parameter
2700d69 Removed redundant wire import
49e8aa9 Improved communication from the filter and pagination controls
8aa25c8 Removed inline style from pagination controls
6772f4f Removed accidental call to apex
6d965e5 Added the initial 'filter and results' layout LWC
9eb4f45 Added an initial design for pagination controls
32dff13 Merge pull request apex-enterprise-patterns#6 from OrtooApps/feature/updates-after-qassign-implementations
f129751 Fixed TODO
329af98 Updated ids to the standard in the self configured combobox
897e31a Updated ids to the standard in the view and edit form
c5a1dd5 Fixed tests relating to the new version of the name of buttons
b283f97 Added ortoo Id generation to the confirmation dialog
0916a86 Improved test describes for the library functions
c3f53fe Added the elementFinder library functions
bfcd7df Removed pointless html from libraries
47a4c93 Fix spacing around the confirmation screen buttons
141f1ef Standardised saveButtons and reference labels properly
19322de Added additional edit buttons back into the view and edit form
2d8ddc3 Moved a load of tests lets over to const, because they should be
87088b5 Added the test for the elementIdGenerator
94dced8 Improved options on and testing of the formValidator
eb67937 Completed the saveButtons test and removed some defunct code from the modal test
1aa2762 Added a save buttons component and added it to the view and edit form
c8dac7b Added element Id generation to the modal and increased the padding a little
e5155c4 Improved error renderer so it will render Javascript errors
1286e62 Removed done TODOs
7151a74 Merge pull request apex-enterprise-patterns#5 from OrtooApps/feature/dynamic-selector
c155680 Added the Dynamic Sobject Selector, for building SOQL statements based on configuration
8b15261 Fixed bug with the query factory not recognising an empty criteria when deciding if where clause should be added
6343a26 Merge pull request apex-enterprise-patterns#4 from OrtooApps/feature/add-initial-base-lwcs
d662d81 Fixed tests and more formatting on the view and edit form
164d22d Standardised some formatting of attributes
fd78481 Added tests for the formValidator
3014a98 Added tests for clicking buttons in the view and edit form
3affc08 Added tests for the errorRenderer
e8692bc Minor adds to the TODO
49ccd1a Added ability to put header buttons into a modal.
03cbe45 Hide the empty footer on the modal version of the view form
9c285b0 Added ability to hide the footer on the modal
521a494 Starting to build a modal mode for the view and edit form
b39e23c Move some view form text over to labels
61a02a3 Added more generic LWC components
16d8817 Removed defunct comment and updated TODOs
e2f17b7 Adde centring of the content in the modal footer
8f2707d Minor TODO added
b4d2326 Fixed error report on invalid type
b5cb6f1 Trying Jest tests in the build
0f2ad8c Added types to the confirmation dialog and improved its testing
6ef85c9 Started to add TODOs for LWCs
412cc55 Moved reference in test from aria-id to data-name in order to introduce a standard
18d97f8 Moved reference in test from aria-id to data-name in order to introduce a standard
62ea46a Improving the testing of the confirmation dialog
d8c3ace Changed the message on confirmationDialog to a slot - so we can have HTML in there
e86665d Added label for the 'close' text on the modal
aa746de Removed formatted-modal
f782fdf Removed linter pre-commit hook
fad409d Added initial versions of base LWCs, including a confirmation dialog and a formatted modal
78dabd3 Removed defunct TODO
144077b Merge pull request apex-enterprise-patterns#3 from OrtooApps/feature/adding-crud-and-dml-fls
d0c5af3 Added code coverage numbers back again, as this is the only reliable way of getting numbers out of Salesforce
07f5c87 Added test for the elevation in UOW
bc87fc0 Tidy of TODO
44dc4e7 Added ability to 'elevateContext' inside a Unit of Work
04128c9 Added docs to sobject selector
fc34884 Update to TODO
c840617 Changed method names to match template from fflib
becbac6 Added test for SobjectSelector
e2be197 Enforce FLS in Selectors by default
84da6ec Tweak to SecureDml to make publish rights slightly distinct
95e6654 Added unit test for secure deletes
757549f Added tests for update in SecureDml
dbe8a39 Fixed bug with recognising when fields have been removed
6ba0371 Removed actual DML (and therefore fragility) from SecureDmlTest
20f1106 Testing FLS configurations in SecureDml
f91edf4 Preparing SecureDml so that the FLS behaviours can be tested
4b2968e Started to test SecureDml
98d3472 Preparing SecureDml to be testable
80afd48 Added tests and documentation for the reseting of the stack trace on an exception
0cedce8 Added simple test for UnsecureDml
0f64657 Added testing and documentation to SobjectUtils method
31cf34d Tidy and documentation of new SobjectUtils methods
c1f7fa1 Removed temporary code
d1f8cf0 Removed temporary code
aabf774 Moved literal strings in SecureDml over to labels
3d11521 Added constant based error codes for DML violations
89b38df Documentation in the SecureDml class
a09bb9f Fixed null pointer bug in FLS checking
81cf3ac Removed defunct Dml Configuration class
a676317 Reshape SecureDml so it's possible to disable FLS for individual fields
3591292 Split SecureDml error handlers.  Tidy IDml references.
7e057f4 Default UoW now is secure - both FLS and CUD
bdba10d Added sketch of SecureDml - an Idml implementation for use with the Unit of Work
0797902 Merge pull request #2 from OrtooApps/feature/adding-sobject-fabricator
287e8c2 Removed TODO entries
fc6a887 Added a missing unit test to Fabricated SObject
f0bbfd1 Added documentation to the object describer and tried making an internal class private
1d0d3c9 Added tests for the persistence of fabricated SObjects
4a244d4 Added tests for the persistence of fabricated SObjects
b511b52 Added docs to the register
96dd85e Further reduction in code footprint
7427970 Reducing the footprint of sfab
b9e86a5 Reworked the singleton nature of SobjectRegister
533b206 Update to TODO
918873c Removed the ortoo_FabricatedSObject - have to accept that the library is bespoke
ca66375 Updated TODO
32b1f5e Fixed the fabricator tests
9ce7271 Can persist an object with a parent specified
da10ff0 Resolve the relationships on persist of fabricated sobjects
cd5e5b8 Added calculation of DML order in fabricatedSObjectRegister using a DirectedGraph
e61067f Starting to sketch out how to persist objects that have been fabricated
866bd72 Moved fabricator tests into a sub-directory
5f3f525 Added basic sobject fabricator
c7c3ec6 reversed old commit
932db0c this is a tiny reversable commit
dfbc9bc Improving test coverage and fixing bugs
47050d0 Merge branch 'main' of github.com:OrtooApps/framework
7833094 Always delete the scratch org, and only keep them for 3 days, just in case
8ae1762 Merge pull request #1 from OrtooApps/feature/test-a-failing-test
ae2dee9 Fixed the failing test
7d328de Added back grep and put in a pipestatus
0e921fe Remove grep, see if the build fails
d466b70 Back to the original format - you get more info on failure
680e5d5 fix branches matching
9eb17b5 Added a purposeful fail to see the rendering
ddfcb0b Add publish of results as JUnit
5524377 Grep out the passes in the automated build and run test
d44b177 Reference the framework folder in the deploy
59624e4 Removed force-app from the deploy command - not sure we need to specify anything
12f89dc Added execute permissions to build script
8cfb4f5 Added code coverage request to the command line run all
6f449d4 Fixed package utils bug that points out how bad the unit test is.  Shame - but can't test namespaces
35c4928 Added script for running all tests and only showing the fails
8e04a6a Removed bad utils class left over from experiments
8654fd2 Added auto-deploy and test in git
8109082 Initial Commit to new repo

git-subtree-dir: subfolders/fflib
git-subtree-split: 573efa3

* moved subfolders over to subtrees

* fixed deploy paths and swtiched from deploy to push

* removed fflib so we can more it

* Added PoC of dirty fields added to registerNew and registerUpsert

* Remove dirty fields from registerNew - don't think it ever makes sense

* Added tests for the new upsert with dirty fields

* Added new upsert with dirty fields to the UOW interface and dynamic version

Added docs to upsert with dirty fields

* Added missing mock methods

* Fixed broken test and clarified behaviour in doc comments
@daveespo
Copy link
Contributor

daveespo commented Jun 8, 2023

The ship has sailed on this idea -- there are no plans to create and maintain a 'light' version

@daveespo daveespo closed this as not planned Won't fix, can't repro, duplicate, stale Jun 8, 2023
@mattlacey
Copy link

Sounds like the right decision at this stage. Man time sure does fly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants