@Test public void testQuerySelectWhereIn() { final String name = "Hello!"; Person person = randomPerson(); person.setName(name); data.insert(person); Group group = new Group(); group.setName("Hello!"); data.insert(group); person.getGroups().add(group); data.update(person); Return<Result<Tuple>> groupNames = data.select(Group.NAME).where(Group.NAME.equal(name)); Person p = data.select(Person.class).where(Person.NAME.in(groupNames)).get().first(); assertEquals(p.getName(), name); p = data.select(Person.class).where(Person.NAME.notIn(groupNames)).get().firstOrNull(); assertNull(p); p = data.select(Person.class) .where(Person.NAME.in(Arrays.asList("Hello!", "Other"))) .get() .first(); assertEquals(p.getName(), name); p = data.select(Person.class) .where(Person.NAME.in(Collections.singleton("Hello!"))) .get() .first(); assertEquals(p.getName(), name); assertTrue( data.select(Person.class) .where(Person.NAME.notIn(Collections.singleton("Hello!"))) .get() .toList() .isEmpty()); }
@Test public void testDeleteManyToMany() { final Person person = randomPerson(); data.insert(person); final Collection<Group> groups = new ArrayList<>(); data.runInTransaction( new Callable<Object>() { @Override public Object call() throws Exception { for (int i = 0; i < 10; i++) { Group group = new Group(); group.setName("DeleteGroup" + i); data.insert(group); person.getGroups().add(group); groups.add(group); } data.update(person); return null; } }); for (Group g : groups) { person.getGroups().remove(g); } data.update(person); }
@Test public void testIterateInsertMany() { Person person = randomPerson(); assertTrue(person.getGroups().toList().isEmpty()); HashSet<Group> toAdd = new HashSet<>(); for (int i = 0; i < 10; i++) { Group group = new Group(); group.setName("Group" + i); person.getGroups().add(group); toAdd.add(group); } int count = 0; for (Group g : person.getGroups()) { assertTrue(toAdd.contains(g)); count++; } assertEquals(10, count); data.insert(person); }
@Test public void testInsertManyToMany() { Person person = randomPerson(); data.insert(person); assertTrue(person.getGroups().toList().isEmpty()); List<Group> added = new ArrayList<>(); try (Transaction transaction = data.transaction().begin()) { for (int i = 0; i < 10; i++) { Group group = new Group(); group.setName("Group" + i); group.setDescription("Some description"); group.setType(GroupType.PRIVATE); data.insert(group); person.getGroups().add(group); added.add(group); } data.update(person); transaction.commit(); } data.refresh(person, Person.GROUPS); assertTrue(added.containsAll(person.getGroups().toList())); }