v1.27 membership improvement

This commit is contained in:
bossanyit 2023-05-07 10:47:00 +02:00
parent 652104b403
commit 16603f00bd
4 changed files with 84 additions and 19 deletions

4
.gitignore vendored
View File

@ -28,5 +28,5 @@ migrate_working_dir/
.packages
build/
.dart_tool/
/.flutter-plugins
/.flutter-plugins-dependencies
.flutter-plugins
.flutter-plugins-dependencies

View File

@ -1,32 +1,47 @@
enum DurationType { free, subscription, lifetime, limited }
extension DurationTypeExt on DurationType {
String enumToString() => toString().split(".").last;
DurationType getType(String type) => DurationType.values.firstWhere((e) => e.enumToString() == type);
}
enum DurationUnit { day, week, month, year }
extension DurationUnitExt on DurationUnit {
String enumToString() => toString().split(".").last;
DurationUnit getType(String type) => DurationUnit.values.firstWhere((e) => e.enumToString() == type);
}
class Membership {
late int membershipId;
late String name;
String? description;
late int duration;
late String durationType;
late String durationUnit;
late DurationType durationType;
late DurationUnit durationUnit;
int? trainingPlanId;
String? trainingPlanDayIds;
Membership();
Membership.fromJson(Map json) {
membershipId = json['membershipId'];
name = json['name'];
description = json['description'] ?? "";
duration = json['duration'];
durationUnit = json['durationUnit'];
durationType = json['durationType'];
durationType = DurationType.free.getType(json['durationType']);
durationUnit = DurationUnit.day.getType(json['durationUnit']);
trainingPlanId = json['trainingPlanId'] ?? 0;
trainingPlanDayIds = json['trainingPlanDayIds'] ?? "";
}
Map<String, dynamic> toJson() => {
Map<String, dynamic> toJson() => {
"membershipId": membershipId,
"name": name,
"description": description,
"duration": duration,
"durationUnit": durationUnit,
"durationType": durationType,
'durationType': durationType.enumToString(),
'durationUnit': durationUnit.enumToString(),
"trainingPlanId": trainingPlanId,
"trainingPlanDayIds": trainingPlanDayIds,
};

View File

@ -1,6 +1,6 @@
name: workouttest_util
description: Workout Test app and web functions.
version: 1.0.26
version: 1.0.27
environment:
sdk: ">=2.18.6 <3.0.0"

View File

@ -0,0 +1,50 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:workouttest_util/model/membership.dart';
void main() {
group('Membership', () {
test('fromJson() correctly sets properties', () {
final json = {
'membershipId': 1,
'name': 'Basic Membership',
'description': 'This is a basic membership',
'duration': 30,
'durationType': 'subscription',
'durationUnit': 'day',
'trainingPlanId': null,
'trainingPlanDayIds': null,
};
final membership = Membership.fromJson(json);
expect(membership.membershipId, 1);
expect(membership.name, 'Basic Membership');
expect(membership.description, 'This is a basic membership');
expect(membership.duration, 30);
expect(membership.durationType, DurationType.subscription);
expect(membership.durationUnit, DurationUnit.day);
expect(membership.trainingPlanId, 0);
expect(membership.trainingPlanDayIds, '');
});
test('toJson() correctly returns a Map', () {
final membership = Membership()
..membershipId = 1
..name = 'Basic Membership'
..description = 'This is a basic membership'
..duration = 30
..durationType = DurationType.subscription
..durationUnit = DurationUnit.day
..trainingPlanId = null
..trainingPlanDayIds = null;
final json = membership.toJson();
expect(json['membershipId'], 1);
expect(json['name'], 'Basic Membership');
expect(json['description'], 'This is a basic membership');
expect(json['duration'], 30);
expect(json['durationType'], 'subscription');
expect(json['durationUnit'], 'day');
expect(json['trainingPlanId'], null);
expect(json['trainingPlanDayIds'], null);
});
});
}