In-Memory Fake Adapters for MySQL, Redis, MongoDB & Repository Layer
Version: 1.0.4
Project: maatify/data-fakes
Maintained by: Maatify.dev
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.
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.
- Fully in-memory storage layer
- Auto-increment & mixed ID handling
- Snapshot export/import (Phase 6)
- Deterministic state across tests
- SQL-like filtering (where/in/like/order/limit)
- Mongo-like operators (
$in,$gt,$lte,$ne, …) - Redis-like operations (list, hash, strings, counters, TTL)
- FakeRepository
- FakeCollection
- ArrayHydrator
- Nested transactions
- Snapshot-based rollback
- Transactional wrapper
- Fully deterministic
- JSON / array fixtures loader
- SQL + Mongo + Redis hydration
- FakeEnvironment with auto-reset
Adds deterministic CI-safe fault injection:
- Failure scenarios per operation
- Probability-based injection
- Deterministic exception throwing
- Per-operation latency
- Default latency
- Optional jitter
- Perfect for CI reproducibility
Hooks used inside adapters:
guardOperation()- Latency simulation
- Failure simulation
composer require maatify/data-fakes --dev✔ Recommended for testing ✘ Not for production
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']);$storage->reset();All examples are available in: → docs/examples.md
- FakeMySQLAdapter
- FakeMySQLDbalAdapter
- FakeRedisAdapter
- FakeMongoAdapter
- FakeRepository
- FakeCollection
- ArrayHydrator
- FakeResolver
- FakeUnitOfWork
- SnapshotManager
- SnapshotState
- FakeFixturesLoader
- JsonFixtureParser
- FakeEnvironment
- ResetState
- ErrorSimulator
- LatencySimulator
- FailureScenario
- SimulationAwareTrait
-
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
👉 README.full.md
Includes:
- Architecture
- Class reference
- API maps
- Fixtures & environments
- Snapshot behaviors
- Phase 1 → Phase 8 technical breakdown
MIT license © Maatify.dev
Free to use, modify, and distribute with attribution.
© 2025 Maatify.dev
Engineered by Mohamed Abdulalim (@megyptm)
https://www.maatify.dev
📘 Full documentation & source code:
https://github.com/Maatify/data-fakes
Special thanks to the Maatify.dev engineering team and open-source contributors.
Built with ❤️ by Maatify.dev — Unified Ecosystem for Modern PHP Libraries