Skip to content

Latest commit

 

History

History

GO-JEK-Assignment

1. GO-JEK Assignment

GO-JEK Assignment by Anonymous.

2. Requirements

3. Getting Start

  • Open GJAssignment.xcworkspace in Xcode 10.3
  • Build the project

4. Problem Statements

Problem Statements

5. Swift

This project is build using Swift 5.

6. 3rd Party

​This project only using MBProgressHUD 3rd party dependency. Because less 3rd party means higher selection chances. I added this 3rd party just to demonstrate the use of the dependency manager (cocoapods).

7. Unit and UI Test case

  • Total number of test cases - 34
  • Unit test cases - 20
  • UI test cases - 14
  • Code coverage - 87.3%

I'm not using any 3rd parting to mocking and stubs the objects. I build my own protocol based solution by creating fake URLSession.

8. Architecture

In this project, I'm using MVVM architecture without any Reactive 3rd party lib(like RxSwift etc.). For binding purposes, I'm using the custom binding class to bind properties and UI elements with ViewModels. These custom classes are available here.

9. Memory Management

After continually using the app for 8+ mins, the app only gets memory leaks of total 224 bytes. This process includes the interaction with other apps like message app, phone app and Camera (UIImagePickerController).

10. Extra Feature

I'm using CoreData to store contacts locally. Which means you can view contacts offline but with limited functionality. Like you can't add new contact or update existing.

11. Fastlane

  • fastlane tests - Runs all the tests
  • fastlane build - Run all the tests and build