Skip to content

Commit 9580a2c

Browse files
committed
check test failure message for Empty and NotEmpty
Only the tests are updated, code is unchanged. Previously, the tests were checking only the result of the asserter. Using captureTestingT helper allows to check the error message
1 parent 9fc264e commit 9580a2c

File tree

1 file changed

+148
-0
lines changed

1 file changed

+148
-0
lines changed

assert/assertions_test.go

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,6 +1704,92 @@ func TestEmpty(t *testing.T) {
17041704
False(t, Empty(mockT, TString("abc")), "non-empty aliased string is empty")
17051705
False(t, Empty(mockT, xP), "ptr to non-nil value is not empty")
17061706
False(t, Empty(mockT, [1]int{42}), "array is not state")
1707+
1708+
// error messages validation
1709+
tests := []struct {
1710+
name string
1711+
value interface{}
1712+
expectedResult bool
1713+
expectedErrMsg string
1714+
}{
1715+
{
1716+
name: "Non Empty string is not empty",
1717+
value: "something",
1718+
expectedResult: false,
1719+
expectedErrMsg: "Should be empty, but was something\n",
1720+
},
1721+
{
1722+
name: "Non nil object is not empty",
1723+
value: errors.New("something"),
1724+
expectedResult: false,
1725+
expectedErrMsg: "Should be empty, but was something\n",
1726+
},
1727+
{
1728+
name: "Non empty string array is not empty",
1729+
value: []string{"something"},
1730+
expectedResult: false,
1731+
expectedErrMsg: "Should be empty, but was [something]\n",
1732+
},
1733+
{
1734+
name: "Non-zero int value is not empty",
1735+
value: 1,
1736+
expectedResult: false,
1737+
expectedErrMsg: "Should be empty, but was 1\n",
1738+
},
1739+
{
1740+
name: "True value is not empty",
1741+
value: true,
1742+
expectedResult: false,
1743+
expectedErrMsg: "Should be empty, but was true\n",
1744+
},
1745+
{
1746+
name: "Channel with values is not empty",
1747+
value: chWithValue,
1748+
expectedResult: false,
1749+
expectedErrMsg: fmt.Sprintf("Should be empty, but was %v\n", chWithValue),
1750+
},
1751+
{
1752+
name: "struct with initialized values is empty",
1753+
value: TStruct{x: 1},
1754+
expectedResult: false,
1755+
expectedErrMsg: "Should be empty, but was {1}\n",
1756+
},
1757+
{
1758+
name: "non-empty aliased string is empty",
1759+
value: TString("abc"),
1760+
expectedResult: false,
1761+
expectedErrMsg: "Should be empty, but was abc\n",
1762+
},
1763+
{
1764+
name: "ptr to non-nil value is not empty",
1765+
value: xP,
1766+
expectedResult: false,
1767+
expectedErrMsg: fmt.Sprintf("Should be empty, but was %p\n", xP),
1768+
},
1769+
{
1770+
name: "array is not state",
1771+
value: [1]int{42},
1772+
expectedResult: false,
1773+
expectedErrMsg: "Should be empty, but was [42]\n",
1774+
},
1775+
1776+
// Here we are testing there is no error message on success
1777+
{
1778+
name: "Empty string is empty",
1779+
value: "",
1780+
expectedResult: true,
1781+
expectedErrMsg: "",
1782+
},
1783+
}
1784+
1785+
for _, tt := range tests {
1786+
tt := tt
1787+
t.Run(tt.name, func(t *testing.T) {
1788+
mockCT := new(captureTestingT)
1789+
res := Empty(mockCT, tt.value)
1790+
mockCT.checkResultAndErrMsg(t, res, tt.expectedResult, tt.expectedErrMsg)
1791+
})
1792+
}
17071793
}
17081794

17091795
func TestNotEmpty(t *testing.T) {
@@ -1726,6 +1812,68 @@ func TestNotEmpty(t *testing.T) {
17261812
True(t, NotEmpty(mockT, true), "True value is not empty")
17271813
True(t, NotEmpty(mockT, chWithValue), "Channel with values is not empty")
17281814
True(t, NotEmpty(mockT, [1]int{42}), "array is not state")
1815+
1816+
// error messages validation
1817+
tests := []struct {
1818+
name string
1819+
value interface{}
1820+
expectedResult bool
1821+
expectedErrMsg string
1822+
}{
1823+
{
1824+
name: "Empty string is empty",
1825+
value: "",
1826+
expectedResult: false,
1827+
expectedErrMsg: `Should NOT be empty, but was ` + "\n", // TODO FIX THIS strange error message
1828+
},
1829+
{
1830+
name: "Nil is empty",
1831+
value: nil,
1832+
expectedResult: false,
1833+
expectedErrMsg: "Should NOT be empty, but was <nil>\n",
1834+
},
1835+
{
1836+
name: "Empty string array is empty",
1837+
value: []string{},
1838+
expectedResult: false,
1839+
expectedErrMsg: "Should NOT be empty, but was []\n",
1840+
},
1841+
{
1842+
name: "Zero int value is empty",
1843+
value: 0,
1844+
expectedResult: false,
1845+
expectedErrMsg: "Should NOT be empty, but was 0\n",
1846+
},
1847+
{
1848+
name: "False value is empty",
1849+
value: false,
1850+
expectedResult: false,
1851+
expectedErrMsg: "Should NOT be empty, but was false\n",
1852+
},
1853+
{
1854+
name: "array is state",
1855+
value: [1]int{},
1856+
expectedResult: false,
1857+
expectedErrMsg: "Should NOT be empty, but was [0]\n",
1858+
},
1859+
1860+
// Here we are testing there is no error message on success
1861+
{
1862+
name: "Non Empty string is not empty",
1863+
value: "something",
1864+
expectedResult: true,
1865+
expectedErrMsg: "",
1866+
},
1867+
}
1868+
1869+
for _, tt := range tests {
1870+
tt := tt
1871+
t.Run(tt.name, func(t *testing.T) {
1872+
mockCT := new(captureTestingT)
1873+
res := NotEmpty(mockCT, tt.value)
1874+
mockCT.checkResultAndErrMsg(t, tt.expectedResult, res, tt.expectedErrMsg)
1875+
})
1876+
}
17291877
}
17301878

17311879
func Test_getLen(t *testing.T) {

0 commit comments

Comments
 (0)