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

dispatch readystatechange? #20

Closed
svenfuchs opened this issue May 24, 2011 · 9 comments
Closed

dispatch readystatechange? #20

svenfuchs opened this issue May 24, 2011 · 9 comments

Comments

@svenfuchs
Copy link

I'm trying to use sinon with sproutcore to stub xhr requests.

It seems to mostly integrate fine except that sproutcore relies on the readystatechange event being dispatched by the XMLHttpRequest - which sinon.FakeXMLHttpRequest does not seem to do.

See:

Any ideas about this? If you could hint me at how to implement this I'd happily give it a try.

@cjohansen
Copy link
Contributor

Right, seems I missed that little nugget of information. Does this mean that the request should support addEventListener to listen for the readystatechange? If so, the fix is fairly trivial. In src/sinon/util/fake_xml_http_request.js, FakeXMLHttpRequest.prototype needs to have the addEventListener method added, and then in readyStateChange you need to fire those events too. Awesome if you want to give it a try!

@svenfuchs
Copy link
Author

Thanks for the quick response :) I'll give it a go ... even though i still have no clue about the test setup in projects like these.

@cjohansen
Copy link
Contributor

The project uses JsTestDriver http://code.google.com/p/js-test-driver/. All you need is Java. Pull down the jar file (I recommend 1.3.1, not 1.3.2), stick it somewhere, like ~/bin. Then you do java -jar ~/bin/JsTestDriver-1.3.1.jar --port 4224. Then use a browser to go to http://localhost:4224. THEN, from the root of the project, do java -jar ~/bin/JsTestDriver-1.3.1.jar --tests all. It's easier than it looks. You'll catch on to the syntax by looking at the existing tests. For a better cli interface and colors: gem install jstdutil, set $JSTESTDRIVER_HOME to point to where you put the jar (the directory, e.g. ~/bin) and do jsautotest and tests will run automatically when you save files.

Give it a shot and let me know if you have problems, I'm happy to help :)

@svenfuchs
Copy link
Author

Hmm, it seems the API requires to implement the Event interface http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event. There doesn't seem to be an implementation in Sinon for that. Any idea about something I could steal or reuse for this?

@cjohansen
Copy link
Contributor

Sorry man, your mail drowned in my inbox :( As far as I understood from the previous description, adding addEventListener should be enough for the public interface? I might have a chance to look closer this weekend.

@cjohansen
Copy link
Contributor

@svenfuchs
Copy link
Author

Christian,

I'm sorry, I should have added a comment that I have a minimal implementation by now. It seems to work fine, but I haven't added any tests, yet.

Here's what I've come up with: https://gist.github.com/995028

I'll probably not be able to cook up a good enough pull request really soon.

@cjohansen
Copy link
Contributor

Cool, that looks like a good start. I'll see if I can add some tests and get it merged in this weekend.

@cjohansen
Copy link
Contributor

It took some time, but I finally committed your code along with some minor modifications and tests. Mind trying the HEAD version in your project? Thanks for your effort!

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