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 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)); }); }