package com.braintreegateway.util; import com.braintreegateway.CreditCardRequest; import com.braintreegateway.Request; import com.braintreegateway.testhelpers.TestHelper; import org.junit.Test; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertEquals; public class QueryStringTest { @Test public void append() { String actual = new QueryString(). append("foo", "f"). append("bar", "b"). toString(); assertEquals("foo=f&bar=b", actual); } @Test public void appendEmptyStringOrNulls() { String actual = new QueryString(). append("foo", "f"). append("", "b"). append("bar", ""). append("boom", null). append("", "c"). toString(); assertEquals("foo=f&bar=", actual); } @Test public void appendOtherObjectsWithCanBeConvertedToStrings() { String actual = new QueryString(). append("foo", 10). append("bar", new BigDecimal("20.00")). toString(); assertEquals("foo=10&bar=20.00", actual); } @Test public void appendWithRequest() { Request request = new CreditCardRequest().cvv("123").cardholderName("Drew"); String actual = new QueryString(). append("[credit_card]", request). toString(); TestHelper.assertIncludes("%5Bcredit_card%5D%5Bcardholder_name%5D=Drew", actual); TestHelper.assertIncludes("%5Bcredit_card%5D%5Bcvv%5D=123", actual); } @Test public void appendWithMap() { Map<String, String> map = new HashMap<String, String>(); map.put("name", "john"); map.put("age", "15"); String actual = new QueryString().append("transaction[custom_fields]", map).toString(); TestHelper.assertIncludes("transaction%5Bcustom_fields%5D%5Bage%5D=15", actual); TestHelper.assertIncludes("transaction%5Bcustom_fields%5D%5Bname%5D=john", actual); } @Test public void appendWithNestedRequest() { Request request = new CreditCardRequest(). cvv("123"). cardholderName("Drew"). billingAddress(). company("Braintree"). done(). options(). makeDefault(true). verifyCard(true). done(); String actual = new QueryString().append("[credit_card]", request).toString(); TestHelper.assertIncludes("%5Bcredit_card%5D%5Bcardholder_name%5D=Drew", actual); TestHelper.assertIncludes("%5Bcredit_card%5D%5Bcvv%5D=123", actual); TestHelper.assertIncludes("%5Bcredit_card%5D%5Bbilling_address%5D%5Bcompany%5D=Braintree", actual); TestHelper.assertIncludes("%5Bcredit_card%5D%5Boptions%5D%5Bmake_default%5D=true", actual); TestHelper.assertIncludes("%5Bcredit_card%5D%5Boptions%5D%5Bverify_card%5D=true", actual); } @Test public void appendWithoutEncoding() { QueryString queryString = new QueryString(); queryString.appendWithoutEncoding("my key with a space", "/:%"); assertEquals(queryString.toString(), "my key with a space=/:%"); } }