mirror of https://github.com/BTCPrivate/copay.git
ref provider name - add test
This commit is contained in:
parent
b30870f218
commit
b74d72a4b6
|
@ -61,7 +61,7 @@ import { ProfileProvider } from '../providers/profile/profile';
|
||||||
import { RateProvider } from '../providers/rate/rate';
|
import { RateProvider } from '../providers/rate/rate';
|
||||||
import { ScanProvider } from '../providers/scan/scan';
|
import { ScanProvider } from '../providers/scan/scan';
|
||||||
import { WalletProvider } from '../providers/wallet/wallet';
|
import { WalletProvider } from '../providers/wallet/wallet';
|
||||||
import { LatestRelease } from '../providers/latestRelease/latestRelease';
|
import { LatestReleaseProvider } from '../providers/latestRelease/latestRelease';
|
||||||
|
|
||||||
export function createTranslateLoader(http: Http) {
|
export function createTranslateLoader(http: Http) {
|
||||||
return new TranslatePoHttpLoader(http, 'assets/i18n', '.po');
|
return new TranslatePoHttpLoader(http, 'assets/i18n', '.po');
|
||||||
|
@ -106,7 +106,7 @@ let providers: any = [
|
||||||
SocialSharing,
|
SocialSharing,
|
||||||
Toast,
|
Toast,
|
||||||
WalletProvider,
|
WalletProvider,
|
||||||
LatestRelease,
|
LatestReleaseProvider,
|
||||||
{
|
{
|
||||||
provide: ErrorHandler,
|
provide: ErrorHandler,
|
||||||
useClass: IonicErrorHandler
|
useClass: IonicErrorHandler
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
export let LatestReleaseProviderStub = {
|
||||||
|
checkLatestRelease(currentVersion: string, latestVersion: string) {
|
||||||
|
if (!currentVersion || !latestVersion) return this.requestLatestRelease();
|
||||||
|
|
||||||
|
if (!verifyTagFormat(currentVersion))
|
||||||
|
return ('Cannot verify the format of version tag: ' + currentVersion);
|
||||||
|
if (!verifyTagFormat(latestVersion))
|
||||||
|
return ('Cannot verify the format of latest release tag: ' + latestVersion);
|
||||||
|
|
||||||
|
var current = formatTagNumber(currentVersion);
|
||||||
|
var latest = formatTagNumber(latestVersion);
|
||||||
|
|
||||||
|
if (latest.major < current.major || (latest.major == current.major && latest.minor <= current.minor))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
|
||||||
|
function verifyTagFormat(tag: string) {
|
||||||
|
var regex = /^v?\d+\.\d+\.\d+$/i;
|
||||||
|
return regex.exec(tag);
|
||||||
|
};
|
||||||
|
|
||||||
|
function formatTagNumber(tag: string) {
|
||||||
|
var formattedNumber = tag.replace(/^v/i, '').split('.');
|
||||||
|
return {
|
||||||
|
major: +formattedNumber[0],
|
||||||
|
minor: +formattedNumber[1],
|
||||||
|
patch: +formattedNumber[2]
|
||||||
|
};
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
requestLatestRelease() {
|
||||||
|
return '3.3.3';
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { NavController } from 'ionic-angular';
|
import { NavController } from 'ionic-angular';
|
||||||
import { ProfileProvider } from '../../providers/profile/profile';
|
import { ProfileProvider } from '../../providers/profile/profile';
|
||||||
import { LatestRelease } from '../../providers/latestRelease/latestRelease';
|
import { LatestReleaseProvider } from '../../providers/latestRelease/latestRelease';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'page-home',
|
selector: 'page-home',
|
||||||
|
@ -13,7 +13,7 @@ export class HomePage {
|
||||||
constructor(
|
constructor(
|
||||||
public navCtrl: NavController,
|
public navCtrl: NavController,
|
||||||
private profile: ProfileProvider,
|
private profile: ProfileProvider,
|
||||||
private latestRelease: LatestRelease,
|
private latestRelease: LatestReleaseProvider,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import { LatestReleaseProviderStub } from '../../mocks/latestRelease'
|
||||||
|
|
||||||
|
describe('Latest Release Provider', () => {
|
||||||
|
var currentVersion: string;
|
||||||
|
var latestVersion: string;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
// Using the mock => 3.3.3
|
||||||
|
latestVersion = LatestReleaseProviderStub.checkLatestRelease(null, null);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should check successfully the latest release of the app', () => {
|
||||||
|
expect(latestVersion).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should check unsuccessfully the current release format of the app', () => {
|
||||||
|
const result = LatestReleaseProviderStub.checkLatestRelease('V.3.3.3', '3.3.3');
|
||||||
|
expect(result).toMatch('Cannot');
|
||||||
|
expect(result).toMatch('version tag');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should check unsuccessfully the latest release format of the app', () => {
|
||||||
|
const result = LatestReleaseProviderStub.checkLatestRelease('3.3.3', 'V.3.3.3');
|
||||||
|
expect(result).toMatch('Cannot');
|
||||||
|
expect(result).toMatch('release tag');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should compare the current and latest version of the app with the same value', () => {
|
||||||
|
currentVersion = '3.3.3';
|
||||||
|
const result = LatestReleaseProviderStub.checkLatestRelease(currentVersion, latestVersion);
|
||||||
|
expect(result).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('there should be a new version available', () => {
|
||||||
|
currentVersion = '3.2.3';
|
||||||
|
const result = LatestReleaseProviderStub.checkLatestRelease(currentVersion, latestVersion);
|
||||||
|
expect(result).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('there should not be a new version available', () => {
|
||||||
|
currentVersion = '3.3.2';
|
||||||
|
const result = LatestReleaseProviderStub.checkLatestRelease(currentVersion, latestVersion);
|
||||||
|
expect(result).toBeFalsy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -5,7 +5,7 @@ import 'rxjs/add/operator/toPromise';
|
||||||
import { AppProvider } from '../../providers/app/app';
|
import { AppProvider } from '../../providers/app/app';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class LatestRelease {
|
export class LatestReleaseProvider {
|
||||||
private LATEST_RELEASE_URL: string;
|
private LATEST_RELEASE_URL: string;
|
||||||
private appVersion: string;
|
private appVersion: string;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue