diff --git a/lib/src/client/json_api_client.dart b/lib/src/client/json_api_client.dart index f59269c7..92f9f0fb 100644 --- a/lib/src/client/json_api_client.dart +++ b/lib/src/client/json_api_client.dart @@ -66,8 +66,8 @@ class JsonApiClient { /// /// https://jsonapi.org/format/#crud-creating Future> createResourceAt(Uri uri, Resource resource, - {Map headers}) => - _call(_post(uri, headers, _resourceDoc(resource)), ResourceData.fromJson); + {Map headers, Map meta}) => + _call(_post(uri, headers, _resourceDoc(resource, meta: meta)), ResourceData.fromJson); /// Deletes the resource. /// @@ -127,8 +127,8 @@ class JsonApiClient { final _api = Api(version: '1.0'); - Document _resourceDoc(Resource resource) => - Document(ResourceData.fromResource(resource), api: _api); + Document _resourceDoc(Resource resource, {Map meta}) => + Document(ResourceData.fromResource(resource), meta: meta, api: _api); Document _toManyDoc(Iterable identifiers) => Document(ToMany.fromIdentifiers(identifiers), api: _api); diff --git a/test/unit/client/creating_resource_with_meta_test.dart b/test/unit/client/creating_resource_with_meta_test.dart new file mode 100644 index 00000000..b4a11e9f --- /dev/null +++ b/test/unit/client/creating_resource_with_meta_test.dart @@ -0,0 +1,25 @@ +import 'package:json_api/client.dart'; +import 'package:json_api/document.dart'; +import 'package:json_api/http.dart'; +import 'package:test/test.dart'; + +import '../../helper/test_http_handler.dart'; + +void main() async { + test('request actually has the meta property', () async { + final handler = TestHttpHandler(); + final client = JsonApiClient(handler); + + final uri = Uri.parse('https://github.com/f3ath/json-api-dart'); + final person = + Resource('people', '123', attributes: {'name': 'Te Cheng Hung'}); + final meta = {'friend': 'Martin Fowler'}; + + handler.nextResponse = HttpResponse(201); + await client.createResourceAt(uri, person, meta: meta); + + final request = handler.requestLog.first; + expect(request.body, + '{"data":{"type":"people","id":"123","attributes":{"name":"Te Cheng Hung"}},"meta":{"friend":"Martin Fowler"}}'); + }); +}