DAVFoundation / dav-js

Enable integration of JavaScript, TypeScript, and Node.js code with the DAV Network
https://developers.dav.network/
MIT License
76 stars 51 forks source link

Update `serialize()` object in `src/vessel-charging/BidParams.ts` and associated tests in `src/vessel-charging/BidParams.test.ts` using Jest #83

Open mariolo1985 opened 5 years ago

mariolo1985 commented 5 years ago

first-timers-only

This issue is tagged 🕺 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 repo contains the DAV JavaScript SDK. This SDK allows developers to build applications and servers that connect to the DAV network. For example, allowing a drone to find charging stations, or an autonomous car to ask for traffic data.

How you can help

In order to foster a community that is welcoming for open source contributions, it is important for us to have good test coverage. And good tests are simple, readable tests.

Here is a good opportunity to update one of our tests.

The Issue

In the src/vessel-charging/BidParams.ts class, the serialize() method is not returning our arguments correctly. provider, manufacturer and model are being set to this.amenities but they should be set to their associated arguments.

Currently:

  public serialize() {
    const formattedParams = super.serialize();
    Object.assign(formattedParams, {
      entranceLocation: this.entranceLocation,
      exitLocation: this.exitLocation,
      availableFrom: this.availableFrom,
      availableUntil: this.availableUntil,
      energySource: this.energySource,
      amenities: this.amenities,
      provider: this.amenities,
      manufacturer: this.amenities,
      model: this.amenities,
    });
    return formattedParams;
  }

The Updates

Please update the test file src/vessel-charging/BidParams.test.ts to ensure amenities, provider, model, manufacturer are being handled correctly and update src/vessel-charging/BidParams.ts by passing the associated arguments to provider, manufacturer, model.

1. Update the tests

The test should ensure amenities, provider, model and manufacturer are being passed through and returning correctly in the test file src/vessel-charging/BidParams.test.ts.

Please update this test by:

  1. Adding Amenities to the ./enums import
import { EnergySources, Amenities } from './enums';
  1. Add arguments amenities, provider, model and manufacturer to the instantiation of BidParams
const bidParams = new BidParams({
  // existing params
  amenities: [Amenities.Docking, Amenities.Grocery],
  provider: 'Charging Co',
  model: 'iCharger',
  manufacturer: 'Vessel Chargers',
});
  1. Update serializedBidParams object with the arguments (amenities, provider, model and manufacturer) passed above
const serializedBidParams: any = {
  // existing properties
  amenities: [Amenities.Docking, Amenities.Grocery],
  provider: 'Charging Co',
  model: 'iCharger',
  manufacturer: 'Vessel Chargers',
};

After making your changes, run npm run jest.

You should receive an error similar to below.

BidParams Error

This is expected as the serialize() method in src/vessel-charging/BidParams.ts is still returning provider, manufacturer and model as this.amenities.

The next update will fix this error.

2. Update serialize() in BidParams

The serialize() method in src/vessel-charging/BidParams.ts should return the arguments associated with provider, manufacturer and model.

  1. Update the serialize() method
  public serialize() {
    const formattedParams = super.serialize();
    Object.assign(formattedParams, {
      entranceLocation: this.entranceLocation,
      exitLocation: this.exitLocation,
      availableFrom: this.availableFrom,
      availableUntil: this.availableUntil,
      energySource: this.energySource,
      amenities: this.amenities,
      provider: this.provider,
      manufacturer: this.manufacturer,
      model: this.model,
    });
    return formattedParams;
  }

After making your changes, run npm run jest to make sure our tests are now passing.

Contributing to dav-js

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 😄

shalini-s commented 5 years ago

Hey :) I'll take a shot at it!

shalini-s commented 5 years ago

I'm running into issues installing the dependencies with npm - not sure if this is a windows issue? Getting these errors:

