Register
Submit a solution
The challenge is finished.

Challenge Overview

The Retail 360 iOS App is a tool used by Hercules employees in their retail stores.  The app allows for looking up customer details and will eventually contain lots of functionality for managing customer accounts, making changes to their accounts, and adding notes, sending emails, etc...

We have released version 1 of the app to some employees, and version 2 is nearing completion.  As we add more and more functionality, we need to ensure that the existing functionality isn't broken by any new changes.

This challenge will start the UI unit tests for the app, which we will build on over the next couple of months to get proper coverage of the app.

Requirements:

This challenge will build the base for future challenges.  This challenge will cover some of the basic app navigation (login, basic tabs, and logout), and will also ensure the unit tests for the base libraries are linked in and run during the testing process.

Base libraries and targets:

Each target (dev, staging, prod) should have a corresponding test target.  We build the app through a Continuous Integration environment, and we will run the tests as part of the build.  Because each target has a different configuration, we want to test the configuration that matches the target to ensure there aren't issues with specific configuration values that might be used for either dev, staging, or prod.  The base libraries have unit tests already.  We won't change them for this challenge, but we'll ensure they run as part of any new test targets added.

Coverage:

Generating a coverage report must be documented, and information below can help with that.  Note that no specific % is required, but the reviewers will ensure that your implementation is correct and provides proper functional coverage.

Required updates:

Xcconfig files

Currently, the base libraries unit tests require separate xcconfig files to be placed in their directory and they don't use environmental variables that are set.  This means the tests don't run properly in our continuous integration environment, where we run these tests.

We need to update the tests to follow the same structure as the UI tests, where the environmental variables are used and the general app xcconfig files are used, not separate ones for the base libraries.

IMS Service

There is a new IMSService class in the base libraries.  It doesn't have unit tests, so we want to add a couple.  Here are some test details we can use:
  • Account 8919100011432490
    Old device DHT3416R3110
    New device DHT3416R3302

  • Account 8919100011432615
    Old device DHT3416R3114
    New device STBS56527152

Test removal

We can remove these tests:

* QuantumBridgeGrandslamServiceTests
* QuantumBridgeHistoryServiceTests
* QuantumBridgeMerlinTVServiceTests
* QuantumBridgeRialtoServiceTests
* HerculesTVXTests

Working

The remaining tests must be updated to all pass.  If a test is failing and you aren't sure why, please ask in the forum and we can get clarification to you.


Helpful links:

https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html
https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/07-code_coverage.html
* http://cleanswifter.com/measuring-swift-code-coverage/
https://developer.apple.com/videos/play/wwdc2015/410/
http://mgrebenets.github.io/mobile%20ci/2015/09/21/code-coverage-for-ios-xcode-7
 
Submission format

Your submission should be provided as a Git patch file against the commit hash mentioned in the forum.  MAKE SURE TO TEST YOUR PATCH FILE!

No video is required for this challenge.

A separate UNIT_TESTS_README.md exists in Git and should be updated for this challenge
 

 



Final Submission Guidelines

Please see above

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30055847