Closed haialaluf closed 5 years ago
Hello team! My name is Eric. I am an experienced developer but have never contributed to open source. I would like to help if possible.
I reviewed the sample code (https://github.com/DAVFoundation/dav-js/blob/master/src/vessel-charging/NeedParams.test.ts).
The question I have is this:
Is there a specific reason for using Jest Matcher expect(object1).toEqual(object2)
?
Typically, toEqual is too coupled with implementation for testing objects and makes for a brittle test. If we add n+1 properties to object1 class, we need to update the test. I feel that this will cause slowdowns in development because the assertion is too narrow, causing the test to be too brittle.
The idea I had was to use expect(object1).toMatch(object2)
and including a few key properties, which may make for better faster testing, sans development slowdown and achieve the same benefit.
Thank you @ericcgu
That's a very good observation. I had to take some time to consider it, but I think I prefer the current implementation using toEqual()
The test for the serializer makes sure that a certain input always gives a certain predictable output. And both the expected input and output are present in the test code. If in the future we change how the serialization works (e.g., by adding not just ttl
but also a ttl_expiry_logging_endpoint
), the change should be reflected in the test.
Yes, it's a change that might happen in the parent NeedParams and then affect the vessel-charging NeedParams test, and so could be argued to be too coupled. But I like how the expected outcome of the function is explicitly stated here. Makes the test read like documentation.
Anyway, as I already said, that is an excellent observation. We would be honored to have your expertise and help you get started on your path to more involvement with open source. Open source has had a tremendous influence on my career (success and enjoyment)... it's a path worth taking.
Thank you @TalAter .
@ericcgu I believe there is a bug in all the message files for vessel-charging which will cause you to not be able to complete this issue.
Would you be interested in tackling another one? Perhaps #22
This is for a decentralized ride hailing app we are currently building, it's a cool one.
Yes please.
@ericcgu The bug has been resolved.
Would you like to try this issue now?
@TalAter, Can I give this a go?
@ericcgu Are you still interested in doing this issue?
I apologize. I don't have the bandwidth I thought I would. Feel free to takeover.
On Tue, Oct 9, 2018, 3:47 AM Tal Ater notifications@github.com wrote:
@ericcgu https://github.com/ericcgu Are you still interested in doing this issue?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/DAVFoundation/dav-js/issues/30#issuecomment-428094440, or mute the thread https://github.com/notifications/unsubscribe-auth/AEtvj4KM3rygPSHTvEZ0JrOfnunmf1tBks5ujFSrgaJpZM4WaZTo .
@ericcgu No problem. We'll be here once you feel like getting involved again 👍
@sark01 go ahead, it's all yours.
@TalAter, thanks, I'm stuck up in a critical issue at work so I'll start working on it in a day or two if that's not an issue.
👍 no problem
first-timers-only
This issue is tagged :octocat: first-timers-only. It is only for people who have never contributed to open source before, and are looking for an easy way take their first steps.
Consider this your chance to dip your toe into the world of open-source, and get some bragging rights for writing code that makes drones fly, lets cars find charging stations, helps people and goods get from place to place, and more.
Find more first-timers-only issues from DAV Foundation here.
Thank you for your help :heart:
What is this project?
DAV (Decentralized Autonomous Vehicles) is a new foundation working to build an open-source infrastructure for autonomous vehicles (cars, drones, trucks, robots, and all the service providers around them) to communicate and transact with each other over blockchain.
As an organization that believes in building a large community of open-source contributors, we often create issues like this one to help people take their first few steps into the world of open source.
dav-js
This SDK enabled integrating any client side JS and NodeJS code with the DAV Network.
How you can help
The Issue
Create tests for
vessel-charging/messages/VesselStatusMessageParams
using jest.You need to create tests to check that the
serialize
anddeserialize
methods work as expected.Please use the test file for class
NeedParams
as a basis for your new code.Function
serialize
in classMessageParams
must return a JSON object that contains all properties defined in theMessageParams
instance.Function
deserialize
in classMessageParams
receives a JSON string and must initialize all the properties of theMessageParams
instance with the values in the JSON string.messageParams1.desrialize(messageParams2.serialize()) == messageParams2
must therefore always be true.NOTE: Some names are changed between protocol string representation of instance properties:
location
is internally represented as{ lat , lon }
but serialized as{ latitude , longitude }
_
but serialized without the prefix. i.e._protocol
becomesprotocol
Contributing to dav-js
up-for-grabs
and not labeledclaimed
, to verify no one else is working on it.$ git clone git@github.com:YOUR-GITHUB-USER-NAME/dav-js.git
$ git push -u origin master
#7
)Asking for help
We appreciate your effort in taking the time to work on this issue and help out the open source community and the foundation. If you need any help, feel free to ask below or in our gitter channel. We are always happy to help 😄