diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ba97bc..1a930c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.14.0] - 2021-09-27 + +### Added + +- Adds mechanism, tagline, state, latitude, longitude, and technology_type to project responses + ## [1.13.0] - 2021-09-10 ### Added diff --git a/package-lock.json b/package-lock.json index 5bfbe24..1db5958 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@patch-technology/patch", - "version": "1.13.0", + "version": "1.14.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@patch-technology/patch", - "version": "1.13.0", + "version": "1.14.0", "license": "MIT", "dependencies": { "query-string": "^7.0.1", diff --git a/package.json b/package.json index 8256529..80094c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@patch-technology/patch", - "version": "1.13.0", + "version": "1.14.0", "description": "Node.js wrapper for the Patch API", "license": "MIT", "repository": { diff --git a/src/ApiClient.js b/src/ApiClient.js index dc6ff85..28a157a 100644 --- a/src/ApiClient.js +++ b/src/ApiClient.js @@ -16,7 +16,7 @@ class ApiClient { }; this.defaultHeaders = { - 'User-Agent': 'patch-node/1.13.0' + 'User-Agent': 'patch-node/1.14.0' }; /** diff --git a/src/model/ParentTechnologyType.js b/src/model/ParentTechnologyType.js new file mode 100644 index 0000000..113331d --- /dev/null +++ b/src/model/ParentTechnologyType.js @@ -0,0 +1,37 @@ +/** + * Patch API V1 + * The core API used to integrate with Patch's service + * + * Contact: developers@usepatch.com + */ + +import ApiClient from '../ApiClient'; + +class ParentTechnologyType { + constructor() { + ParentTechnologyType.initialize(this); + } + + static initialize(obj) {} + + static constructFromObject(data, obj) { + if (data) { + obj = obj || new ParentTechnologyType(); + + if (data.hasOwnProperty('slug')) { + obj['slug'] = ApiClient.convertToType(data['slug'], 'String'); + } + + if (data.hasOwnProperty('name')) { + obj['name'] = ApiClient.convertToType(data['name'], 'String'); + } + } + return obj; + } +} + +ParentTechnologyType.prototype['slug'] = undefined; + +ParentTechnologyType.prototype['name'] = undefined; + +export default ParentTechnologyType; diff --git a/src/model/Project.js b/src/model/Project.js index b7a648d..450f6fe 100644 --- a/src/model/Project.js +++ b/src/model/Project.js @@ -9,6 +9,7 @@ import ApiClient from '../ApiClient'; import Photo from './Photo'; import Sdg from './Sdg'; import Standard from './Standard'; +import TechnologyType from './TechnologyType'; class Project { constructor( @@ -85,10 +86,26 @@ class Project { obj['type'] = ApiClient.convertToType(data['type'], 'String'); } + if (data.hasOwnProperty('mechanism')) { + obj['mechanism'] = ApiClient.convertToType(data['mechanism'], 'String'); + } + if (data.hasOwnProperty('country')) { obj['country'] = ApiClient.convertToType(data['country'], 'String'); } + if (data.hasOwnProperty('state')) { + obj['state'] = ApiClient.convertToType(data['state'], 'String'); + } + + if (data.hasOwnProperty('latitude')) { + obj['latitude'] = ApiClient.convertToType(data['latitude'], 'Number'); + } + + if (data.hasOwnProperty('longitude')) { + obj['longitude'] = ApiClient.convertToType(data['longitude'], 'Number'); + } + if (data.hasOwnProperty('developer')) { obj['developer'] = ApiClient.convertToType(data['developer'], 'String'); } @@ -118,6 +135,16 @@ class Project { if (data.hasOwnProperty('sdgs')) { obj['sdgs'] = ApiClient.convertToType(data['sdgs'], [Sdg]); } + + if (data.hasOwnProperty('technology_type')) { + obj['technology_type'] = TechnologyType.constructFromObject( + data['technology_type'] + ); + } + + if (data.hasOwnProperty('tagline')) { + obj['tagline'] = ApiClient.convertToType(data['tagline'], 'String'); + } } return obj; } @@ -133,8 +160,16 @@ Project.prototype['description'] = undefined; Project.prototype['type'] = undefined; +Project.prototype['mechanism'] = undefined; + Project.prototype['country'] = undefined; +Project.prototype['state'] = undefined; + +Project.prototype['latitude'] = undefined; + +Project.prototype['longitude'] = undefined; + Project.prototype['developer'] = undefined; Project.prototype['photos'] = undefined; @@ -147,4 +182,8 @@ Project.prototype['standard'] = undefined; Project.prototype['sdgs'] = undefined; +Project.prototype['technology_type'] = undefined; + +Project.prototype['tagline'] = undefined; + export default Project; diff --git a/src/model/TechnologyType.js b/src/model/TechnologyType.js new file mode 100644 index 0000000..1dc9421 --- /dev/null +++ b/src/model/TechnologyType.js @@ -0,0 +1,47 @@ +/** + * Patch API V1 + * The core API used to integrate with Patch's service + * + * Contact: developers@usepatch.com + */ + +import ApiClient from '../ApiClient'; +import ParentTechnologyType from './ParentTechnologyType'; + +class TechnologyType { + constructor() { + TechnologyType.initialize(this); + } + + static initialize(obj) {} + + static constructFromObject(data, obj) { + if (data) { + obj = obj || new TechnologyType(); + + if (data.hasOwnProperty('slug')) { + obj['slug'] = ApiClient.convertToType(data['slug'], 'String'); + } + + if (data.hasOwnProperty('name')) { + obj['name'] = ApiClient.convertToType(data['name'], 'String'); + } + + if (data.hasOwnProperty('parent_technology_type')) { + obj['parent_technology_type'] = + ParentTechnologyType.constructFromObject( + data['parent_technology_type'] + ); + } + } + return obj; + } +} + +TechnologyType.prototype['slug'] = undefined; + +TechnologyType.prototype['name'] = undefined; + +TechnologyType.prototype['parent_technology_type'] = undefined; + +export default TechnologyType; diff --git a/test/integration/projects.test.js b/test/integration/projects.test.js index a705e1a..0ff5efa 100644 --- a/test/integration/projects.test.js +++ b/test/integration/projects.test.js @@ -13,6 +13,22 @@ describe('Project Integration', function () { const projectId = data[0].id; const projectResponse = await patch.projects.retrieveProject(projectId); expect(projectResponse.data.id).to.equal(projectId); + + // tagline can be null but should always be present in the payload + expect(projectResponse.data).to.be.have.property('tagline'); + + expect(projectResponse.data.mechanism).to.be.a('string'); + expect(projectResponse.data.state).to.be.a('string'); + expect(projectResponse.data.latitude).to.be.a('number'); + expect(projectResponse.data.longitude).to.be.a('number'); + + const technology_type = projectResponse.data.technology_type; + expect(technology_type.slug).to.be.a('string'); + expect(technology_type.name).to.be.a('string'); + + const parent_technology_type = technology_type.parent_technology_type; + expect(parent_technology_type.slug).to.be.a('string'); + expect(parent_technology_type.name).to.be.a('string'); }); it('supports fetching all projects from the United States', async function () {