Skip to content

Karumi/iOSBasicTraining

Repository files navigation

karumilogo iOS Basic Training

Build Status

Code associated to the first level of the Karumi iOS Training.

##Earth 11 Avengers Detector

In Earth 11 the world of super heroes has completely changed. Super heroes are super villans and viceversa. In this earth the Avengers team is now an evil coporation and is not composed by the usual super heroes. The new members of this organization are unknown.

After collaborating with The Flash from Earth 1 Central City Police Departament has noticed that the new Avengers Team members are the one containing the number four in the super hero id. Your mission, if you decide to accept it, is to develop an iOS application to show a list of super heroes obtained from a remote API showing the Avengers badge if the super hero is part of the Earth 11 evil Avengers Team.

As super heroes are now super villans the Cental City Police Departament also requested us a feature to be able to mark a super hero as captured in the detailed screen. Once the super hero has been captured the system will not show information related to the super hero anymore.

##Application mockups

ApplicationScreencast

##Tasks

  • Task 1:

    • Create an empty iOS project from XCode.
    • Configure CocoaPods.
    • Implement part of the domain model abstracting the data source.
    • Write the unit tests needed to cover this functionality. You can use Nimble to implement your matchers.
    • Bonus:
      • Configure Travis-CI as a continous integration system.
      • Configure Swiftlint as checkstyle tool.
      • Change application logo.
      • Change the splash screen xib to use the app logo.
  • Task 2:

    • Implement the Super Hero Detail UIViewController using the XCode interface builder and show some mocked data there.
    • Add a button to the first view controller to connect this view controller with the detail view controller and implement this navigation.
    • Bonus:
      • Read the KIF Framework documentation and sample project.
      • Using the iOS simulator review the accessibility labels configured.
  • Task 3:

    • Implement the Super Heroes UIViewController using a table view.
    • Show some mocked data in the already implemented Super Heroes screen.
    • Connect the super heroes screen with the system you wrote during the task 1.
    • The tests needed to cover this new funtionality will be covered during another exercise.
    • Bonus:
      • Replace your UITableView widget with a UICollectionView.
      • Change the Super Heroes screen to show 3 columns if the device is an iPad and 1 column by default.
      • Write some UI Tests using the UI Test recorder.
  • Task 4:

    • Refactor the already implemented view controllers to use Model View Presenter to develop the application presentation layer.
    • Create all the use cases needed to connect your presentation layer with the already implemented domain.
    • Create a repository to hide the usage of the SuperHeroesAPIClient as data source and be able to add more data sources in the future if needed.
    • Bonus:
  • Task 5:

    • Connect your already implemented domain with the remote API using an already implemented Marvel API Client following the repository pattern.
    • The tests needed to cover this new funtionality will be covered during aother exercise.
    • Bonus:
      • Using Alamofire implement your own Marvel API Client and replace the old one with this one.
      • Write some integration tests using HTTP stubbing with Nocilla
      • Add persistence to the application.
      • Replace the usage of completion handlers with promisses or observables.
  • Extra tasks:

    • Change your Model View Presenter implementation to use Botham UI
    • Add a pull to refresh mechanism.
    • Add an infinite load mechanism and implement pagination.
    • Improve the UX related to the capture a super hero process avoiding the blink effect when a super hero is captured. How can you do this?

License

Copyright 2016 Karumi

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

Code associated to the first level of our iOS Training.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages