sharepoint saturday stockholm 2015 - building maintainable and testable sharepoint components
TRANSCRIPT
![Page 1: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/1.jpg)
How to Build Maintainable and Testable Custom SharePoint
Components
Edin Kapić#SPSSTHLM07
February 14th, 2015
![Page 2: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/2.jpg)
Platinum
Gold
Lunch SharePint
Silver
Web
![Page 3: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/3.jpg)
Beezy
Catalonian SharePoint User Group
sug.cat
Jag frågar mig
är denna öl
SharePint-
kompatibel
@ekapic
www.edinkapic.com
![Page 4: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/4.jpg)
![Page 5: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/5.jpg)
![Page 6: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/6.jpg)
![Page 7: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/7.jpg)
Deployment structure
Solution structure
Source code management
Code structure
Unit testing SharePoint
Maintainable
Testable
![Page 8: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/8.jpg)
![Page 9: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/9.jpg)
![Page 10: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/10.jpg)
Simpler Retraction of one WSP removes shared libraries from BIN/GAC
Only one version path for components
Not granular enough
MySolution.wsp
![Page 11: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/11.jpg)
Functionality can be separately versioned and managed
Retracting one functionality doesn’t break shared libraries
More complex
Limited reusability
![Page 12: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/12.jpg)
MySolution.Specific1.wsp
MySolution.Common.wsp
MySolution.Specific2.wsp
Shared WSP + Feature WSPs
![Page 13: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/13.jpg)
Common SharePoint code can be versioned separately
More control over code reuse and management over multiple solutions
Even more complex
![Page 14: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/14.jpg)
MySolution1.Specific1.wsp
MySolution1.Common.wsp
MySolution1.Specific2.wsp
MyFramework.wsp
MySolution2.Specific1.wsp
MySolution2.Common.wsp
MySolution2.Specific2.wsp
Framework + Shared + Feature WSPs
![Page 15: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/15.jpg)
![Page 16: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/16.jpg)
But
![Page 17: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/17.jpg)
![Page 18: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/18.jpg)
![Page 19: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/19.jpg)
![Page 20: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/20.jpg)
![Page 21: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/21.jpg)
![Page 22: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/22.jpg)
![Page 23: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/23.jpg)
![Page 24: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/24.jpg)
![Page 25: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/25.jpg)
![Page 26: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/26.jpg)
Run away!!!
![Page 27: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/27.jpg)
![Page 28: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/28.jpg)
![Page 29: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/29.jpg)
![Page 30: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/30.jpg)
![Page 31: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/31.jpg)
![Page 32: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/32.jpg)
•
![Page 33: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/33.jpg)
•
“The Truth”
Developer 1
Developer 2
Developer 3Developer 1
Developer 2
Build Server
Corporate
Repository
![Page 34: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/34.jpg)
![Page 35: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/35.jpg)
![Page 36: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/36.jpg)
![Page 37: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/37.jpg)
![Page 38: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/38.jpg)
![Page 39: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/39.jpg)
Unit tests
![Page 40: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/40.jpg)
![Page 41: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/41.jpg)
Depends on abstractions
Separates concerns
Inversion of Control (IoC)
Dependency Injection (DI)
Repository pattern
Service Locator pattern
MVP/MVC
![Page 42: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/42.jpg)
coordinating code
concrete repositories (the ones that hit SharePoint or a database)
CUT
![Page 43: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/43.jpg)
![Page 44: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/44.jpg)
![Page 45: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/45.jpg)
![Page 46: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/46.jpg)
![Page 47: SharePoint Saturday Stockholm 2015 - Building Maintainable and Testable SharePoint Components](https://reader030.vdocuments.net/reader030/viewer/2022032421/55a6c2f31a28ab90428b459a/html5/thumbnails/47.jpg)
07