Skip to content

Advanced Mock Data Generator to create realistic data for testing and development for Dart & Flutter Development

License

Notifications You must be signed in to change notification settings

mathtechstudio/darturbation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Darturbation

Advanced mock data generator for Dart and Flutter applications with context-aware generation, behavioral patterns, and Indonesian localization.

Dart CI Version Platforms

Features

  • Context-aware data generation with logical field relationships
  • Indonesian-first approach with authentic local data
  • Behavioral pattern simulation for realistic user archetypes
  • Advanced data structures (time series, hierarchical, graph)
  • Flutter-specific utilities for UI testing
  • API response mocking (REST, GraphQL, WebSocket)
  • Multiple export formats (JSON, CSV, SQL)
  • Memory-efficient streaming for large datasets

Installation

dependencies:
  darturbation: ^2.0.2
dart pub get

Quick Start

import 'package:darturbation/darturbation.dart';

void main() {
  // Generate single entities
  final user = Darturbation.user();
  final product = Darturbation.product();
  
  // Generate bulk data
  final users = Darturbation.users(count: 100);
  final products = Darturbation.products(count: 50);
  
  // Generate related data
  final order = Darturbation.order(
    user: user,
    withProducts: [product]
  );
  
  // Custom schema generation
  final customData = Darturbation.fromSchema(
    schema: {
      'firstName': String,
      'age': int,
      'salary': double,
      'isActive': bool,
      'joinDate': DateTime,
    },
    count: 100,
  );
}

Core Capabilities

Data Generation

Generate realistic mock data with maintained relationships:

// E-commerce scenario
final scenario = Darturbation.scenario('ecommerce')
  .users(100)
  .products(200)
  .orders()
  .reviews()
  .generate();

// Access generated data
final users = scenario['users'] as List<User>;
final products = scenario['products'] as List<Product>;
final orders = scenario['orders'] as List<Order>;

Advanced Data Structures

// Time series with trends and seasonality
final salesData = Darturbation.timeSeries(
  startDate: DateTime(2023, 1, 1),
  endDate: DateTime(2023, 12, 31),
  interval: Duration(days: 1),
  baseValue: 1000.0,
  trend: 0.1,
  seasonality: 0.3,
  noise: 0.1,
);

// Hierarchical structures
final orgChart = Darturbation.hierarchical(
  schema: {'name': String, 'title': String},
  maxDepth: 4,
  totalNodes: 100,
);

// Graph data
final socialNetwork = Darturbation.graph(
  nodeCount: 100,
  nodeSchema: {'name': String, 'age': int},
  connectionProbability: 0.15,
);

// Correlated datasets
final metrics = Darturbation.correlatedSeries(
  seriesNames: ['marketing', 'traffic', 'sales'],
  correlationMatrix: [
    [1.0, 0.8, 0.6],
    [0.8, 1.0, 0.7],
    [0.6, 0.7, 1.0],
  ],
  count: 365,
);

Flutter Integration

// ListView data
final listData = Darturbation.listView(
  itemCount: 50,
  itemType: 'user_profile',
);

// Card widgets
final cards = Darturbation.cards(
  cardCount: 20,
  cardType: 'product',
);

// Form generation
final form = Darturbation.form(
  formType: 'registration',
  includeValidation: true,
);

// Navigation mock
final navigation = Darturbation.navigation(
  routeCount: 15,
  includeHistory: true,
);

// Theme data
final theme = Darturbation.theme(
  themeName: 'dark',
  isDark: true,
);

API Testing

// REST API response
final response = Darturbation.apiResponse(
  endpoint: '/api/users',
  method: 'GET',
  itemCount: 20,
  statusCode: 200,
);

// GraphQL response
final gqlResponse = Darturbation.graphqlResponse(
  query: 'query GetUsers { users { id name } }',
  dataSchema: {'users': List},
  itemCount: 10,
);

// WebSocket message
final wsMessage = Darturbation.websocketMessage(
  type: 'chat_message',
  dataSchema: {'userId': String, 'message': String},
);

// Error response
final error = Darturbation.errorResponse(
  statusCode: 404,
  message: 'Resource not found',
);

Data Export

final users = Darturbation.users(count: 100);

