Skip to content

Commit

Permalink
added isEmpty assertion (requested at assertj#12)
Browse files Browse the repository at this point in the history
  • Loading branch information
fiery-phoenix committed Jul 6, 2016
1 parent 9f04f6c commit 3c2a664
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/main/java/org/assertj/db/api/AbstractColumnAssert.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,12 @@ protected List<Value> getValuesList() {
return column.getValuesList();
}

/** {@inheritDoc} */
@Override
public C isEmpty() {
return hasNumberOfRows(0);
}

/** {@inheritDoc} */
@Override
public C hasNumberOfRows(int expected) {
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/org/assertj/db/api/AbstractDbAssert.java
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,23 @@
*/
public interface AssertOnNumberOfRows<T extends AssertOnNumberOfRows<T>> {

/**
* Verifies that the number of rows is zero.
* <p>
* Example where the assertion verifies that the table is empty :
* </p>
*
* <pre><code class='java'>
* assertThat(table).isEmpty();
* </code></pre>
*
* @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.
* <p>
Expand Down
Original file line number Diff line number Diff line change
@@ -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>"));
}
}
}

0 comments on commit 3c2a664

Please sign in to comment.