@@ -2,6 +2,7 @@ import { module, test } from 'qunit';
22import { setupTest } from 'ember-qunit' ;
33import { adapterAction } from '@mainmatter/ember-api-actions' ;
44import { ServerError } from '@ember-data/adapter/error' ;
5+ import RESTAdapter from '@ember-data/adapter/rest' ;
56
67module ( 'adapterAction()' , function ( hooks ) {
78 setupTest ( hooks ) ;
@@ -48,4 +49,43 @@ module('adapterAction()', function (hooks) {
4849 ServerError
4950 ) ;
5051 } ) ;
52+
53+ test ( 'buildURL can receive adapterOptions' , async function ( assert ) {
54+ class UserAdapter extends RESTAdapter {
55+ buildURL ( modelName , id , { adapterOptions } ) {
56+ let url = super . buildURL ( ...arguments ) ;
57+ if ( adapterOptions ?. test === true ) {
58+ return `${ url } ?test=true` ;
59+ }
60+ return url ;
61+ }
62+ }
63+
64+ this . owner . register ( 'adapter:user' , UserAdapter ) ;
65+
66+ let { worker, rest, adapter } = await prepare ( this ) ;
67+
68+ worker . use (
69+ rest . post ( '/users/my-action' , ( req , res , ctx ) => {
70+ let body = { } ;
71+ if ( req . url . searchParams . has ( 'test' ) ) {
72+ body . test = true ;
73+ }
74+ return res ( ctx . json ( body ) ) ;
75+ } )
76+ ) ;
77+
78+ let responseA = await adapterAction ( adapter , 'user' , {
79+ method : 'POST' ,
80+ path : 'my-action' ,
81+ adapterOptions : { test : true } ,
82+ } ) ;
83+ assert . deepEqual ( responseA , { test : true } ) ;
84+
85+ let responseB = await adapterAction ( adapter , 'user' , {
86+ method : 'POST' ,
87+ path : 'my-action' ,
88+ } ) ;
89+ assert . deepEqual ( responseB , { } ) ;
90+ } ) ;
5191} ) ;
0 commit comments