workouttest_util/test/customer_test.dart
2023-06-26 20:49:43 +02:00

143 lines
4.4 KiB
Dart

import 'dart:convert';
import 'package:intl/intl.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:workouttest_util/model/cache.dart';
import 'package:workouttest_util/model/customer.dart';
import 'package:workouttest_util/model/customer_property.dart';
import 'package:workouttest_util/model/property.dart';
import 'package:workouttest_util/repository/customer_repository.dart';
main() {
setUp(() async {
await dotenv.load(fileName: "assets/.env");
String propertyJson = '''
[
{
"propertyId": 1,
"propertyName": "Weight",
"propertyUnit": "kg",
"translations": [
{
"translationId": 11,
"languageCode": "hu",
"propertyName": "Tömeg"
}
]
},
{
"propertyId": 2,
"propertyName": "Height",
"propertyUnit": "cm",
"translations": [
{
"translationId": 12,
"languageCode": "hu",
"propertyName": "Magasság"
}
]
},
{
"propertyId": 3,
"propertyName": "Chest",
"propertyUnit": "cm",
"translations": [
{
"translationId": 13,
"languageCode": "hu",
"propertyName": "Mell"
}
]
}
]
''';
Iterable json = jsonDecode(propertyJson);
final List<Property> properties = json.map((property) => Property.fromJson(property)).toList();
Cache().setProperties(properties);
});
group('customer', () {
test('decode from json successful', () async {
String json = '''{
"name": "",
"firstname": "Andi",
"email": "mr@aitrainer.app",
"age": 0,
"sex": "m",
"active": "Y",
"dateAdd": "2023-02-25 11:19:30",
"dataPolicyAllowed": 1,
"password": "2a10O5HXhhb29LC8pNiv1uBIoOFRGOmDMtdeMJtVkfhzAjB/ejrO9D486",
"birthYear": 1974,
"goal": "health_keep",
"fitnessLevel": "intermediate",
"firebaseUid": "ih74dupj2ncyROAaeyK8oAXYOWk2",
"emailSubscription": 0,
"firebaseRegToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjE1YzJiNDBhYTJmMzIyNzk4NjY2YTZiMzMyYWFhMDNhNjc3MzAxOWIiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vZGlldDR5b3UtY2I1NDAiLCJhdWQiOiJkaWV0NHlvdS1jYjU0MCIsImF1dGhfdGltZSI6MTY3NzMyMDM3MSwidXNlcl9pZCI6ImloNzRkdXBqMm5jeVJPQWFleUs4b0FYWU9XazIiLCJzdWIiOiJpaDc0ZHVwajJuY3lST0FhZXlLOG9BWFlPV2syIiwiaWF0IjoxNjc3MzIwMzcxLCJleHAiOjE2NzczMjM5NzEsImVtYWlsIjoibXJAYWl0cmFpbmVyLmFwcCIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJtckBhaXRyYWluZXIuYXBwIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.yds_4NSc1m7U7q6y1jdHy61Z1Y_4weOWfC_mbvzQsGLqsuOuP_SM6OvhqQOjywAWGhvm709mydm9nWdhhPNDNTcC5pn8Xl770GYoMF_8tLPae8Mrw-9ppFvXNHXg0kKpl2uIirjMhZM19fq4HBLJPAReQ8-8FCHfodXRd5TH5EWSZnZ-TzdwvKaitfjn_-2w4tA1WepH4XhCwP908NG-U6IUwBOsi_aoQpQwSJWL9HwW1pTsYSE0DubfKOmsMBH3WaVkkJfcL1IOGBR4TK-vimkfmP2VnU3F88GF583b1FKw-JZ6ovOBy4jHnL02k_yAQksMwHXeaSGMwulWdjxqHQ",
"customerId": 56,
"properties": [
{
"customerPropertyId": 3,
"propertyId": 1,
"propertyValue": 66.0,
"dateAdd": "2023-02-25 11:19:30",
"goal": false
},
{
"customerPropertyId": 4,
"propertyId": 2,
"propertyValue": 178.0,
"dateAdd": "2023-02-25 11:19:30",
"goal": false
}
],
"memberships": [
{
"id": 2,
"membershipId": 2,
"startDate": "2023-02-25 11:19:30"
}
]
}''';
Customer customer = Customer.fromJson(jsonDecode(json));
expect(customer.customerId, 56);
expect(customer.customerProperties.length, 2);
expect(customer.customerProperties[0].propertyValue, 66);
expect(customer.customerProperties[1].propertyId, 2);
expect(customer.memberships.length, 1);
expect(customer.memberships[0].membershipId, 2);
Cache().userLoggedIn = customer;
CustomerRepository repository = CustomerRepository();
repository.initCustomerProperties();
customer = Cache().userLoggedIn!;
expect(customer.properties.length, 2);
expect(customer.getProperty("Weight"), 66);
});
});
test('getPropertyDate', () {
var customer = Customer();
var propertyName = 'testDate';
var testDate = DateTime.now();
var expectedDate = DateFormat('yyyy-MM-dd').format(testDate);
String json = '''{
"customerPropertyId": 41,
"propertyId": 1,
"propertyValue": 82.0,
"dateAdd": "$expectedDate",
"goal": false
}''';
CustomerProperty property = CustomerProperty.fromJson(jsonDecode(json));
customer.properties[propertyName] = property;
var actualDate = customer.getPropertyDate(propertyName);
expect(actualDate, equals(expectedDate));
});
}