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,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>dev.shopforge</groupId><artifactId>shopforge</artifactId><version>0.1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>shopforge-domain</artifactId>
|
||||
<name>ShopForge :: domain</name>
|
||||
|
||||
<!-- 🔴 YAHAN JAANBUJHKAR KUCH NAHI HAI.
|
||||
Ek bhi Spring dependency nahi. Ye khaalipan is module ka poora matlab hai. -->
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -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