A simple viewer of Walmart test products
Cocoapods tool is used for the dependency management. If you don't have it, install first. Then execute a command line in the terminal pod install
and open WLAssignment.xcworkspace
.
The application is based on MVVC architecture. There is a product list table view controller driving table cells with products. UIStackView
s are used in the table view's table cells for the UI scalability across screens with different wide. When a product is selected, product detail view controller opens and displays product details.
The table view is managed reactively by RxSwift suite.
R.swift is used to get strong references to the resources such as storyboards, nibs, and images.
Alamofire is used for the HTTP networking.
Kingfisher is used for asynchronous image downloading and caching.
SwiftLint is used to enforce Swift style and conventions, loosely based on GitHub's Swift Style Guide.
The project includes a target WLAssignmentTests
with unit tests. The product list network request and the product list model view are tested as they contain most of the app business logic.
Quick, RxNimble and RxTest are used to simplify reactive testing.
Mockingjay is used for stubbing HTTP requests.