P02: Maven multi-module skeleton — domain, application, adapter-persistence, adapter-web, bootstrap
build / build (push) Failing after 18s
build / build (push) Failing after 18s
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package dev.shopforge.domain;
|
||||
|
||||
/** Ek shop. Sirf Java — koi annotation, koi framework nahi. */
|
||||
public record Shop(TenantId id, String naam, String subdomain, boolean active) {
|
||||
|
||||
public Shop activate() { return new Shop(id, naam, subdomain, true); }
|
||||
public Shop deactivate() { return new Shop(id, naam, subdomain, false); }
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.shopforge.domain;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* PORT — domain batata hai ki use kya chahiye, na ki wo kahan se aayega.
|
||||
* Iska implementation adapter-persistence me hai. Teer domain ki taraf aata hai, jaata nahi.
|
||||
*/
|
||||
public interface ShopRepository {
|
||||
Optional<Shop> bySubdomain(String subdomain);
|
||||
Shop save(Shop shop);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package dev.shopforge.domain;
|
||||
|
||||
/** Ek shop ki pehchaan. Value object — bani to badal nahi sakti. */
|
||||
public record TenantId(String value) {
|
||||
public TenantId {
|
||||
if (value == null || value.isBlank())
|
||||
throw new IllegalArgumentException("TenantId khaali nahi ho sakta");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.shopforge.domain;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class ShopTest {
|
||||
|
||||
@Test
|
||||
void khaali_tenantId_bante_hi_mana_hai() {
|
||||
assertThrows(IllegalArgumentException.class, () -> new TenantId(" "));
|
||||
}
|
||||
|
||||
@Test
|
||||
void activate_naya_object_deta_hai_purana_nahi_badalta() {
|
||||
Shop band = new Shop(new TenantId("t1"), "Chai Point", "chaipoint", false);
|
||||
Shop chalu = band.activate();
|
||||
assertFalse(band.active());
|
||||
assertTrue(chalu.active());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user