maatify / data-fakes
Complete fake simulation layer for MySQL, DBAL, Redis, and Mongo adapters.
Installs: 331
Dependents: 2
Suggesters: 1
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/maatify/data-fakes
Requires
- php: >=8.4
- maatify/common: ^1.0
- maatify/data-adapters: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
README
๐ Maatify Data Fakes
In-Memory Fake Adapters for MySQL, Redis, MongoDB & Repository Layer
Version: 1.0.4
Project: maatify/data-fakes
Maintained by: Maatify.dev
๐ Overview
maatify/data-fakes is a deterministic, lightweight in-memory data simulation engine fully compatible with all official Maatify Data Adapters.
It allows any repository or service to run and be tested without any real databases, providing:
- Fake MySQL Adapter
- Fake MySQL DBAL Adapter
- Fake Redis Adapter
- Fake MongoDB Adapter
- Fake Repository Layer
- Unit of Work + Snapshot Engine (Phase 6)
- Fixtures Loader + FakeEnvironment (Phase 7)
- Advanced Simulation Layer: Latency + Failure Injection (Phase 8)
- Fully deterministic test isolation
- Zero external services required โ perfect for CI
All Fake Adapters follow the exact same contracts used by real adapters across the Maatify ecosystem.
๐ Core Dependencies
The core of the library is built on:
-
AdapterInterface
Maatify\Common\Contracts\Adapter\AdapterInterface -
ResolverInterface
Maatify\DataAdapters\Contracts\ResolverInterface
Every Fake Adapter implements AdapterInterface and is routed through ResolverInterface to ensure 1:1 behavior with real adapters.
๐งฉ Features
๐๏ธ Storage Features
- Fully in-memory storage layer
- Auto-increment & mixed ID handling
- Snapshot export/import (Phase 6)
- Deterministic state across tests
๐ Query Features
- SQL-like filtering (where/in/like/order/limit)
- Mongo-like operators (
$in,$gt,$lte,$ne, โฆ) - Redis-like operations (list, hash, strings, counters, TTL)
๐งฑ Repository Layer
- FakeRepository
- FakeCollection
- ArrayHydrator
๐ Unit of Work (Phase 6)
- Nested transactions
- Snapshot-based rollback
- Transactional wrapper
- Fully deterministic
๐ฆ Fixtures & Environment (Phase 7)
- JSON / array fixtures loader
- SQL + Mongo + Redis hydration
- FakeEnvironment with auto-reset
โก Advanced Simulation Layer (Phase 8)
Adds deterministic CI-safe fault injection:
๐น ErrorSimulator
- Failure scenarios per operation
- Probability-based injection
- Deterministic exception throwing
๐น LatencySimulator
- Per-operation latency
- Default latency
- Optional jitter
- Perfect for CI reproducibility
๐น SimulationAwareTrait
Hooks used inside adapters:
guardOperation()- Latency simulation
- Failure simulation
๐ฆ Installation
composer require maatify/data-fakes --dev
โ Recommended for testing โ Not for production
๐งช Basic Usage
Using the Fake MySQL adapter
use Maatify\DataFakes\Adapters\MySQL\FakeMySQLAdapter; use Maatify\DataFakes\Storage\FakeStorageLayer; $storage = new FakeStorageLayer(); $mysql = new FakeMySQLAdapter($storage); $mysql->connect(); $mysql->insert('users', ['name' => 'Ada Lovelace']); $rows = $mysql->select('users', ['name' => 'Ada Lovelace']);
Reset Between Tests
$storage->reset();
๐ Usage Examples
All examples are available in: โ docs/examples.md
๐ Fake Components Included
๐๏ธ Fake Adapters
- FakeMySQLAdapter
- FakeMySQLDbalAdapter
- FakeRedisAdapter
- FakeMongoAdapter
๐งฉ Repository Layer (Phase 5)
- FakeRepository
- FakeCollection
- ArrayHydrator
๐ Routing
- FakeResolver
๐ Unit of Work & Snapshots (Phase 6)
- FakeUnitOfWork
- SnapshotManager
- SnapshotState
๐ฆ Fixtures & Environment (Phase 7)
- FakeFixturesLoader
- JsonFixtureParser
- FakeEnvironment
- ResetState
โก Simulation Layer (Phase 8)
- ErrorSimulator
- LatencySimulator
- FailureScenario
- SimulationAwareTrait
๐ Development Phases & Documentation Links
-
Phase 1 โ Project Bootstrap & Core Architecture
docs/phases/README.phase1.md -
Phase 2 โ Fake MySQL & DBAL Adapter
docs/phases/README.phase2.md -
Phase 3 โ Fake Redis Adapter
docs/phases/README.phase3.md -
Phase 4 โ Fake Mongo Adapter
docs/phases/README.phase4.md -
Phase 5 โ Repository Layer
docs/phases/README.phase5.md -
Phase 6 โ Snapshot Engine + Unit of Work
docs/phases/README.phase6.md -
Phase 7 โ Fixtures Loader + FakeEnvironment
docs/phases/README.phase7.md -
Phase 8 โ Advanced Simulation Layer (Latency + Failure Injection)
docs/phases/README.phase8.md
๐ Full Documentation
๐ README.full.md
Includes:
- Architecture
- Class reference
- API maps
- Fixtures & environments
- Snapshot behaviors
- Phase 1 โ Phase 8 technical breakdown
๐ชช License
MIT license ยฉ Maatify.dev
Free to use, modify, and distribute with attribution.
๐ค Author
ยฉ 2025 Maatify.dev
Engineered by Mohamed Abdulalim (@megyptm)
https://www.maatify.dev
๐ Full documentation & source code:
https://github.com/Maatify/data-fakes
๐ค Contributors
Special thanks to the Maatify.dev engineering team and open-source contributors.
Built with โค๏ธ by Maatify.dev โ Unified Ecosystem for Modern PHP Libraries