dav-js@0.1.19 preinstall C...\dav-js (rm .git/hooks/ && cp ./.githooks/ .git/hooks) || true npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! dav-js@0.1.19 preinstall: (rm .git/hooks/* && cp ./.githooks/* .git/hooks) || true npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the dav-js@0.1.19 preinstall script.

'rm' is not recognized as an internal or external command, operable program or batch file. 'true' is not recognized as an internal or external command, operable program or batch file.

mariolo1985 commented 5 years ago

Hey @shalini-s thanks for helping out! I am getting this error on Windows as well. npm install completes on a Mac :sweat_smile: I will let our devs know.

mariolo1985 commented 5 years ago

Hi @shalini-s It looks like you found a bug 🐞 My apologize for the issue. We will let you know when this is resolved.

I have also added more depth to this issue. It is different from when you started. If you have any questions, you are more than welcome reach out 👐 .

mariolo1985 commented 5 years ago

Hey @shalini-s, our devs pushed out a fix for Windows that should resolve the install errors. Could you pull from master and let me know if you are still getting install errors?

shalini-s commented 5 years ago

Hey, I pulled the updates but seem to be getting a bunch of different errors now:

gyp ERR! configure error gyp ERR! stack Error: Command failed: C:\Users...\AppData\Local\Programs\Python\Python36-32\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3]; gyp ERR! stack File "", line 1 gyp ERR! stack import sys; print "%s.%s.%s" % sys.version_info[:3]; gyp ERR! stack ^ gyp ERR! stack SyntaxError: invalid syntax gyp ERR! stack gyp ERR! stack at ChildProcess.exithandler (child_process.js:275:12) gyp ERR! stack at emitTwo (events.js:126:13) gyp ERR! stack at ChildProcess.emit (events.js:214:7) gyp ERR! stack at maybeClose (internal/child_process.js:925:16) gyp ERR! stack at Socket.stream.socket.on (internal/child_process.js:346:11) gyp ERR! stack at emitOne (events.js:116:13) gyp ERR! stack at Socket.emit (events.js:211:7) gyp ERR! stack at Pipe._handle.close [as _onclose] (net.js:567:12) gyp ERR! System Windows_NT 10.0.17134 gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Users\...\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users...\dav-js\node_modules\keccak gyp ERR! node -v v8.11.1 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! keccak@1.4.0 rebuild: node-gyp rebuild npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the keccak@1.4.0 rebuild script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm WARN Local package.json exists, but node_modules missing, did you mean to install?

npm ERR! A complete log of this run can be found in: npm ERR! C:\Users...\AppData\Roaming\npm-cache_logs\2018-10-15T04_09_14_521Z-debug.log "Keccak bindings compilation fail. Pure JS implementation will be used."

scrypt@6.0.3 install C:\Users...\dav-js\node_modules\scrypt node-gyp rebuild

C:\Users...\dav-js\node_modules\scrypt>if not defined npm_config_node_gyp (node "C:\Users...\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\....\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Users...\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild ) gyp ERR! configure error gyp ERR! stack Error: Command failed: C:\Users...\AppData\Local\Programs\Python\Python36-32\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3]; gyp ERR! stack File "", line 1 gyp ERR! stack import sys; print "%s.%s.%s" % sys.version_info[:3]; gyp ERR! stack ^ gyp ERR! stack SyntaxError: invalid syntax gyp ERR! stack gyp ERR! stack at ChildProcess.exithandler (child_process.js:275:12) gyp ERR! stack at emitTwo (events.js:126:13) gyp ERR! stack at ChildProcess.emit (events.js:214:7) gyp ERR! stack at maybeClose (internal/child_process.js:925:16) gyp ERR! stack at Socket.stream.socket.on (internal/child_process.js:346:11) gyp ERR! stack at emitOne (events.js:116:13) gyp ERR! stack at Socket.emit (events.js:211:7) gyp ERR! stack at Pipe._handle.close [as _onclose] (net.js:567:12) gyp ERR! System Windows_NT 10.0.17134 gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Users\...\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users.\dav-js\node_modules\scrypt gyp ERR! node -v v8.11.1 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm WARN ajv-keywords@2.1.1 requires a peer of ajv@^5.0.0 but none is installed. You must install peer dependencies yourself. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! scrypt@6.0.3 install: node-gyp rebuild npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the scrypt@6.0.3 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in: npm ERR! C:\Users...\AppData\Roaming\npm-cache_logs\2018-10-15T04_09_17_740Z-debug.log

TalAter commented 5 years ago

@shalini-s Just before we dive into this, could you clone the latest version of the repository, do npm install again and let us know what you're getting?

mariolo1985 commented 5 years ago

hi @shalini-s are you still interested in working on this?

abdchehadeh commented 5 years ago

@mariolo1985 @TalAter I will have a go with all the First timers. :)

Fransan commented 4 years ago

is this still an issue?