Skip to content

Commit

Permalink
Merge pull request #238 from KoheiKanagu/with-name
Browse files Browse the repository at this point in the history
feat(talker_riverpod_logger): Include the name of the Provider in the output
  • Loading branch information
Frezyx authored May 24, 2024
2 parents bcf201c + 5b67a03 commit 3ef9983
Show file tree
Hide file tree
Showing 3 changed files with 160 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,17 @@ import 'models.dart';
/// Creates a [Repository].
///
/// This will correctly wait until the configurations are available.
final repositoryProvider = FutureProvider<Repository>((ref) async {
final repository = Repository();
// Releases the resources when the provider is destroyed.
// This will stop pending HTTP requests.
ref.onDispose(repository.dispose);

return repository;
});
final repositoryProvider = FutureProvider<Repository>(
(ref) async {
final repository = Repository();
// Releases the resources when the provider is destroyed.
// This will stop pending HTTP requests.
ref.onDispose(repository.dispose);

return repository;
},
name: 'repositoryProvider',
);

Future<void> main() async {
// Where the state of our providers will be stored.
Expand Down
39 changes: 35 additions & 4 deletions packages/talker_riverpod_logger/lib/riverpod_logs.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,29 @@ import 'package:riverpod/riverpod.dart';
import 'package:talker/talker.dart';
import 'package:talker_riverpod_logger/talker_riverpod_logger.dart';

String _defaultMessage({
required ProviderBase<Object?> provider,
required String suffix,
}) {
if (provider.name == null) {
return '${provider.runtimeType} $suffix';
}

return '${provider.name} | ${provider.runtimeType} $suffix';
}

/// [Riverpod] add provider log model
class RiverpodAddLog extends TalkerLog {
RiverpodAddLog({
required this.provider,
required this.value,
required this.settings,
}) : super('${provider.runtimeType} initialized');
}) : super(
_defaultMessage(
provider: provider,
suffix: 'initialized',
),
);

final ProviderBase<Object?> provider;
final Object? value;
Expand Down Expand Up @@ -39,7 +55,12 @@ class RiverpodUpdateLog extends TalkerLog {
required this.previousValue,
required this.newValue,
required this.settings,
}) : super('${provider.runtimeType} updated');
}) : super(
_defaultMessage(
provider: provider,
suffix: 'updated',
),
);

final ProviderBase<Object?> provider;
final Object? previousValue;
Expand Down Expand Up @@ -71,7 +92,12 @@ class RiverpodDisposeLog extends TalkerLog {
RiverpodDisposeLog({
required this.provider,
required this.settings,
}) : super('${provider.runtimeType} disposed');
}) : super(
_defaultMessage(
provider: provider,
suffix: 'disposed',
),
);

final ProviderBase<Object?> provider;
final TalkerRiverpodLoggerSettings settings;
Expand Down Expand Up @@ -99,7 +125,12 @@ class RiverpodFailLog extends TalkerLog {
required this.providerError,
required this.providerStackTrace,
required this.settings,
}) : super('${provider.runtimeType} failed');
}) : super(
_defaultMessage(
provider: provider,
suffix: 'failed',
),
);

final ProviderBase<Object?> provider;
final Object providerError;
Expand Down
114 changes: 114 additions & 0 deletions packages/talker_riverpod_logger/test/logs_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,34 @@ void main() {
});
});

group('RiverpodAddLog with name', () {
test('Constructor should set values correctly', () {
final fakeProvider = StateProvider(
(ref) => 0,
name: 'fakeProvider',
);
final fakeValue = Object();
final fakeSettings = TalkerRiverpodLoggerSettings();

final log = RiverpodAddLog(
provider: fakeProvider,
value: fakeValue,
settings: fakeSettings,
);

expect(log.provider, fakeProvider);
expect(log.value, fakeValue);
expect(log.settings, fakeSettings);
expect(log.key, TalkerLogType.riverpodAdd.key);

final message = log.generateTextMessage();
expect(message, isA<String>());
expect(message, isNotEmpty);
expect(message, contains('initialized'));
expect(message, contains('fakeProvider'));
});
});

group('RiverpodUpdateLog', () {
test('Constructor should set values correctly', () {
final fakeProvider = StateProvider((ref) => 0);
Expand Down Expand Up @@ -55,6 +83,37 @@ void main() {
});
});

group('RiverpodUpdateLog with name', () {
test('Constructor should set values correctly', () {
final fakeProvider = StateProvider(
(ref) => 0,
name: 'fakeProvider',
);
final fakePreviousValue = Object();
final fakeNewValue = Object();
final fakeSettings = TalkerRiverpodLoggerSettings();

final log = RiverpodUpdateLog(
provider: fakeProvider,
previousValue: fakePreviousValue,
newValue: fakeNewValue,
settings: fakeSettings,
);

expect(log.provider, fakeProvider);
expect(log.previousValue, fakePreviousValue);
expect(log.newValue, fakeNewValue);
expect(log.settings, fakeSettings);
expect(log.key, TalkerLogType.riverpodUpdate.key);

final message = log.generateTextMessage();
expect(message, isA<String>());
expect(message, isNotEmpty);
expect(message, contains('updated'));
expect(message, contains('fakeProvider'));
});
});

group('RiverpodDisposeLog', () {
test('Constructor should set values correctly', () {
final fakeProvider = StateProvider((ref) => 0);
Expand All @@ -76,6 +135,31 @@ void main() {
});
});

group('RiverpodDisposeLog with name', () {
test('Constructor should set values correctly', () {
final fakeProvider = StateProvider(
(ref) => 0,
name: 'fakeProvider',
);
final fakeSettings = TalkerRiverpodLoggerSettings();

final log = RiverpodDisposeLog(
provider: fakeProvider,
settings: fakeSettings,
);

expect(log.provider, fakeProvider);
expect(log.settings, fakeSettings);
expect(log.key, TalkerLogType.riverpodDispose.key);

final message = log.generateTextMessage();
expect(message, isA<String>());
expect(message, isNotEmpty);
expect(message, contains('disposed'));
expect(message, contains('fakeProvider'));
});
});

group('RiverpodFailLog', () {
test('Constructor should set values correctly', () {
final fakeProvider = StateProvider((ref) => 0);
Expand All @@ -101,4 +185,34 @@ void main() {
expect(message, contains('failed'));
});
});

group('RiverpodFailLog with name', () {
test('Constructor should set values correctly', () {
final fakeProvider = StateProvider(
(ref) => 0,
name: 'fakeProvider',
);
final fakeError = Object();
final fakeStackTrace = StackTrace.empty;
final fakeSettings = TalkerRiverpodLoggerSettings();

final log = RiverpodFailLog(
provider: fakeProvider,
providerError: fakeError,
providerStackTrace: fakeStackTrace,
settings: fakeSettings,
);

expect(log.provider, fakeProvider);
expect(log.providerError, fakeError);
expect(log.providerStackTrace, fakeStackTrace);
expect(log.key, TalkerLogType.riverpodFail.key);

final message = log.generateTextMessage();
expect(message, isA<String>());
expect(message, isNotEmpty);
expect(message, contains('failed'));
expect(message, contains('fakeProvider'));
});
});
}

0 comments on commit 3ef9983

Please sign in to comment.