diff --git a/src/main/java/org/assertj/db/api/AbstractColumnAssert.java b/src/main/java/org/assertj/db/api/AbstractColumnAssert.java index c2f70b0d..16c1e0fb 100644 --- a/src/main/java/org/assertj/db/api/AbstractColumnAssert.java +++ b/src/main/java/org/assertj/db/api/AbstractColumnAssert.java @@ -93,6 +93,12 @@ protected List getValuesList() { return column.getValuesList(); } + /** {@inheritDoc} */ + @Override + public C isEmpty() { + return hasNumberOfRows(0); + } + /** {@inheritDoc} */ @Override public C hasNumberOfRows(int expected) { diff --git a/src/main/java/org/assertj/db/api/AbstractDbAssert.java b/src/main/java/org/assertj/db/api/AbstractDbAssert.java index e71dfc0c..a2afbacb 100644 --- a/src/main/java/org/assertj/db/api/AbstractDbAssert.java +++ b/src/main/java/org/assertj/db/api/AbstractDbAssert.java @@ -115,6 +115,12 @@ public C column(String columnName) { return columnPosition.getInstance(actual.getColumnsList(), actual.getColumnsNameList(), columnName, actual.getColumnLetterCase()); } + /** {@inheritDoc} */ + @Override + public A isEmpty() { + return hasNumberOfRows(0); + } + /** {@inheritDoc} */ @Override public A hasNumberOfRows(int expected) { diff --git a/src/main/java/org/assertj/db/api/assertions/AssertOnNumberOfRows.java b/src/main/java/org/assertj/db/api/assertions/AssertOnNumberOfRows.java index 875e84bf..9c2f9255 100644 --- a/src/main/java/org/assertj/db/api/assertions/AssertOnNumberOfRows.java +++ b/src/main/java/org/assertj/db/api/assertions/AssertOnNumberOfRows.java @@ -22,6 +22,23 @@ */ public interface AssertOnNumberOfRows> { + /** + * Verifies that the number of rows is zero. + *

+ * Example where the assertion verifies that the table is empty : + *

+ * + *

+   * assertThat(table).isEmpty();
+   * 
+ * + * @return {@code this} assertion object. + * @throws AssertionError If the number of rows is different from zero. + * @see org.assertj.db.api.AbstractDbAssert#isEmpty() + * @see org.assertj.db.api.AbstractColumnAssert#isEmpty() + */ + T isEmpty(); + /** * Verifies that the number of rows is equal to the number in parameter. *

diff --git a/src/test/java/org/assertj/db/api/assertions/AssertOnNumberOfRows_IsEmpty_Test.java b/src/test/java/org/assertj/db/api/assertions/AssertOnNumberOfRows_IsEmpty_Test.java new file mode 100644 index 00000000..8d49788b --- /dev/null +++ b/src/test/java/org/assertj/db/api/assertions/AssertOnNumberOfRows_IsEmpty_Test.java @@ -0,0 +1,74 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * Copyright 2012-2016 the original author or authors. + */ +package org.assertj.db.api.assertions; + +import org.assertj.core.api.Assertions; +import org.assertj.db.api.TableAssert; +import org.assertj.db.api.TableColumnAssert; +import org.assertj.db.common.AbstractTest; +import org.assertj.db.type.Request; +import org.assertj.db.type.Table; +import org.junit.Test; + +import static org.assertj.db.api.Assertions.assertThat; +import static org.junit.Assert.fail; + +/** + * Tests on {@link org.assertj.db.api.assertions.AssertOnNumberOfRows} class : + * {@link AssertOnNumberOfRows#isEmpty()} method. + */ +public class AssertOnNumberOfRows_IsEmpty_Test extends AbstractTest { + + /** + * This method tests the {@code isEmpty} assertion method. + */ + @Test + public void test_is_empty() { + update("delete from test"); + Table table = new Table(source, "test"); + TableAssert tableAssert = assertThat(table); + TableAssert tableAssert2 = tableAssert.isEmpty(); + Assertions.assertThat(tableAssert).isSameAs(tableAssert2); + TableColumnAssert tableColumnAssert = assertThat(table).column(); + TableColumnAssert tableColumnAssert2 = tableColumnAssert.isEmpty(); + Assertions.assertThat(tableColumnAssert).isSameAs(tableColumnAssert2); + } + + /** + * This method should fail because table is not empty. + */ + @Test + public void should_fail_because_table_is_not_empty() { + Request request = new Request(source, "select * from actor"); + try { + assertThat(request).isEmpty(); + fail("An exception must be raised"); + } catch (AssertionError e) { + Assertions.assertThat(e.getMessage()).isEqualTo(String.format("['select * from actor' request] %n" + + "Expecting size (number of rows) to be equal to :%n" + + " <0>%n" + + "but was:%n" + + " <3>")); + } + try { + assertThat(request).column().isEmpty(); + fail("An exception must be raised"); + } catch (AssertionError e) { + Assertions.assertThat(e.getMessage()).isEqualTo(String.format("[Column at index 0 (column name : ID) of 'select * from actor' request] %n" + + "Expecting size (number of rows) to be equal to :%n" + + " <0>%n" + + "but was:%n" + + " <3>")); + } + } +}