Skip to content

Uc001 Java

# specs/domain/features/UC001-java.feature
#
# SINGLE SOURCE OF TRUTH for Java repository initialization behaviour.
# This file is:
#   (1) referenced by specs/domain/use_cases/UC001-init_repo.md  (documentation)
#   (2) executed by the acceptance test suite                     (living documentation)
#
# Rules:
#   - Scenario IDs (e.g. UC001-JAVA-S01) must match the use case document.
#   - Step definitions live in: internal/acceptance/
#   - Keep scenarios focused: one behaviour per scenario.
#   - Use exact terms from specs/domain/glossary.md.
#
# Note: Module Path determines the Java package directory structure.
#   gitlab.com/test/java-library → src/.../com/gitlab/test/javalibrary/

Feature: Initialize a Java Repository
    As a software engineer
    I want to initialize an empty Git repository with scaffolding files
    So that I can immediately start developing a Java project.

    # ---------------------------------------------------------------------------
    # Java Library
    # ---------------------------------------------------------------------------

    Scenario: UC001-JAVA-S01 Successful initialization of a Java library repository (GitLab)
        Given current directory is an empty Git repository
        When  the user initializes this repository with the following settings:
            | Parameter           | Value                        |
            | Project Name        | My Java Library              |
            | Project Description | My Java Library.             |
            | Artifact Name       | java-library                 |
            | Language            | java                         |
            | Artifact Type       | library                      |
            | CI Type             | gitlab                       |
            | Module Path         | gitlab.com/test/java-library |
        Then the repository contains exactly these essential files and directories:
            | .claude/settings.json                                              |
            | .claude/skills/adr/SKILL.md                                              |
            | .claude/skills/adr/adr-template.md                                       |
            | .claude/skills/arch-check/SKILL.md                                       |
            | .claude/skills/review/SKILL.md                                           |
            | .claude/skills/security-review/SKILL.md                                  |
            | .claude/skills/test-coverage/SKILL.md                                    |
            | .claude/skills/commit/SKILL.md                                           |
            | .claude/skills/update-versions/SKILL.md                                  |
            | .claude/commands/new-domain-object.md                                    |
            | .claude/rules/bash_coding.md                                             |
            | .claude/rules/ci_cd.md                                                   |
            | .claude/rules/data_modeling.md                                           |
            | .claude/rules/error_handling.md                                          |
            | .claude/rules/general_coding.md                                          |
            | .claude/rules/git.md                                                     |
            | .claude/rules/java_coding.md                                             |
            | .claude/rules/library_design.md                                          |
            | .claude/rules/oo_design_and_programming.md                               |
            | .claude/rules/performance.md                                             |
            | .claude/rules/refactoring.md                                             |
            | .claude/rules/security.md                                                |
            | .claude/rules/spec_consistency.md                                        |
            | .claude/rules/testing.md                                                 |
            | .claude/rules/tool_chain.md                                              |
            | avatar/avatar.afdesign                                                   |
            | specs/architecture/ADRs/ADR-000-template.md                                           |
            | specs/architecture/ADRs/ADR-001-structured_logging.md                                 |
            | specs/architecture/ADRs/ADR-002-hermetic-ci-build-images.md                           |
            | specs/architecture/ADRs/README.md                                                     |
            | specs/architecture/APIs/consumed/README.md                                            |
            | specs/architecture/APIs/provided/README.md                                            |
            | specs/architecture/system_context.md                                     |
            | specs/domain/business_rules.md                                     |
            | specs/domain/domain_model.md                                       |
            | specs/domain/features/UC001-sample_use_case.feature                             |
            | specs/domain/glossary.md                                                        |
            | specs/index.md                                                           |
            | specs/guidelines/bash_coding.md                                          |
            | specs/guidelines/ci_cd.md                                                |
            | specs/guidelines/data_modeling.md                                        |
            | specs/guidelines/error_handling.md                                       |
            | specs/guidelines/general_coding.md                                       |
            | specs/guidelines/git.md                                                  |
            | specs/guidelines/java_coding.md                                          |
            | specs/guidelines/library_design.md                                       |
            | specs/guidelines/oo_design_and_programming.md                            |
            | specs/guidelines/performance.md                                          |
            | specs/guidelines/refactoring.md                                          |
            | specs/guidelines/security.md                                             |
            | specs/guidelines/testing.md                                              |
            | specs/guidelines/tool_chain.md                                           |
            | specs/domain/use_cases/UC001-sample_use_case.md                                 |
            | scripts/jacoco_to_cobertura.py                                           |
            | src/main/java/com/gitlab/test/javalibrary/Greeter.java                   |
            | src/test/java/com/gitlab/test/javalibrary/GreeterTest.java               |
            | src/test/java/com/gitlab/test/javalibrary/ArchitectureTest.java          |
            | .gitignore                                                               |
            | .gitlab-ci.yml                                                           |
            | .prettierignore                                                          |
            | CHANGELOG.md                                                             |
            | CLAUDE.md                                                                |
            | checkstyle.xml                                                           |
            | cliff.toml                                                               |
            | devbox.json                                                              |
            | LICENSE                                                                  |
            | Makefile                                                                 |
            | Makefile.local                                                           |
            | mkdocs.yml                                                               |
            | pom.xml                                                                  |
            | README.md                                                                |
            | .repo.yaml                                                               |