// Export to JSON
final jsonData = Darturbation.export(users, to: 'json');

// Export to CSV
final csvData = Darturbation.export(users, to: 'csv');

// Export to SQL
final sqlData = Darturbation.export(
  users,
  to: 'sql',
  tableName: 'app_users',
);

Streaming for Large Datasets

// Memory-efficient generation
final userStream = Darturbation.streamUsers(count: 10000);

await for (final user in userStream) {
  await processUser(user);
}

Indonesian Localization

Darturbation provides authentic Indonesian data:

  • Realistic Indonesian names (Budi Santoso, Siti Rahayu)
  • Complete addresses with RT/RW, cities, and provinces
  • Properly formatted phone numbers (0812-xxxx-xxxx)
  • Local brands and product categories
  • Indonesian payment methods (GoPay, OVO, DANA)
  • Cultural patterns and behavioral data

Context-Aware Generation

Data maintains logical relationships:

  • Email addresses match user names
  • Cities match provinces
  • Order dates align with user registration
  • Product brands match categories
  • Review timing follows purchase patterns

API Reference

Core Methods

// Single entity
User user()
Product product()
Order order({required User user, required List<Product> withProducts})

// Bulk generation
List<User> users({int count = 10})
List<Product> products({int count = 10})
List<Order> orders({int count, required List<User> fromUsers, required List<Product> withProducts})

// Streaming
Stream<User> streamUsers({int count = 10})
Stream<Product> streamProducts({int count = 10})
Stream<Order> streamOrders({required List<User> users, required List<Product> products, int count = 10})

// Schema-based
List<Map<String, dynamic>> fromSchema({required Map<String, Type> schema, int count = 10})

// Advanced
List<Map<String, dynamic>> timeSeries({required DateTime startDate, required DateTime endDate, ...})
List<Map<String, dynamic>> hierarchical({required Map<String, Type> schema, int maxDepth = 3, ...})
Map<String, dynamic> graph({int nodeCount = 50, ...})
Map<String, List<double>> correlatedSeries({required List<String> seriesNames, ...})
List<Map<String, dynamic>> withAnomalies({required Map<String, Type> schema, double anomalyRate = 0.1, ...})

Flutter Methods

List<Map<String, dynamic>> listView({int itemCount = 20, String itemType = 'generic'})
List<Map<String, dynamic>> cards({int cardCount = 10, String cardType = 'generic'})
Map<String, dynamic> form({String formType = 'generic', bool includeValidation = true})
Map<String, dynamic> navigation({int routeCount = 10, bool includeHistory = true})
Map<String, dynamic> theme({String themeName = 'default', bool isDark = false})

API Testing Methods

Map<String, dynamic> apiResponse({required String endpoint, String method = 'GET', ...})
Map<String, dynamic> graphqlResponse({required String query, ...})
Map<String, dynamic> websocketMessage({required String type, ...})
Map<String, dynamic> errorResponse({int statusCode = 500, String? message})

Utility Methods

int randomInt(int min, int max)
double randomDouble(double min, double max)
T randomChoice<T>(List<T> items)
bool randomBool([double probability = 0.5])
String generateId()
String export<T>(List<T> data, {required String to, String tableName = 'data'})
EcommerceScenario scenario(String type)

Testing Example

import 'package:flutter_test/flutter_test.dart';
import 'package:darturbation/darturbation.dart';

void main() {
  test('User service processes data correctly', () {
    final testUsers = Darturbation.users(count: 10);
    final userService = UserService();
    final result = userService.processUsers(testUsers);
    
    expect(result.length, equals(10));
    expect(result.every((user) => user.isValid), isTrue);
  });
}

Use Cases

  • UI testing with realistic mock data
  • API endpoint testing and mocking
  • Database seeding and testing
  • Performance testing with large datasets
  • Algorithm testing with correlated data
  • Anomaly detection testing
  • Form validation testing
  • Navigation flow testing

Documentation

Contributing

Contributions are welcome! Please see our Contributing Guide for details on bug reports, feature requests, code contributions, and documentation improvements.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Star on GitHub | View on pub.dev | Report Issues

About

Advanced Mock Data Generator to create realistic data for testing and development for Dart & Flutter Development

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages