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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the constructor in `src/drone-delivery/NeedParams.ts` and add Jest tests for `src/drone-delivery/NeedParams.ts` #110

Open
mariolo1985 opened this Issue Oct 29, 2018 · 2 comments

Comments

Projects
None yet
2 participants
@mariolo1985
Member

mariolo1985 commented Oct 29, 2018

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 鉂わ笍

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/drone-delivery/NeedParams.ts class, the constructor is not defining the startLocation and endLocation objects correctly. Currently, the long key is set to the lat value.

      this.startLocation = {
        lat: values.startLocation.lat,
        long: values.startLocation.lat,
      };
      this.endLocation = {
        lat: values.endLocation.lat,
        long: values.endLocation.lat,
      };

The Updates

Please update the constructor in src/drone-delivery/NeedParams.ts by defining the startLocation and endLocation objects correctly.

Please create Jest tests for src/drone-delivery/NeedParams.ts

1. Update the constructor

Update the constructor by defining the startLocation and endLocation objects with the associated lat and long values.

The end result will be similar to this:

      this.startLocation = {
        lat: values.startLocation.lat,
        long: values.startLocation.long,
      };
      this.endLocation = {
        lat: values.endLocation.lat,
        long: values.endLocation.long,
      };

2. Create Jest tests

We currently do not have unit testing set up for src/drone-delivery/NeedParams.ts. Please create Jest tests for the serialize() and deserialize() methods.

A good reference point would be src/ride-hailing/MissionParams.test.ts and customize it to the expected parameters and properties. If you are unsure what is expected, run npm run jest in the terminal and it should give you a hint. Also, you can reach out to our gitter channel with any questions 馃槃

The test you write will be similar to this:

import NeedParams from './NeedParams';
import VehicleTypes from './VehicleTypes';

describe('NeedParams class', () => {
  let needParams: NeedParams;
  let serializedNeedParams: any;

  beforeEach(() => {
    needParams = new NeedParams({
      endLocation: {
        lat: 32.050382,
        long: 34.766149,
      },
      location: {
        lat: 32.050382,
        long: 34.766149,
      },
      maxAltitude: 6000,
      startAt: undefined,
      startLocation: {
        lat: 32.050382,
        long: 34.766149,
      },
      vehicleType: VehicleTypes.drone
    });

    serializedNeedParams = {
      davId: undefined,
      endLocation: {
        lat: 32.050382,
        long: 34.766149,
      },
      id: undefined,
      location: {
        latitude: 32.050382,
        longitude: 34.766149,
      },
      maxAltitude: 6000,
      protocol: 'drone_delivery',
      startLocation: {
        lat: 32.050382,
        long: 34.766149,
      },
      type: 'need',
      ttl: undefined,
      vehicleType: VehicleTypes.drone
    };
  });

  describe('serialize method', () => {
    it('should return serialized NeedParams object with the current values', () => {
      expect(needParams.serialize()).toEqual(serializedNeedParams);
    });
  });

  describe('deserialize method', () => {
    it('should return a NeedParams instance', () => {
      const needParamsObject = new NeedParams();
      needParamsObject.deserialize(serializedNeedParams);
      expect(needParamsObject).toBeInstanceOf(NeedParams);
    });

    it('should return deserialize NeedParams instance with current parameters', () => {
      const needParamsObject = new NeedParams();
      needParamsObject.deserialize(serializedNeedParams);
      expect(needParamsObject).toEqual(needParams);
    });
  });
});

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

Contributing to dav-js

  • Make sure this issue is labeled up-for-grabs and not labeled claimed, to verify no one else is working on it.
  • Comment on this issue that you would like to do it (if you're the first you can start working on it immediately)
  • Open dav-js GitHub page and click the 鈽 Star and then 鈶 Fork buttons
  • Clone a copy to your local machine with $ git clone git@github.com:YOUR-GITHUB-USER-NAME/dav-js.git
  • Install dependencies by running npm install
  • Make sure everything is working and all tests pass by running npm run jest
  • Code Code Code
  • Make sure everything is still working and all tests pass by running npm run jest again
  • Make sure the linter is working and passing by running npm run tslint
  • Commit all your changes
  • Push your local changes back to github with $ git push -u origin master
  • Visit your fork on GitHub.com (https://github.com/YOUR-USER-NAME/dav-js) and create a pull request for your changes.
  • Make sure your pull request describes exactly what you changed and references this issue (include the issue number in the title like this: #7)
  • Please do not fix more than one issue at a time. Your pull request should only fix what is described in this issue.

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 馃槃

@AyoAlfonso

This comment has been minimized.

AyoAlfonso commented Oct 30, 2018

Hello @mariolo1985 Can I claim this issue and start working on it right away?

@mariolo1985

This comment has been minimized.

Member

mariolo1985 commented Oct 30, 2018

Hi @AyoAlfonso yes you can start working on it 馃憤 Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment