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 .packages
build/ build/
.dart_tool/ .dart_tool/
/.flutter-plugins .flutter-plugins
/.flutter-plugins-dependencies .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 { class Membership {
late int membershipId; late int membershipId;
late String name; late String name;
String? description; String? description;
late int duration; late int duration;
late String durationType; late DurationType durationType;
late String durationUnit; late DurationUnit durationUnit;
int? trainingPlanId; int? trainingPlanId;
String? trainingPlanDayIds; String? trainingPlanDayIds;
Membership();
Membership.fromJson(Map json) { Membership.fromJson(Map json) {
membershipId = json['membershipId']; membershipId = json['membershipId'];
name = json['name']; name = json['name'];
description = json['description'] ?? ""; description = json['description'] ?? "";
duration = json['duration']; duration = json['duration'];
durationUnit = json['durationUnit']; durationType = DurationType.free.getType(json['durationType']);
durationType = json['durationType']; durationUnit = DurationUnit.day.getType(json['durationUnit']);
trainingPlanId = json['trainingPlanId'] ?? 0; trainingPlanId = json['trainingPlanId'] ?? 0;
trainingPlanDayIds = json['trainingPlanDayIds'] ?? ""; trainingPlanDayIds = json['trainingPlanDayIds'] ?? "";
} }
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
"membershipId": membershipId, "membershipId": membershipId,
"name": name, "name": name,
"description": description, "description": description,
"duration": duration, "duration": duration,
"durationUnit": durationUnit, 'durationType': durationType.enumToString(),
"durationType": durationType, 'durationUnit': durationUnit.enumToString(),
"trainingPlanId": trainingPlanId, "trainingPlanId": trainingPlanId,
"trainingPlanDayIds": trainingPlanDayIds, "trainingPlanDayIds": trainingPlanDayIds,
}; };

View File

@ -1,6 +1,6 @@
name: workouttest_util name: workouttest_util
description: Workout Test app and web functions. description: Workout Test app and web functions.
version: 1.0.26 version: 1.0.27
environment: environment:
sdk: ">=2.18.6 <3.0.0" 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);
});
});
}