json_schema_matcher 1.0.3
json_schema_matcher: ^1.0.3 copied to clipboard
A Dart library for JSON schema validation using native testing framework matchers with strongly-typed validators and detailed error messages.
example/json_schema_matcher_example.dart
import 'package:json_schema_matcher/json_schema_matcher.dart';
import 'package:test/test.dart';
void main() {
test('user validation', () {
final userData = {
'id': 1,
'name': 'João Silva',
'email': 'joao@email.com',
'age': 30,
};
expect(
userData,
isJsonObject({
'id': isA<int>(),
'name': isA<String>(),
'email': isA<String>(),
'age': isA<int>(),
}),
);
});
test('user with optional fields', () {
final userData = {
'id': 1,
'name': 'Maria Santos',
'email': 'maria@email.com',
};
expect(
userData,
isJsonObject({
'id': isA<int>(),
'name': isA<String>(),
'email': isA<String>(),
'phone': isA<String?>(), // optional field
}),
);
});
test('array of users', () {
final users = [
{'id': 1, 'name': 'Alice'},
{'id': 2, 'name': 'Bob'},
];
expect(
users,
isJsonArray({
'id': isA<int>(),
'name': isA<String>(),
}),
);
});
test('array of strings', () {
expect(
['dart', 'json', 'validation'],
isJsonArrayOf(isA<String>()),
);
});
test('nested object', () {
final data = {
'user': {
'id': 1,
'name': 'Pedro',
'profile': {
'firstName': 'Pedro',
// 'lastName': 'Costa',
},
},
};
expect(
data,
isJsonObject({
'user': isJsonObject({
'id': isA<int>(),
'name': isA<String>(),
'profile': isJsonObject({
'firstName': isA<String>(),
'lastName': isA<String>(),
}),
}),
}),
);
});
}