Skip to content

refactor: organize tests, add mock infra, update env example#74

Merged
respp merged 1 commit intomainfrom
fix/backend
Jun 13, 2025
Merged

refactor: organize tests, add mock infra, update env example#74
respp merged 1 commit intomainfrom
fix/backend

Conversation

@respp
Copy link
Contributor

@respp respp commented Jun 13, 2025

StellarRent Logo

Pull Request | StellarRent

📝 Summary

Provide a brief description of what this PR accomplishes.

🔗 Related Issues

Closes #(issue number) (Replace with the actual issue number).

🔄 Changes Made

Provide a general description of the changes. Include any relevant background information or context to help reviewers understand the purpose of this PR.

🖼️ Current Output

Provide visual evidence of the changes:

  • For small changes: Screenshots.
  • For large changes: Video or Loom link.

🧪 Testing

If applicable, describe the tests performed. Include screenshots, test outputs, or any resources that help reviewers understand how the changes were tested.

✅ Testing Checklist

  • Unit tests added/modified
  • Integration tests performed
  • Manual tests executed
  • All tests pass in CI/CD

⚠️ Potential Risks

List any possible issues that might arise with this change.

🚀 Next Steps & Improvements

This change lays a solid foundation for further optimizations. Some areas that could benefit from future improvements include:

  • 🔹 Performance optimization
  • 🔹 Increased test coverage
  • 🔹 Potential user experience enhancements

💬 Comments

Any additional context, questions, or considerations for reviewers.

Summary by CodeRabbit

  • New Features

    • Added support for mock mode in blockchain booking availability checks, configurable via an environment variable.
    • Introduced a sample environment configuration file for backend setup, including blockchain and third-party service variables.
    • Added new Bash scripts for automated API, profile, and Docker integration testing.
    • Expanded documentation with instructions for using mock mode in development.
  • Bug Fixes

    • Improved robustness of booking availability checks and error handling in blockchain interactions.
  • Chores

    • Updated .gitignore to exclude additional development tool files.
    • Modularized and expanded backend test scripts for clearer separation of test types.
  • Tests

    • Added comprehensive integration and end-to-end tests for booking and profile API endpoints.
    • Introduced validation scripts for Docker and environment configuration.
  • Documentation

    • Updated usage instructions to reflect new environment variable options and setup details.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 13, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces environment configuration for mock and blockchain modes, a mock booking contract for testing, and comprehensive test scripts for API and Docker. The booking contract now conditionally uses a mock based on an environment variable. Documentation and ignore files are updated, and new integration and validation tests are added for backend robustness.

Changes

File(s) Change Summary
.gitignore Added entries to ignore .cursor, .clinerules, and .roo files.
USAGE.md Added USE_MOCK=true to environment variable setup in documentation.
apps/backend/.env.example New example environment file with variables for backend, Supabase, blockchain, and mock mode.
apps/backend/package.json Modularized and expanded test scripts for unit, integration, API, and Docker testing.
apps/backend/src/mocks/bookingContract.ts New mock booking contract module with availability check and helper functions for testing.
apps/backend/src/blockchain/bookingContract.ts Booking contract now supports mock mode via USE_MOCK; improved simulation result handling; re-exports mock helpers.
apps/backend/src/blockchain/types.ts Added exported MockBooking interface for mock booking data structure.
apps/backend/tests/api/endpoints.test.sh New Bash script for comprehensive API endpoint testing, including authenticated and unauthenticated cases.
apps/backend/tests/api/profile.test.sh New Bash script for end-to-end CRUD testing of the profile API, including registration, login, update, and deletion.
apps/backend/tests/api/simple.test.sh New shell script for basic health and root endpoint checks.
apps/backend/tests/docker/integration.test.sh New Bash script for Docker integration testing, including build, environment, and container health checks.
apps/backend/tests/docker/validate.test.sh New Bash script to validate Docker configuration files and best practices without requiring Docker installation.
apps/backend/tests/integration/booking.test.ts New integration test suite for booking endpoint, covering error and success scenarios with authentication and authorization.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant API
    participant BookingContract
    participant MockBookingContract

    Client->>API: Request booking availability (propertyId, from, to)
    API->>API: Check USE_MOCK env variable
    alt USE_MOCK=true
        API->>MockBookingContract: checkBookingAvailability(propertyId, from, to)
        MockBookingContract-->>API: availability (boolean)
    else USE_MOCK=false
        API->>BookingContract: checkBookingAvailability(propertyId, from, to)
        BookingContract->>Blockchain: Simulate contract call
        Blockchain-->>BookingContract: Result (boolean)
        BookingContract-->>API: availability (boolean)
    end
    API-->>Client: Return availability (boolean)
Loading

Possibly related PRs

  • Stellar-Rent/stellar-rent#58: Introduces the BookingContract ABI and smart contract implementation, which is directly interacted with by the mock and blockchain logic in this PR.

Poem

In the warren of code, a mock takes its place,
With configs and scripts, we quicken the pace.
Docker and endpoints, all tested with care,
A rabbit’s delight—robustness everywhere!
Now bookings are checked, both real and pretend,
🐇 Here’s to smooth launches, from start to the end!


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 19bcf5f and 846990f.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (13)
  • .gitignore (1 hunks)
  • USAGE.md (1 hunks)
  • apps/backend/.env.example (1 hunks)
  • apps/backend/package.json (1 hunks)
  • apps/backend/src/__mocks__/bookingContract.ts (1 hunks)
  • apps/backend/src/blockchain/bookingContract.ts (3 hunks)
  • apps/backend/src/blockchain/types.ts (1 hunks)
  • apps/backend/tests/api/endpoints.test.sh (1 hunks)
  • apps/backend/tests/api/profile.test.sh (1 hunks)
  • apps/backend/tests/api/simple.test.sh (1 hunks)
  • apps/backend/tests/docker/integration.test.sh (1 hunks)
  • apps/backend/tests/docker/validate.test.sh (1 hunks)
  • apps/backend/tests/integration/booking.test.ts (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@respp respp merged commit 1ce60f3 into main Jun 13, 2025
1 of 5 checks passed
This was referenced Jun 20, 2025
@coderabbitai coderabbitai bot mentioned this pull request Aug 30, 2025
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant