v1.27 membership improvement
This commit is contained in:
parent
652104b403
commit
16603f00bd
4
.gitignore
vendored
4
.gitignore
vendored
@ -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
|
@ -1,36 +1,51 @@
|
|||||||
|
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,
|
||||||
};
|
};
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => toJson().toString();
|
String toString() => toJson().toString();
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
|
50
test/model/membership_test.dart
Normal file
50
test/model/membership_test.dart
Normal 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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user