Lately, Topcoder puts a lot of efforts into a massive update and enhancement of our beloved community platform. A lot of development is going on inside Community App
, which is powered by ReactJS / Redux with various bells and whistles, and, what is important for this challenge, unit-tested with Jest. Recent updated of the app have dropped the unit-test coverage to low levels (~25% of code is covered). In this challenge you will increase unit-test coverage up to a solid level (> 80% or higher), following the best practices of unit-testing ReactJS apps with Jest.
You should work out of the latest commit in develop branch of Community App (f0c231cc3fb5d923aa1e401da085575bb1ef1b73 at the moment of writing these specs). Currently there are a few skipped tests, that were broken by recent changes - fix them first. Then go through the unit test coverage report and systematicaly add unit tests everywhere to increase all kinds of coverage (statements / branches / functions / lines). Also pay attention to warnings printed to the console when the tests are running. Some of them point to failing prop types checks: these might be due to wrong types of parameters passed into components during tests, or because of errors in prop types checks - you should fix these problems correctly.
If you feel puzzled how to do some specific kind of testing, do not hesistate to ask / discuss in the challenge forum.
For this challenge I have picked up Data Science Subjective
scorecard. The idea is to score submissions by the average unit test coverage they have achieved (i.e. submission with the higher test coverage should win). Any incorrectly implemented unit tests should not be accounted in the coverage (I believe, you can skip them when running testing for scoring, and provide an adequate note in the scorecard about which tests and why have not been counted, if any). If some tests have small problems, at discretion of the reviewer, we can still count them, but it will be cool to still have the comment in the scorecard, so we fix the issues later. We will use 80% test coverage level as the threshold - any submissions which have not reached this level will be failed by assigning a score less than 50 in the scorecard.