Skip to content

Commit

Permalink
feat: announce only release versions (#31)
Browse files Browse the repository at this point in the history
* announcing only release versions

* made it regex for each level, named tests

* changed to using optional Boolean, default excluding unstable releases

* single function resolving twitter post
  • Loading branch information
ZimGil authored and thatkookooguy committed May 13, 2019
1 parent 219da31 commit 23e8e3a
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 3 deletions.
26 changes: 24 additions & 2 deletions src/announce-it.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { assign } from 'lodash';
import { assign, cloneDeep } from 'lodash';
import { KbAnnounceIt } from './announce-it';
import { IPackageDetails } from './read-package-details';

Expand Down Expand Up @@ -82,7 +82,7 @@ describe('kbAnnounceIt.announceRelease', () => {
type: 'test-repo-type',
url: 'test-repo-url'
},
version: 'test-version',
version: '0.0.0',
announcements: {
tweet: 'test-template'
}
Expand All @@ -99,6 +99,28 @@ describe('kbAnnounceIt.announceRelease', () => {
});
});

it('should post to twitter when stable release', () => {
return announceIt.announceRelease(packageDetails)
.then((tweet) => expect(tweet).toMatch('test-template'));
});

it('should throw an error when unstable release and not mentioned in packageDetails', () => {
const testPackageDetails = cloneDeep(packageDetails);
testPackageDetails.version = '0.0.0-next.1';

return announceIt.announceRelease(testPackageDetails)
.catch((tweet) => expect(tweet).toMatch('Not a stable release'));
});

it('should post to twitter when unstable release and mentioned in packageDetails', () => {
const testPackageDetails = cloneDeep(packageDetails);
testPackageDetails.version = '0.0.0-next.1';
testPackageDetails.announcements.includeUnstable = true;

return announceIt.announceRelease(testPackageDetails)
.then((tweet) => expect(tweet).toMatch('test-template'));
});

it('should throw error on missing package details input', () => {
const testPackageDetails: any = assign({}, packageDetails);
testPackageDetails.name = null;
Expand Down
12 changes: 11 additions & 1 deletion src/announce-it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,22 @@ export class KbAnnounceIt {
}

announceRelease(packageDetails: IPackageDetails): Promise<any> {
if (
!packageDetails.announcements.includeUnstable &&
!packageDetails.version.match(/^(\d+\.)+\d+$/)
) {
return Promise.reject('Not a stable release');
}

const tweet = this.generateTweet(packageDetails);

return this.client
.get('account/verify_credentials')
.then(() => this.client.post('statuses/update', { status: tweet }))
.then(() => console.log('Tweeted successfully:', tweet));
.then(() => {
console.log('Tweeted successfully:', tweet);
return tweet;
});
}

generateTweet(packageDetails: IPackageDetails): string {
Expand Down
1 change: 1 addition & 0 deletions src/read-package-details.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export interface IPackageDetails {
};
announcements: {
tweet: string;
includeUnstable?: boolean;
};
}

Expand Down

0 comments on commit 23e8e3a

Please sign in to comment.