Skip to content

Commit 3c638d1

Browse files
committed
test: create test scenarion
Signed-off-by: Otavio Santana <[email protected]>
1 parent 031831b commit 3c638d1

File tree

4 files changed

+170
-4
lines changed

4 files changed

+170
-4
lines changed

jnosql-couchdb/src/main/java/org/eclipse/jnosql/databases/couchdb/communication/CouchdbDeleteQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ final class CouchdbDeleteQuery implements SelectQuery {
3838

3939
@Override
4040
public long limit() {
41-
return 10;
41+
return 0;
4242
}
4343

4444
@Override

jnosql-couchdb/src/test/java/org/eclipse/jnosql/databases/couchdb/communication/configuration/DocumentDatabase.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.eclipse.jnosql.databases.couchdb.communication.CouchDBConfigurations;
2222
import org.eclipse.jnosql.databases.couchdb.communication.CouchDBDocumentConfiguration;
2323
import org.eclipse.jnosql.databases.couchdb.communication.CouchDBDocumentManagerFactory;
24+
import org.jetbrains.annotations.NotNull;
2425
import org.testcontainers.containers.GenericContainer;
2526

2627
import java.util.function.Supplier;
@@ -40,10 +41,22 @@ public enum DocumentDatabase implements Supplier<CouchDBDocumentManagerFactory>
4041
public CouchDBDocumentManagerFactory get() {
4142
CouchDBDocumentConfiguration configuration = new CouchDBDocumentConfiguration();
4243
SettingsBuilder builder = Settings.builder();
43-
builder.put(CouchDBConfigurations.PORT, couchDB.getFirstMappedPort());
44-
builder.put(CouchDBConfigurations.USER, "admin");
45-
builder.put(CouchDBConfigurations.PASSWORD, "password");
44+
builder.put(CouchDBConfigurations.PORT, getPort());
45+
builder.put(CouchDBConfigurations.USER, getUser());
46+
builder.put(CouchDBConfigurations.PASSWORD, getPassword());
4647
return configuration.apply(builder.build());
4748
}
4849

50+
public String getPassword() {
51+
return "password";
52+
}
53+
54+
public String getUser() {
55+
return "admin";
56+
}
57+
58+
public Integer getPort() {
59+
return couchDB.getFirstMappedPort();
60+
}
61+
4962
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Copyright (c) 2025 Contributors to the Eclipse Foundation
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v1.0
5+
* and Apache License v2.0 which accompanies this distribution.
6+
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
7+
* and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
8+
*
9+
* You may elect to redistribute this code under either of these licenses.
10+
*
11+
* Contributors:
12+
*
13+
* Otavio Santana
14+
*/
15+
package org.eclipse.jnosql.databases.couchdb.communication.integration;
16+
17+
import jakarta.nosql.Column;
18+
import jakarta.nosql.Entity;
19+
import jakarta.nosql.Id;
20+
21+
@Entity
22+
public record Magazine(@Id String id, @Column("title") String title, @Column("edition") int edition) {
23+
24+
25+
}
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
/*
2+
* Copyright (c) 2025 Contributors to the Eclipse Foundation
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v1.0
5+
* and Apache License v2.0 which accompanies this distribution.
6+
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
7+
* and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
8+
*
9+
* You may elect to redistribute this code under either of these licenses.
10+
*
11+
* Contributors:
12+
*
13+
* Otavio Santana
14+
*/
15+
package org.eclipse.jnosql.databases.couchdb.communication.integration;
16+
17+
18+
import jakarta.inject.Inject;
19+
import org.eclipse.jnosql.databases.couchdb.communication.CouchDBConfigurations;
20+
import org.eclipse.jnosql.databases.couchdb.communication.configuration.DocumentDatabase;
21+
import org.eclipse.jnosql.mapping.Database;
22+
import org.eclipse.jnosql.mapping.core.Converters;
23+
import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
24+
import org.eclipse.jnosql.mapping.document.DocumentTemplate;
25+
import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
26+
import org.eclipse.jnosql.mapping.reflection.Reflections;
27+
import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
28+
import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
29+
import org.jboss.weld.junit5.auto.AddExtensions;
30+
import org.jboss.weld.junit5.auto.AddPackages;
31+
import org.jboss.weld.junit5.auto.EnableAutoWeld;
32+
import org.junit.jupiter.api.Test;
33+
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
34+
35+
import java.util.List;
36+
import java.util.Optional;
37+
38+
import static java.util.UUID.randomUUID;
39+
import static org.assertj.core.api.Assertions.assertThat;
40+
import static org.eclipse.jnosql.communication.driver.IntegrationTest.MATCHES;
41+
import static org.eclipse.jnosql.communication.driver.IntegrationTest.NAMED;
42+
43+
@EnableAutoWeld
44+
@AddPackages(value = {Database.class, EntityConverter.class, DocumentTemplate.class})
45+
@AddPackages(Magazine.class)
46+
@AddPackages(Reflections.class)
47+
@AddPackages(Converters.class)
48+
@AddExtensions({ReflectionEntityMetadataExtension.class,
49+
DocumentExtension.class})
50+
@EnabledIfSystemProperty(named = NAMED, matches = MATCHES)
51+
class TemplateIntegrationTest {
52+
53+
static {
54+
DocumentDatabase database = DocumentDatabase.INSTANCE;
55+
System.setProperty(CouchDBConfigurations.PORT.get(), database.getPort().toString());
56+
System.setProperty(MappingConfigurations.DOCUMENT_DATABASE.get(), "library");
57+
System.setProperty(CouchDBConfigurations.USER.get(), database.getUser());
58+
System.setProperty(CouchDBConfigurations.PASSWORD.get(), database.getPassword());
59+
}
60+
61+
@Inject
62+
private DocumentTemplate template;
63+
64+
@Test
65+
void shouldFindById() {
66+
Magazine magazine = new Magazine(randomUUID().toString(), "Effective Java", 1);
67+
assertThat(template.insert(magazine))
68+
.isNotNull()
69+
.isEqualTo(magazine);
70+
71+
assertThat(template.find(Magazine.class, magazine.id()))
72+
.isNotNull().get().isEqualTo(magazine);
73+
}
74+
75+
@Test
76+
void shouldInsert() {
77+
Magazine magazine = new Magazine(randomUUID().toString(), "Effective Java", 1);
78+
template.insert(magazine);
79+
Optional<Magazine> optional = template.find(Magazine.class, magazine.id());
80+
assertThat(optional).isNotNull().isNotEmpty()
81+
.get().isEqualTo(magazine);
82+
}
83+
84+
@Test
85+
void shouldUpdate() {
86+
Magazine magazine = new Magazine(randomUUID().toString(), "Effective Java", 1);
87+
assertThat(template.insert(magazine))
88+
.isNotNull()
89+
.isEqualTo(magazine);
90+
91+
Magazine updated = new Magazine(magazine.id(), magazine.title() + " updated", 2);
92+
93+
assertThat(template.update(updated))
94+
.isNotNull()
95+
.isNotEqualTo(magazine);
96+
97+
assertThat(template.find(Magazine.class, magazine.id()))
98+
.isNotNull().get().isEqualTo(updated);
99+
100+
}
101+
102+
@Test
103+
void shouldDeleteById() {
104+
Magazine magazine = new Magazine(randomUUID().toString(), "Effective Java", 1);
105+
assertThat(template.insert(magazine))
106+
.isNotNull()
107+
.isEqualTo(magazine);
108+
109+
template.delete(Magazine.class, magazine.id());
110+
assertThat(template.find(Magazine.class, magazine.id()))
111+
.isNotNull().isEmpty();
112+
}
113+
114+
@Test
115+
void shouldDeleteAll(){
116+
for (int index = 0; index < 20; index++) {
117+
Magazine magazine = new Magazine(randomUUID().toString(), "Effective Java", index);
118+
assertThat(template.insert(magazine))
119+
.isNotNull()
120+
.isEqualTo(magazine);
121+
}
122+
123+
template.delete(Magazine.class).execute();
124+
var magazines = template.select(Magazine.class).result();
125+
assertThat(magazines).isNotNull().isEmpty();
126+
}
127+
128+
}

0 commit comments

Comments
 (0)