eitri-cli 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/bitbucket-pipelines.toBeChanged.yml +64 -0
- package/boilerplate/mini-app-cafe-madeira.zip +0 -0
- package/check-version.js +12 -0
- package/config/default-eitri.js +1 -0
- package/config/dev.js +91 -0
- package/config/k8s-eitri.js +92 -0
- package/config/loc-eitri.js +92 -0
- package/config/prod-eitri.js +92 -0
- package/config/test-eitri.js +2 -0
- package/index-eitri.js +6 -0
- package/index.js +182 -0
- package/install-dev.bat +1 -0
- package/install-dev.sh +1 -0
- package/jest.config.js +6 -0
- package/jsconfig.json +9 -0
- package/package.json +80 -0
- package/publisher.js +53 -0
- package/src/cmd/clean.js +179 -0
- package/src/cmd/create.js +281 -0
- package/src/cmd/credentials.js +105 -0
- package/src/cmd/invite.js +87 -0
- package/src/cmd/list.js +36 -0
- package/src/cmd/login.js +51 -0
- package/src/cmd/manage-env.js +129 -0
- package/src/cmd/open-share.js +6 -0
- package/src/cmd/order-details.js +6 -0
- package/src/cmd/push-version.js +182 -0
- package/src/cmd/show-message-if-outdated-package.js +32 -0
- package/src/cmd/signup.js +69 -0
- package/src/cmd/start.js +171 -0
- package/src/cmd/tail-logs.js +26 -0
- package/src/cmd/test-initialization-params.js +6 -0
- package/src/cmd/validate.js +170 -0
- package/src/cmd/version.js +29 -0
- package/src/enum/WatcherOpts.js +3 -0
- package/src/enum/target.js +6 -0
- package/src/helpers/request-listener-helper.js +55 -0
- package/src/model/Payload.js +45 -0
- package/src/model/Target.js +76 -0
- package/src/model/User.js +11 -0
- package/src/service/AuthConfig.js +88 -0
- package/src/service/BlindGuardian.js +134 -0
- package/src/service/CliLogin.js +47 -0
- package/src/service/ConfigService.js +16 -0
- package/src/service/CredentialsService.js +47 -0
- package/src/service/GATrackingStrategy.js +16 -0
- package/src/service/HashFolder.js +79 -0
- package/src/service/Http.js +234 -0
- package/src/service/InviteService.js +45 -0
- package/src/service/ManageEnvService.js +10 -0
- package/src/service/MiniLog.js +132 -0
- package/src/service/QRCodeFactory.js +43 -0
- package/src/service/Server.js +239 -0
- package/src/service/StarterService.js +31 -0
- package/src/service/TagTree.js +101 -0
- package/src/service/TargetService.js +97 -0
- package/src/service/TrackService.js +11 -0
- package/src/service/TrackingEitriAnalytics.js +32 -0
- package/src/service/TrackingService.js +183 -0
- package/src/service/ValidateResult.js +57 -0
- package/src/service/Watcher.js +119 -0
- package/src/service/Workspace.js +1069 -0
- package/src/service/WorkspaceManager.js +74 -0
- package/src/service/factories/DoubtsStarterFactory.js +25 -0
- package/src/service/factories/MiniWebAppFactory.js +43 -0
- package/src/service/factories/QRCodeStarterFactory.js +78 -0
- package/src/service/factories/WebStarterFactory.js +88 -0
- package/src/service/factories/WoodCoffeeFactory.js +230 -0
- package/src/util/AboutTemplate.jsx +14 -0
- package/src/util/UrlUtils.js +12 -0
- package/src/util/UserLocalCredential.js +122 -0
- package/src/util/error-messages/error-messages.js +24 -0
- package/src/util/error-messages/invite/invite-error-messages.js +14 -0
- package/src/util/getCliVersion.js +13 -0
- package/src/util/getCreateFactory.js +9 -0
- package/src/util/ipv4.js +19 -0
- package/src/util/manage-env.js +65 -0
- package/src/util/open-docs.js +7 -0
- package/src/util/os.js +39 -0
- package/src/util/server-url.js +15 -0
- package/src/util/template-utils.js +21 -0
- package/src/view/index.html +19 -0
- package/targetMobileStickyness.md +47 -0
- package/targetWebStickyness.md +40 -0
- package/test/_fixtures/factory.js +30 -0
- package/test/_fixtures/miniWebApp/miniapp.conf.js +4 -0
- package/test/_fixtures/miniapp.conf.js +5 -0
- package/test/_fixtures/server/HelloWorldBackend.js +7 -0
- package/test/_fixtures/src/Home.js +5 -0
- package/test/_fixtures/src/Home2.js +5 -0
- package/test/_fixtures/src/commons/util.js +3 -0
- package/test/_fixtures/src/components/TagA.jsx +4 -0
- package/test/_fixtures/src/components/TagB.jsx +4 -0
- package/test/_fixtures/src/components/TagC.jsx +3 -0
- package/test/_fixtures/src/components/TagD.jsx +3 -0
- package/test/_fixtures/src/server/foo.js +7 -0
- package/test/_fixtures/src/views/AboutTemplate.jsx +14 -0
- package/test/_fixtures/woodcoffee/miniapp.conf.js +3 -0
- package/test/ame.conf.js +3 -0
- package/test/cmd/clean.test.js +66 -0
- package/test/cmd/create.test.js +252 -0
- package/test/cmd/credentials.test.js +159 -0
- package/test/cmd/list.test.js +74 -0
- package/test/cmd/manage-env.test.js +168 -0
- package/test/cmd/signup.test.js +20 -0
- package/test/cmd/start.test.js +5 -0
- package/test/miniapp.conf.js +3 -0
- package/test/model/Payload.test.js +35 -0
- package/test/service/BlindGuardian.test.js +84 -0
- package/test/service/CheckAmeConf.test.js +313 -0
- package/test/service/Http.test.js +312 -0
- package/test/service/InviteService.test.js +117 -0
- package/test/service/MiniWebAppFactory.test.js +40 -0
- package/test/service/TagTree.test.js +81 -0
- package/test/service/TargetService.test.js +48 -0
- package/test/service/TrackingService.test.js +105 -0
- package/test/service/UserAmeConf.test.js +47 -0
- package/test/service/WoodCoffeeFactory.test.js +148 -0
- package/test/service/Workspace.test.js +364 -0
- package/thinQrCode.md +58 -0
- package/v1.5.0.md +3 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
const Payload = require('../../src/model/Payload')
|
|
3
|
+
|
|
4
|
+
describe('Payload Test', () => {
|
|
5
|
+
|
|
6
|
+
it('should return shareId', () => {
|
|
7
|
+
const shareId= '123456'
|
|
8
|
+
const shareEnvironment= 'test'
|
|
9
|
+
|
|
10
|
+
const payload = new Payload(shareId, shareEnvironment)
|
|
11
|
+
|
|
12
|
+
expect(payload.shareId).toEqual(shareId)
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
it('should return shareEnvironment', () => {
|
|
16
|
+
const shareId= '123456'
|
|
17
|
+
const shareEnvironment= 'test'
|
|
18
|
+
|
|
19
|
+
const payload = new Payload(shareId, shareEnvironment)
|
|
20
|
+
|
|
21
|
+
expect(payload.shareEnvironment).toEqual(shareEnvironment)
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
it('should return a payload object', () => {
|
|
25
|
+
const shareId= '123456'
|
|
26
|
+
const shareEnvironment= 'test'
|
|
27
|
+
|
|
28
|
+
const payload = new Payload(shareId, shareEnvironment)
|
|
29
|
+
|
|
30
|
+
expect(payload).toEqual({
|
|
31
|
+
shareId,
|
|
32
|
+
shareEnvironment
|
|
33
|
+
})
|
|
34
|
+
})
|
|
35
|
+
})
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
|
|
3
|
+
const nock = require('nock')
|
|
4
|
+
const BlindGuardian = require('../../src/service/BlindGuardian')
|
|
5
|
+
|
|
6
|
+
describe('BlindGuardian', () => {
|
|
7
|
+
let blindGuardian
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
blindGuardian = new BlindGuardian()
|
|
10
|
+
blindGuardian.readConf = () => {
|
|
11
|
+
return {
|
|
12
|
+
devUser: 'foo',
|
|
13
|
+
devKey: 'bar',
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
})
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
nock.cleanAll()
|
|
19
|
+
})
|
|
20
|
+
describe('.getToken()', () => {
|
|
21
|
+
it('retorna o token do usuario', async () => {
|
|
22
|
+
nock('https://dev.eitri.calindra.com.br')
|
|
23
|
+
.post('/blind-guardian-api/v1/o/auth', {
|
|
24
|
+
client_id: 'foo',
|
|
25
|
+
client_secret: 'bar',
|
|
26
|
+
grant_type: 'client_credentials',
|
|
27
|
+
})
|
|
28
|
+
.reply(200, { accessToken: 'xpto' })
|
|
29
|
+
let credential = await blindGuardian.getToken()
|
|
30
|
+
expect(credential.accessToken).toBe('xpto')
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
it('lanca um erro quando as credenciais estao erradas', (done) => {
|
|
34
|
+
nock('https://dev.eitri.calindra.com.br')
|
|
35
|
+
.post('/blind-guardian-api/v1/o/auth', {
|
|
36
|
+
client_id: 'foo',
|
|
37
|
+
client_secret: 'bar',
|
|
38
|
+
grant_type: 'client_credentials',
|
|
39
|
+
})
|
|
40
|
+
.reply(403, {})
|
|
41
|
+
|
|
42
|
+
blindGuardian
|
|
43
|
+
.getToken()
|
|
44
|
+
.then(() => {
|
|
45
|
+
done('nao deveria passar por aqui')
|
|
46
|
+
})
|
|
47
|
+
.catch((err) => {
|
|
48
|
+
try {
|
|
49
|
+
expect(err.message).toBe('Credencial inválida')
|
|
50
|
+
done()
|
|
51
|
+
} catch (e) {
|
|
52
|
+
done(e)
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
it('lanca um erro generico quando o erro nao eh 403', (done) => {
|
|
58
|
+
nock('https://dev.eitri.calindra.com.br')
|
|
59
|
+
.post('/blind-guardian-api/v1/o/auth', {
|
|
60
|
+
client_id: 'foo',
|
|
61
|
+
client_secret: 'bar',
|
|
62
|
+
grant_type: 'client_credentials',
|
|
63
|
+
})
|
|
64
|
+
.reply(500, {})
|
|
65
|
+
|
|
66
|
+
blindGuardian
|
|
67
|
+
.getToken()
|
|
68
|
+
.then(() => {
|
|
69
|
+
done('nao deveria passar por aqui')
|
|
70
|
+
})
|
|
71
|
+
.catch((err) => {
|
|
72
|
+
try {
|
|
73
|
+
expect(err.message).toBe(
|
|
74
|
+
'Por favor tente novamente mais tarde.'
|
|
75
|
+
)
|
|
76
|
+
done()
|
|
77
|
+
} catch (e) {
|
|
78
|
+
done(e)
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
})
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
})
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
const Validate = require('../../src/cmd/validate').validate
|
|
3
|
+
|
|
4
|
+
describe('Field Validate', () => {
|
|
5
|
+
let elementpublish
|
|
6
|
+
//categoria do teste
|
|
7
|
+
it('Json Correto', done => {
|
|
8
|
+
elementpublish = {
|
|
9
|
+
organization: {
|
|
10
|
+
name: 'Meu Mini App'
|
|
11
|
+
},
|
|
12
|
+
name: 'Izabella',
|
|
13
|
+
title: 'Meu super mini app',
|
|
14
|
+
slug: 'com.amedigital.loja',
|
|
15
|
+
version: '1.0.0'
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let validateResult = Validate(elementpublish)
|
|
19
|
+
expect(validateResult.isSuccess()).toBe(true) // espera o resultado
|
|
20
|
+
done()
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it('Json slug com letra maiuscula', done => {
|
|
24
|
+
elementpublish = {
|
|
25
|
+
organization: {
|
|
26
|
+
name: 'Meu Mini App'
|
|
27
|
+
},
|
|
28
|
+
name: 'Izabella',
|
|
29
|
+
title: 'Meu super mini app',
|
|
30
|
+
slug: 'MeuSlug',
|
|
31
|
+
version: '1.0.0'
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
let validateResult = Validate(elementpublish)
|
|
35
|
+
expect(validateResult.isSuccess()).toBe(true) // espera o resultado
|
|
36
|
+
done()
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('Name com caracteres ! - &', done => {
|
|
40
|
+
elementpublish = {
|
|
41
|
+
organization: {
|
|
42
|
+
name: 'Meu Mini App'
|
|
43
|
+
},
|
|
44
|
+
name: 'Izabella! & - +',
|
|
45
|
+
title: 'Meu super mini app',
|
|
46
|
+
slug: 'MeuSlug',
|
|
47
|
+
version: '1.0.0'
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
let validateResult = Validate(elementpublish)
|
|
51
|
+
expect(validateResult.isSuccess()).toBe(true) // espera o resultado
|
|
52
|
+
done()
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it('Title com caracteres ! - &', done => {
|
|
56
|
+
elementpublish = {
|
|
57
|
+
organization: {
|
|
58
|
+
name: 'Meu Mini App'
|
|
59
|
+
},
|
|
60
|
+
name: 'Izabella! & - +',
|
|
61
|
+
title: 'MiniApp ! & - +',
|
|
62
|
+
slug: 'MeuSlug',
|
|
63
|
+
version: '1.0.0'
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
let validateResult = Validate(elementpublish)
|
|
67
|
+
expect(validateResult.isSuccess()).toBe(true) // espera o resultado
|
|
68
|
+
done()
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
it('Validação do campo OrganizationName', done => {
|
|
72
|
+
elementorganization = {
|
|
73
|
+
organization: {
|
|
74
|
+
name: 'Meu Mini App'
|
|
75
|
+
},
|
|
76
|
+
name: 'Izabella Assad',
|
|
77
|
+
title: 'Meu super mini app',
|
|
78
|
+
slug: 'com.amedigital.loja',
|
|
79
|
+
version: '1.0'
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
let validateResult = Validate(elementorganization)
|
|
83
|
+
expect(validateResult.isSuccess()).toBe(false)
|
|
84
|
+
done()
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
it('Validação do campo Name', done => {
|
|
88
|
+
elementorganization = {
|
|
89
|
+
organization: {
|
|
90
|
+
name: 'Meu Mini App'
|
|
91
|
+
},
|
|
92
|
+
name: 'Izabella_Assad',
|
|
93
|
+
title: 'Meu super mini app',
|
|
94
|
+
slug: 'com.amedigital.loja',
|
|
95
|
+
version: '1.0.0'
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
let validateResult = Validate(elementorganization)
|
|
99
|
+
expect(validateResult.isSuccess()).toBe(false)
|
|
100
|
+
done()
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
it('name, title e version incorretos', done => {
|
|
104
|
+
elementpublish = {
|
|
105
|
+
organization: {
|
|
106
|
+
name: 'Meu Mini App'
|
|
107
|
+
},
|
|
108
|
+
name: 'Izabella--.',
|
|
109
|
+
title: 'Meu super mini app,.;',
|
|
110
|
+
slug: 'com.amedigital.loja',
|
|
111
|
+
version: '1.0'
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let validateResult = Validate(elementpublish)
|
|
115
|
+
expect(validateResult.isSuccess()).toBe(false) // espera o resultado
|
|
116
|
+
expect(validateResult.errors.length).toBe(3)
|
|
117
|
+
done()
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
it('Valida name errado', done => {
|
|
121
|
+
elementpublish = {
|
|
122
|
+
organization: {
|
|
123
|
+
name: 'Meu Mini App'
|
|
124
|
+
},
|
|
125
|
+
name: 'Izabel$la',
|
|
126
|
+
title: 'Meu super mini app',
|
|
127
|
+
slug: 'com.amedigital.loja',
|
|
128
|
+
version: '1.0.0'
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
let validateResult = Validate(elementpublish)
|
|
132
|
+
expect(validateResult.isSuccess()).toBe(false) // espera o resultado
|
|
133
|
+
expect(validateResult.errors.length).toBe(1)
|
|
134
|
+
expect(validateResult.errors[0]).toBe(
|
|
135
|
+
'Por Favor, preencha o campo \'name\' corretamente antes de publicar'
|
|
136
|
+
)
|
|
137
|
+
done()
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
it('Valida NAME inexistente', done => {
|
|
141
|
+
elementpublish = {
|
|
142
|
+
organization: {
|
|
143
|
+
name: 'Meu Mini App'
|
|
144
|
+
},
|
|
145
|
+
title: 'Meu super mini app',
|
|
146
|
+
slug: 'com.amedigital.loja',
|
|
147
|
+
version: '1.0.0'
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
let validateResult = Validate(elementpublish)
|
|
151
|
+
expect(validateResult.isSuccess()).toBe(false) // espera o resultado
|
|
152
|
+
expect(validateResult.errors.length).toBe(1)
|
|
153
|
+
expect(validateResult.errors[0]).toBe(
|
|
154
|
+
'Por Favor, preencha o campo \'name\' (Utilize apenas caracteres maiusculo, minusculo e espaco. Ex: \'Meu Mini App\').'
|
|
155
|
+
)
|
|
156
|
+
done()
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
it('Valida tipo da Version', done => {
|
|
161
|
+
elementpublish = {
|
|
162
|
+
organization: {
|
|
163
|
+
name: 'Meu Mini App'
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
name: 'Izabella',
|
|
167
|
+
title: 'Meu super mini app',
|
|
168
|
+
slug: 'com.amedigital.loja',
|
|
169
|
+
version: 10
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
let validateResult = Validate(elementpublish)
|
|
173
|
+
expect(validateResult.isSuccess()).toBe(false) // espera o resultado
|
|
174
|
+
expect(validateResult.errors[0]).toBe(
|
|
175
|
+
'Por Favor, preencha o campo \'version\' (Utilize esse formato X.Y.Z. Ex: \'1.0.0\').'
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
done()
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
it('Json Correto', done => {
|
|
182
|
+
elementpublish = {
|
|
183
|
+
organization: {
|
|
184
|
+
name: 'Meu Mini App'
|
|
185
|
+
},
|
|
186
|
+
name: 'Izabella',
|
|
187
|
+
title: 'Meu super mini app',
|
|
188
|
+
slug: 'com.amedigital.loja',
|
|
189
|
+
version: '17.45.323'
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
let validateResult = Validate(elementpublish)
|
|
193
|
+
expect(validateResult.isSuccess()).toBe(true)
|
|
194
|
+
done()
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
describe('OnBoarding', () => {
|
|
198
|
+
|
|
199
|
+
it('Quando houver objeto para onboarding, validar com sucesso seus campos', done => {
|
|
200
|
+
elementpublish = {
|
|
201
|
+
organization: {
|
|
202
|
+
name: 'Meu Mini App'
|
|
203
|
+
},
|
|
204
|
+
name: 'Izabella',
|
|
205
|
+
title: 'Meu super mini app',
|
|
206
|
+
slug: 'com.amedigital.loja',
|
|
207
|
+
version: '17.45.323',
|
|
208
|
+
privacy: {
|
|
209
|
+
onBoarding: {
|
|
210
|
+
items: [
|
|
211
|
+
{
|
|
212
|
+
img: 'http://minha.url/da/imagem',
|
|
213
|
+
title: 'Meu titulo de Onboarding',
|
|
214
|
+
description: 'Minha descricao de Onboarding',
|
|
215
|
+
}
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
let validateResult = Validate(elementpublish)
|
|
222
|
+
expect(validateResult.isSuccess()).toBe(true)
|
|
223
|
+
done()
|
|
224
|
+
})
|
|
225
|
+
|
|
226
|
+
it('Quando houver objeto para onboarding, falhar na validacao quando faltar um campo', done => {
|
|
227
|
+
elementpublish = {
|
|
228
|
+
organization: {
|
|
229
|
+
name: 'Meu Mini App'
|
|
230
|
+
},
|
|
231
|
+
name: 'Izabella',
|
|
232
|
+
title: 'Meu super mini app',
|
|
233
|
+
slug: 'com.amedigital.loja',
|
|
234
|
+
version: '17.45.323',
|
|
235
|
+
privacy: {
|
|
236
|
+
onBoarding: {
|
|
237
|
+
items: [
|
|
238
|
+
{
|
|
239
|
+
img: 'http://minha.url/da/imagem',
|
|
240
|
+
title: 'Meu titulo de Onboarding',
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
img: 'http://minha.url/da/imagem2',
|
|
244
|
+
title: 'Meu titulo de Onboarding2',
|
|
245
|
+
description: 'Minha description'
|
|
246
|
+
}
|
|
247
|
+
]
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
let validateResult = Validate(elementpublish)
|
|
253
|
+
expect(validateResult.isSuccess()).toBe(false)
|
|
254
|
+
expect(validateResult.errors[0]).toMatch(/Um ou mais itens do objeto de "onBoarding" nao possui as propriedades {img, title, description}+/)
|
|
255
|
+
done()
|
|
256
|
+
})
|
|
257
|
+
|
|
258
|
+
it('Quando houver objeto para onboarding, falhar na validacao quando "onboarding.items" nao for um array', done => {
|
|
259
|
+
elementpublish = {
|
|
260
|
+
organization: {
|
|
261
|
+
name: 'Meu Mini App'
|
|
262
|
+
},
|
|
263
|
+
name: 'Izabella',
|
|
264
|
+
title: 'Meu super mini app',
|
|
265
|
+
slug: 'com.amedigital.loja',
|
|
266
|
+
version: '17.45.323',
|
|
267
|
+
privacy: {
|
|
268
|
+
onBoarding: {
|
|
269
|
+
items:
|
|
270
|
+
{
|
|
271
|
+
img: 'http://minha.url/da/imagem',
|
|
272
|
+
title: 'Meu titulo de Onboarding',
|
|
273
|
+
description: 'Minha descricao de Onboarding',
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
let validateResult = Validate(elementpublish)
|
|
280
|
+
expect(validateResult.isSuccess()).toBe(false)
|
|
281
|
+
expect(validateResult.errors[0]).toBe('Objeto de configuração "privacy.onBoarding.items" deve ser um array de {img, title, description}')
|
|
282
|
+
done()
|
|
283
|
+
})
|
|
284
|
+
|
|
285
|
+
it('Quando houver objeto para onboarding, falhar na validacao se a propriedade img nao for uma url', done => {
|
|
286
|
+
elementpublish = {
|
|
287
|
+
organization: {
|
|
288
|
+
name: 'Meu Mini App'
|
|
289
|
+
},
|
|
290
|
+
name: 'Izabella',
|
|
291
|
+
title: 'Meu super mini app',
|
|
292
|
+
slug: 'com.amedigital.loja',
|
|
293
|
+
version: '17.45.323',
|
|
294
|
+
privacy: {
|
|
295
|
+
onBoarding: {
|
|
296
|
+
items: [
|
|
297
|
+
{
|
|
298
|
+
img: 'foobar',
|
|
299
|
+
title: 'Meu titulo de Onboarding',
|
|
300
|
+
description: 'Minha descricao de Onboarding',
|
|
301
|
+
}
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
let validateResult = Validate(elementpublish)
|
|
308
|
+
expect(validateResult.isSuccess()).toBe(false)
|
|
309
|
+
expect(validateResult.errors[0]).toBe('onBoarding.Item[0] invalido. Atributo "img" nao eh uma URL: foobar')
|
|
310
|
+
done()
|
|
311
|
+
})
|
|
312
|
+
|
|
313
|
+
})
|