UDT tests decomposition
This commit is contained in:
parent
46742cd2df
commit
f7de3257c2
3 changed files with 296 additions and 245 deletions
|
@ -15,15 +15,6 @@
|
|||
*/
|
||||
package com.noorq.casser.test.integration.core.udtcollection;
|
||||
|
||||
import static com.noorq.casser.core.Query.eq;
|
||||
import static com.noorq.casser.core.Query.getIdx;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -31,7 +22,7 @@ import com.noorq.casser.core.Casser;
|
|||
import com.noorq.casser.core.CasserSession;
|
||||
import com.noorq.casser.test.integration.build.AbstractEmbeddedCassandraTest;
|
||||
|
||||
public class UDTCollectionTest extends AbstractEmbeddedCassandraTest {
|
||||
public abstract class UDTCollectionTest extends AbstractEmbeddedCassandraTest {
|
||||
|
||||
static Book book = Casser.dsl(Book.class);
|
||||
|
||||
|
@ -47,240 +38,7 @@ public class UDTCollectionTest extends AbstractEmbeddedCassandraTest {
|
|||
System.out.println(book);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetCRUID() {
|
||||
|
||||
int id = 555;
|
||||
|
||||
// CREATE
|
||||
|
||||
Set<Author> reviewers = new HashSet<Author>();
|
||||
reviewers.add(new AuthorImpl("Alex", "San Jose"));
|
||||
reviewers.add(new AuthorImpl("Bob", "San Francisco"));
|
||||
|
||||
session.insert()
|
||||
.value(book::id, id)
|
||||
.value(book::reviewers, reviewers)
|
||||
.sync();
|
||||
|
||||
// READ
|
||||
|
||||
Book actual = session.select(Book.class).where(book::id, eq(id)).sync().findFirst().get();
|
||||
Assert.assertEquals(id, actual.id());
|
||||
assertEqualSets(reviewers, actual.reviewers());
|
||||
|
||||
// UPDATE
|
||||
|
||||
Set<Author> expected = new HashSet<Author>();
|
||||
expected.add(new AuthorImpl("Craig", "Los Altos"));
|
||||
|
||||
session.update().set(book::reviewers, expected).where(book::id, eq(id)).sync();
|
||||
|
||||
Set<Author> actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// add operation
|
||||
|
||||
expected.add(new AuthorImpl("Add", "AddCity"));
|
||||
session.update().add(book::reviewers, new AuthorImpl("Add", "AddCity"))
|
||||
.where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// addAll operation
|
||||
expected.addAll(reviewers);
|
||||
session.update().addAll(book::reviewers, reviewers).where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// DELETE
|
||||
|
||||
// remove single value
|
||||
|
||||
Author a = expected.stream().filter(p -> p.name().equals("Add")).findFirst().get();
|
||||
expected.remove(a);
|
||||
|
||||
session.update().remove(book::reviewers, a).where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// remove values
|
||||
|
||||
expected.remove(expected.stream().filter(p -> p.name().equals("Alex")).findFirst().get());
|
||||
expected.remove(expected.stream().filter(p -> p.name().equals("Bob")).findFirst().get());
|
||||
session.update().removeAll(book::reviewers, reviewers).where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// remove full list
|
||||
|
||||
session.update().set(book::reviewers, null).where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
Assert.assertNull(actualSet);
|
||||
|
||||
// remove object
|
||||
|
||||
session.delete().where(book::id, eq(id)).sync();
|
||||
Long cnt = session.count().where(book::id, eq(id)).sync();
|
||||
Assert.assertEquals(Long.valueOf(0), cnt);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void assertEqualSets(Set<Author> expected, Set<Author> actual) {
|
||||
Assert.assertEquals(expected.size(), actual.size());
|
||||
|
||||
for (Author e : expected) {
|
||||
Author a = actual.stream().filter(p -> p.name().equals(e.name())).findFirst().get();
|
||||
Assert.assertEquals(e.city(), a.city());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testListCRUID() {
|
||||
|
||||
int id = 777;
|
||||
|
||||
List<Author> authors = new ArrayList<Author>();
|
||||
authors.add(new AuthorImpl("Alex", "San Jose"));
|
||||
authors.add(new AuthorImpl("Bob", "San Francisco"));
|
||||
|
||||
// CREATE
|
||||
|
||||
session.insert()
|
||||
.value(book::id, id)
|
||||
.value(book::authors, authors)
|
||||
.sync();
|
||||
|
||||
// READ
|
||||
|
||||
// read full object
|
||||
|
||||
Book actual = session.select(Book.class).where(book::id, eq(id)).sync().findFirst().get();
|
||||
Assert.assertEquals(id, actual.id());
|
||||
assertEqualLists(authors, actual.authors());
|
||||
Assert.assertNull(actual.reviewers());
|
||||
Assert.assertNull(actual.contents());
|
||||
|
||||
// read full list
|
||||
|
||||
List<Author> actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(authors, actualList);
|
||||
|
||||
// read single value by index
|
||||
|
||||
String cql = session.select(getIdx(book::authors, 1))
|
||||
.where(book::id, eq(id)).cql();
|
||||
|
||||
System.out.println("Still not supporting cql = " + cql);
|
||||
|
||||
// UPDATE
|
||||
|
||||
List<Author> expected = new ArrayList<Author>();
|
||||
expected.add(new AuthorImpl("Unknown", "City 17"));
|
||||
|
||||
session.update().set(book::authors, expected).where(book::id, eq(id)).sync();
|
||||
|
||||
actual = session.select(Book.class).where(book::id, eq(id)).sync().findFirst().get();
|
||||
Assert.assertEquals(id, actual.id());
|
||||
assertEqualLists(expected, actual.authors());
|
||||
|
||||
// INSERT
|
||||
|
||||
// prepend operation
|
||||
|
||||
expected.add(0, new AuthorImpl("Prepend", "PrependCity"));
|
||||
session.update().prepend(book::authors, new AuthorImpl("Prepend", "PrependCity")).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// append operation
|
||||
|
||||
expected.add(new AuthorImpl("Append", "AppendCity"));
|
||||
session.update().append(book::authors, new AuthorImpl("Append", "AppendCity")).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// prependAll operation
|
||||
expected.addAll(0, authors);
|
||||
session.update().prependAll(book::authors, authors).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// appendAll operation
|
||||
expected.addAll(authors);
|
||||
session.update().appendAll(book::authors, authors).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// set by Index
|
||||
|
||||
Author inserted = new AuthorImpl("Insert", "InsertCity");
|
||||
expected.set(5, inserted);
|
||||
session.update().setIdx(book::authors, 5, inserted).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// DELETE
|
||||
|
||||
// remove single value
|
||||
|
||||
expected.remove(inserted);
|
||||
session.update().discard(book::authors, inserted).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// remove values
|
||||
|
||||
expected.removeAll(authors);
|
||||
session.update().discardAll(book::authors, authors).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// remove full list
|
||||
|
||||
session.update().set(book::authors, null).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
Assert.assertNull(actualList);
|
||||
|
||||
// remove object
|
||||
|
||||
session.delete().where(book::id, eq(id)).sync();
|
||||
Long cnt = session.count().where(book::id, eq(id)).sync();
|
||||
Assert.assertEquals(Long.valueOf(0), cnt);
|
||||
|
||||
}
|
||||
|
||||
private void assertEqualLists(List<Author> expected, List<Author> actual) {
|
||||
Assert.assertEquals(expected.size(), actual.size());
|
||||
|
||||
int size = expected.size();
|
||||
|
||||
for (int i = 0; i != size; ++i) {
|
||||
Author e = expected.get(i);
|
||||
Author a = actual.get(i);
|
||||
Assert.assertEquals(e.name(), a.name());
|
||||
Assert.assertEquals(e.city(), a.city());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final class AuthorImpl implements Author {
|
||||
public static final class AuthorImpl implements Author {
|
||||
|
||||
String name;
|
||||
String city;
|
||||
|
@ -338,7 +96,7 @@ public class UDTCollectionTest extends AbstractEmbeddedCassandraTest {
|
|||
|
||||
}
|
||||
|
||||
private static final class SectionImpl implements Section {
|
||||
public static final class SectionImpl implements Section {
|
||||
|
||||
String title;
|
||||
int page;
|
||||
|
|
|
@ -0,0 +1,168 @@
|
|||
/*
|
||||
* Copyright (C) 2015 Noorq, Inc.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
package com.noorq.casser.test.integration.core.udtcollection;
|
||||
|
||||
import static com.noorq.casser.core.Query.eq;
|
||||
import static com.noorq.casser.core.Query.getIdx;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class UDTListTest extends UDTCollectionTest {
|
||||
|
||||
@Test
|
||||
public void testListCRUID() {
|
||||
|
||||
int id = 777;
|
||||
|
||||
List<Author> authors = new ArrayList<Author>();
|
||||
authors.add(new AuthorImpl("Alex", "San Jose"));
|
||||
authors.add(new AuthorImpl("Bob", "San Francisco"));
|
||||
|
||||
// CREATE
|
||||
|
||||
session.insert()
|
||||
.value(book::id, id)
|
||||
.value(book::authors, authors)
|
||||
.sync();
|
||||
|
||||
// READ
|
||||
|
||||
// read full object
|
||||
|
||||
Book actual = session.select(Book.class).where(book::id, eq(id)).sync().findFirst().get();
|
||||
Assert.assertEquals(id, actual.id());
|
||||
assertEqualLists(authors, actual.authors());
|
||||
Assert.assertNull(actual.reviewers());
|
||||
Assert.assertNull(actual.contents());
|
||||
|
||||
// read full list
|
||||
|
||||
List<Author> actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(authors, actualList);
|
||||
|
||||
// read single value by index
|
||||
|
||||
String cql = session.select(getIdx(book::authors, 1))
|
||||
.where(book::id, eq(id)).cql();
|
||||
|
||||
System.out.println("Still not supporting cql = " + cql);
|
||||
|
||||
// UPDATE
|
||||
|
||||
List<Author> expected = new ArrayList<Author>();
|
||||
expected.add(new AuthorImpl("Unknown", "City 17"));
|
||||
|
||||
session.update().set(book::authors, expected).where(book::id, eq(id)).sync();
|
||||
|
||||
actual = session.select(Book.class).where(book::id, eq(id)).sync().findFirst().get();
|
||||
Assert.assertEquals(id, actual.id());
|
||||
assertEqualLists(expected, actual.authors());
|
||||
|
||||
// INSERT
|
||||
|
||||
// prepend operation
|
||||
|
||||
expected.add(0, new AuthorImpl("Prepend", "PrependCity"));
|
||||
session.update().prepend(book::authors, new AuthorImpl("Prepend", "PrependCity")).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// append operation
|
||||
|
||||
expected.add(new AuthorImpl("Append", "AppendCity"));
|
||||
session.update().append(book::authors, new AuthorImpl("Append", "AppendCity")).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// prependAll operation
|
||||
expected.addAll(0, authors);
|
||||
session.update().prependAll(book::authors, authors).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// appendAll operation
|
||||
expected.addAll(authors);
|
||||
session.update().appendAll(book::authors, authors).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// set by Index
|
||||
|
||||
Author inserted = new AuthorImpl("Insert", "InsertCity");
|
||||
expected.set(5, inserted);
|
||||
session.update().setIdx(book::authors, 5, inserted).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// DELETE
|
||||
|
||||
// remove single value
|
||||
|
||||
expected.remove(inserted);
|
||||
session.update().discard(book::authors, inserted).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// remove values
|
||||
|
||||
expected.removeAll(authors);
|
||||
session.update().discardAll(book::authors, authors).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualLists(expected, actualList);
|
||||
|
||||
// remove full list
|
||||
|
||||
session.update().set(book::authors, null).where(book::id, eq(id)).sync();
|
||||
|
||||
actualList = session.select(book::authors).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
Assert.assertNull(actualList);
|
||||
|
||||
// remove object
|
||||
|
||||
session.delete().where(book::id, eq(id)).sync();
|
||||
Long cnt = session.count().where(book::id, eq(id)).sync();
|
||||
Assert.assertEquals(Long.valueOf(0), cnt);
|
||||
|
||||
}
|
||||
|
||||
private void assertEqualLists(List<Author> expected, List<Author> actual) {
|
||||
Assert.assertEquals(expected.size(), actual.size());
|
||||
|
||||
int size = expected.size();
|
||||
|
||||
for (int i = 0; i != size; ++i) {
|
||||
Author e = expected.get(i);
|
||||
Author a = actual.get(i);
|
||||
Assert.assertEquals(e.name(), a.name());
|
||||
Assert.assertEquals(e.city(), a.city());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* Copyright (C) 2015 Noorq, Inc.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
package com.noorq.casser.test.integration.core.udtcollection;
|
||||
|
||||
import static com.noorq.casser.core.Query.eq;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class UDTSetTest extends UDTCollectionTest {
|
||||
|
||||
@Test
|
||||
public void testSetCRUID() {
|
||||
|
||||
int id = 555;
|
||||
|
||||
// CREATE
|
||||
|
||||
Set<Author> reviewers = new HashSet<Author>();
|
||||
reviewers.add(new AuthorImpl("Alex", "San Jose"));
|
||||
reviewers.add(new AuthorImpl("Bob", "San Francisco"));
|
||||
|
||||
session.insert()
|
||||
.value(book::id, id)
|
||||
.value(book::reviewers, reviewers)
|
||||
.sync();
|
||||
|
||||
// READ
|
||||
|
||||
Book actual = session.select(Book.class).where(book::id, eq(id)).sync().findFirst().get();
|
||||
Assert.assertEquals(id, actual.id());
|
||||
assertEqualSets(reviewers, actual.reviewers());
|
||||
|
||||
// UPDATE
|
||||
|
||||
Set<Author> expected = new HashSet<Author>();
|
||||
expected.add(new AuthorImpl("Craig", "Los Altos"));
|
||||
|
||||
session.update().set(book::reviewers, expected).where(book::id, eq(id)).sync();
|
||||
|
||||
Set<Author> actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// add operation
|
||||
|
||||
expected.add(new AuthorImpl("Add", "AddCity"));
|
||||
session.update().add(book::reviewers, new AuthorImpl("Add", "AddCity"))
|
||||
.where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// addAll operation
|
||||
expected.addAll(reviewers);
|
||||
session.update().addAll(book::reviewers, reviewers).where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// DELETE
|
||||
|
||||
// remove single value
|
||||
|
||||
Author a = expected.stream().filter(p -> p.name().equals("Add")).findFirst().get();
|
||||
expected.remove(a);
|
||||
|
||||
session.update().remove(book::reviewers, a).where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// remove values
|
||||
|
||||
expected.remove(expected.stream().filter(p -> p.name().equals("Alex")).findFirst().get());
|
||||
expected.remove(expected.stream().filter(p -> p.name().equals("Bob")).findFirst().get());
|
||||
session.update().removeAll(book::reviewers, reviewers).where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
assertEqualSets(expected, actualSet);
|
||||
|
||||
// remove full list
|
||||
|
||||
session.update().set(book::reviewers, null).where(book::id, eq(id)).sync();
|
||||
|
||||
actualSet = session.select(book::reviewers).where(book::id, eq(id)).sync().findFirst().get()._1;
|
||||
Assert.assertNull(actualSet);
|
||||
|
||||
// remove object
|
||||
|
||||
session.delete().where(book::id, eq(id)).sync();
|
||||
Long cnt = session.count().where(book::id, eq(id)).sync();
|
||||
Assert.assertEquals(Long.valueOf(0), cnt);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void assertEqualSets(Set<Author> expected, Set<Author> actual) {
|
||||
Assert.assertEquals(expected.size(), actual.size());
|
||||
|
||||
for (Author e : expected) {
|
||||
Author a = actual.stream().filter(p -> p.name().equals(e.name())).findFirst().get();
|
||||
Assert.assertEquals(e.city(), a.city());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in a new issue