Note that you will need a flickr API key to run this app. All snapshot tests in this project are run on iPhone 15(iOS 17.0.1) simulator.
- Combine
- URLSession for flickr API
- UIKit
- XCTest
- NSCache for in memory image caching
- Follow SOLID principles
- Adopt TDD
- Use of dependency injection
- Refactor from MVC to MVP, safeguard by tests
- "Glue" the components by Combine in the composition root
As an online user
I want the app automatically load photos
So I can enjoy those photos
Given the user has connectivity
When the user request to see the photos
Then the app should display the photos from remote
As an online user
I want to search the photos by keywords from the app
So I can enjoy photos of the category by the keyword I entered
Given the user has connectivity
When the user search photos by entering keywords
Then the app should display photos of specific category by the entered keyword
As an offline user
I want the app to show an message to tell me I am offline
So I know what's going on
Given the user has no connectivity
When the user requests photos or search photos
Then the app should display an error message