Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

withSomeParams with FormData & URL query params #383

Open
patocallaghan opened this issue Mar 8, 2019 · 1 comment
Open

withSomeParams with FormData & URL query params #383

patocallaghan opened this issue Mar 8, 2019 · 1 comment

Comments

@patocallaghan
Copy link
Collaborator

patocallaghan commented Mar 8, 2019

Following on from #381 it appears the fix I submitted didn't in fact work for our use case. I'm opening this issue for discussion as I'm not sure if it is supposed to be work 🤷‍♂️

//App code request - notice we have query params in the URL as well as FormData
$.ajax({
  url: '/some/url?foo=foo',
  type: 'POST',
  data: JSON.stringify({ bar:'bar' })
});

//Mock in test - in withSomeParams we are only matching the params
mock({
  url: '/some/url?foo=foo',
  type: 'POST'
})
  .withSomeParams({ foo: 'foo' });

The problem is if we see that the request is NOT a GET we only check the FormData values, which in this case is { bar: 'bar' } and not the values in the request params, { foo: 'foo' }. We do the comparison here

https://github.com/danielspaniel/ember-data-factory-guy/blob/b086500dbab1b7eb510e3a177cf196cfa5c66ad0/addon/mocks/mock-any-request.js#L49-L58

As a fix on our end we could just move the URL params inside the FormData prop but I guess a bigger question is if Factory Guy should support this or even if it's valid? jQuery seems to handle this scenario of sending both the params object and the FormData.

One solution is to combine the FormData with the query params if present? Or is it just a weird edge case?

@cathalmcguire
Copy link

I just came across the same use case. I wonder would it be a solution to have withParams and withQueryParams functions? If you could chain them it would allow a check on both with compromising any existing functionality

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants