### Question:
GetSkuDetailsRequest extends Request<Skus> { @Nullable @Override protected String getCacheKey() { if (mSkus.size() == 1) { return mProduct + "_" + mSkus.get(0); } else { final StringBuilder sb = new StringBuilder(5 * mSkus.size()); sb.append("["); for (int i = 0; i < mSkus.size(); i++) { if (i > 0) { sb.append(","); } sb.append(mSkus.get(i)); } sb.append("]"); return mProduct + "_" + sb.toString(); } } GetSkuDetailsRequest(@Nonnull String product, @Nonnull List<String> skus);   }### Answer:
@Test public void testShouldHaveSameCacheKey() throws Exception { final List<String> skus = asList("1", "2", "3"); final GetSkuDetailsRequest r1 = new GetSkuDetailsRequest("test", skus); Collections.reverse(skus); final GetSkuDetailsRequest r2 = new GetSkuDetailsRequest("test", skus); assertEquals(r1.getCacheKey(), r2.getCacheKey()); }
@Test public void testShouldContainAllSkusInCacheKey() throws Exception { final GetSkuDetailsRequest request = new GetSkuDetailsRequest("test", asList("1", "2", "3")); assertEquals("test_[1,2,3]", request.getCacheKey()); }