make language nullable

This commit is contained in:
Salvatore Giordano
2021-07-28 11:20:07 +02:00
parent ba251e4d88
commit fe7a8a1ed0
7 changed files with 82 additions and 28 deletions
@@ -27,7 +27,7 @@ class OwnUser extends User {
Map<String, Object?> extraData = const {},
bool banned = false,
List<String> teams = const [],
String language = 'en',
String? language,
}) : super(
id: id,
role: role,
@@ -39,6 +39,6 @@ OwnUser _$OwnUserFromJson(Map<String, dynamic> json) {
teams:
(json['teams'] as List<dynamic>?)?.map((e) => e as String).toList() ??
[],
language: json['language'] as String? ?? 'en',
language: json['language'] as String,
);
}
@@ -18,7 +18,7 @@ class User extends Equatable {
this.extraData = const {},
this.banned = false,
this.teams = const [],
this.language = 'en',
this.language,
}) : createdAt = createdAt ?? DateTime.now(),
updatedAt = updatedAt ?? DateTime.now();
@@ -87,12 +87,8 @@ class User extends Equatable {
/// The language this user prefers.
///
/// Defaults to 'en'.
@JsonKey(
includeIfNull: false,
toJson: Serializer.readOnly,
defaultValue: 'en',
)
final String language;
@JsonKey(includeIfNull: false)
final String? language;
/// Shortcut for user name
String get name {
@@ -25,7 +25,7 @@ User _$UserFromJson(Map<String, dynamic> json) {
teams:
(json['teams'] as List<dynamic>?)?.map((e) => e as String).toList() ??
[],
language: json['language'] as String? ?? 'en',
language: json['language'] as String?,
);
}
@@ -48,6 +48,6 @@ Map<String, dynamic> _$UserToJson(User instance) {
writeNotNull('online', readonly(instance.online));
writeNotNull('banned', readonly(instance.banned));
val['extra_data'] = instance.extraData;
writeNotNull('language', readonly(instance.language));
writeNotNull('language', instance.language);
return val;
}
@@ -0,0 +1,58 @@
import 'dart:async';
import 'dart:typed_data';
import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:golden_toolkit/golden_toolkit.dart';
import 'package:golden_toolkit/src/testing_tools.dart';
import 'package:path/path.dart' as path;
const double _kGoldenDiffTolerance = 0.05;
/// Wrapper function for golden tests.
Future<void> customExpectGoldenMatches(
WidgetTester tester,
String name, {
bool? autoHeight,
Finder? finder,
CustomPump? customPump,
@Deprecated('''
This method level parameter will be removed in an upcoming release. This can be configured globally. If you have concerns, please file an issue with your use case.''') bool? skip,
}) {
final goldenPath = path.join('test/src/goldens');
print('goldenPath: $goldenPath');
goldenFileComparator = CustomGoldenFileComparator(Uri.parse(goldenPath));
return compareWithGolden(
tester,
name,
autoHeight: autoHeight,
finder: finder,
customPump: customPump,
skip: skip,
// This value is actually ignored. We are forced to pass it because the
// downstream API is structured poorly. This should be refactored.
device: Device.phone,
fileNameFactory: (String name, Device device) =>
GoldenToolkit.configuration.fileNameFactory(name),
);
}
class CustomGoldenFileComparator extends LocalFileComparator {
CustomGoldenFileComparator(Uri testFile) : super(testFile);
@override
Future<bool> compare(Uint8List imageBytes, Uri golden) async {
print('golden.toString(): ${golden.toString()}');
final result = await GoldenFileComparator.compareLists(
imageBytes,
await getGoldenBytes(golden),
);
if (!result.passed && result.diffPercent > _kGoldenDiffTolerance) {
final error = await generateFailureOutput(result, golden, basedir);
throw FlutterError(error);
}
return result.passed;
}
}
@@ -3105,7 +3105,7 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
final String? role;
/// The language this user prefers.
final String language;
final String? language;
/// Date of user creation
final DateTime createdAt;
@@ -3127,7 +3127,7 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
UserEntity(
{required this.id,
this.role,
required this.language,
this.language,
required this.createdAt,
required this.updatedAt,
this.lastActive,
@@ -3143,7 +3143,7 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
role: const StringType()
.mapFromDatabaseResponse(data['${effectivePrefix}role']),
language: const StringType()
.mapFromDatabaseResponse(data['${effectivePrefix}language'])!,
.mapFromDatabaseResponse(data['${effectivePrefix}language']),
createdAt: const DateTimeType()
.mapFromDatabaseResponse(data['${effectivePrefix}created_at'])!,
updatedAt: const DateTimeType()
@@ -3165,7 +3165,9 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
if (!nullToAbsent || role != null) {
map['role'] = Variable<String?>(role);
}
map['language'] = Variable<String>(language);
if (!nullToAbsent || language != null) {
map['language'] = Variable<String?>(language);
}
map['created_at'] = Variable<DateTime>(createdAt);
map['updated_at'] = Variable<DateTime>(updatedAt);
if (!nullToAbsent || lastActive != null) {
@@ -3186,7 +3188,7 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
return UserEntity(
id: serializer.fromJson<String>(json['id']),
role: serializer.fromJson<String?>(json['role']),
language: serializer.fromJson<String>(json['language']),
language: serializer.fromJson<String?>(json['language']),
createdAt: serializer.fromJson<DateTime>(json['createdAt']),
updatedAt: serializer.fromJson<DateTime>(json['updatedAt']),
lastActive: serializer.fromJson<DateTime?>(json['lastActive']),
@@ -3201,7 +3203,7 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
return <String, dynamic>{
'id': serializer.toJson<String>(id),
'role': serializer.toJson<String?>(role),
'language': serializer.toJson<String>(language),
'language': serializer.toJson<String?>(language),
'createdAt': serializer.toJson<DateTime>(createdAt),
'updatedAt': serializer.toJson<DateTime>(updatedAt),
'lastActive': serializer.toJson<DateTime?>(lastActive),
@@ -3214,7 +3216,7 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
UserEntity copyWith(
{String? id,
Value<String?> role = const Value.absent(),
String? language,
Value<String?> language = const Value.absent(),
DateTime? createdAt,
DateTime? updatedAt,
Value<DateTime?> lastActive = const Value.absent(),
@@ -3224,7 +3226,7 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
UserEntity(
id: id ?? this.id,
role: role.present ? role.value : this.role,
language: language ?? this.language,
language: language.present ? language.value : this.language,
createdAt: createdAt ?? this.createdAt,
updatedAt: updatedAt ?? this.updatedAt,
lastActive: lastActive.present ? lastActive.value : this.lastActive,
@@ -3283,7 +3285,7 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
class UsersCompanion extends UpdateCompanion<UserEntity> {
final Value<String> id;
final Value<String?> role;
final Value<String> language;
final Value<String?> language;
final Value<DateTime> createdAt;
final Value<DateTime> updatedAt;
final Value<DateTime?> lastActive;
@@ -3316,7 +3318,7 @@ class UsersCompanion extends UpdateCompanion<UserEntity> {
static Insertable<UserEntity> custom({
Expression<String>? id,
Expression<String?>? role,
Expression<String>? language,
Expression<String?>? language,
Expression<DateTime>? createdAt,
Expression<DateTime>? updatedAt,
Expression<DateTime?>? lastActive,
@@ -3340,7 +3342,7 @@ class UsersCompanion extends UpdateCompanion<UserEntity> {
UsersCompanion copyWith(
{Value<String>? id,
Value<String?>? role,
Value<String>? language,
Value<String?>? language,
Value<DateTime>? createdAt,
Value<DateTime>? updatedAt,
Value<DateTime?>? lastActive,
@@ -3370,7 +3372,7 @@ class UsersCompanion extends UpdateCompanion<UserEntity> {
map['role'] = Variable<String?>(role.value);
}
if (language.present) {
map['language'] = Variable<String>(language.value);
map['language'] = Variable<String?>(language.value);
}
if (createdAt.present) {
map['created_at'] = Variable<DateTime>(createdAt.value);
@@ -3426,10 +3428,8 @@ class $UsersTable extends Users with TableInfo<$UsersTable, UserEntity> {
typeName: 'TEXT', requiredDuringInsert: false);
final VerificationMeta _languageMeta = const VerificationMeta('language');
late final GeneratedColumn<String?> language = GeneratedColumn<String?>(
'language', aliasedName, false,
typeName: 'TEXT',
requiredDuringInsert: false,
defaultValue: const Constant('en'));
'language', aliasedName, true,
typeName: 'TEXT', requiredDuringInsert: false);
final VerificationMeta _createdAtMeta = const VerificationMeta('createdAt');
late final GeneratedColumn<DateTime?> createdAt = GeneratedColumn<DateTime?>(
'created_at', aliasedName, false,
@@ -12,7 +12,7 @@ class Users extends Table {
TextColumn get role => text().nullable()();
/// The language this user prefers.
TextColumn get language => text().withDefault(const Constant('en'))();
TextColumn get language => text().nullable()();
/// Date of user creation
DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)();