foreman_templates 8.0.0 → 9.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/views/template_syncs/index.html.erb +6 -2
- data/lib/foreman_templates/version.rb +1 -1
- data/webpack/__mocks__/foremanReact/components/Layout/LayoutSelectors.js +4 -0
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/NewTemplateSyncForm.js +19 -1
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/index.js +4 -0
- data/webpack/components/TemplateSyncResult/components/SyncResultList.js +2 -2
- data/webpack/components/TemplateSyncResult/components/SyncedTemplate/__snapshots__/helpers.test.js.snap +37 -0
- data/webpack/components/TemplateSyncResult/components/SyncedTemplate/helpers.js +3 -3
- data/webpack/components/TemplateSyncResult/components/SyncedTemplate/helpers.test.js +21 -0
- data/webpack/components/TemplateSyncResult/components/__tests__/__snapshots__/SyncResultList.test.js.snap +5 -5
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20a8db347037219c9d8b4c09906b703e7c9370a1c5fd9775ce7d2261f82f690f
|
4
|
+
data.tar.gz: 5bea2c74fb7d677dca8d203607ef51ade2de42e26b8e458c739e80240c3cd7bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40eab594f513b94c2deec58e35c4f03030379598db6a482bc201838b227bcfafd6f85e5c16eefab830da3d4950109b09d67a9a9032971a7059a1fcb87f3b0fee
|
7
|
+
data.tar.gz: 4ca1502b153c698da0461087a1e8976ac1429def1d5532012639abf5724a6c010682161b0c1d8606f6d21eebd9df997dc0e1288abc4f3638f60edbd37124666b
|
@@ -1,5 +1,9 @@
|
|
1
|
-
|
2
|
-
<%=
|
1
|
+
<% content_for(:javascripts) do %>
|
2
|
+
<%= webpacked_plugins_js_for :foreman_templates %>
|
3
|
+
<% end %>
|
4
|
+
<% content_for(:stylesheets) do %>
|
5
|
+
<%= webpacked_plugins_css_for :foreman_templates %>
|
6
|
+
<% end %>
|
3
7
|
|
4
8
|
<div id="foreman-templates"/>
|
5
9
|
|
data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/NewTemplateSyncForm.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import PropTypes from 'prop-types';
|
3
|
+
import { compose } from 'redux';
|
3
4
|
|
4
5
|
import ForemanForm from 'foremanReact/components/common/forms/ForemanForm';
|
5
6
|
import * as Yup from 'yup';
|
@@ -96,8 +97,20 @@ class NewTemplateSyncForm extends React.Component {
|
|
96
97
|
importUrl,
|
97
98
|
exportUrl,
|
98
99
|
initialValues,
|
100
|
+
currentLocation,
|
101
|
+
currentOrganization,
|
99
102
|
} = this.props;
|
100
103
|
|
104
|
+
const addTaxParams = (key, currentTax) => params => {
|
105
|
+
if (currentTax.id) {
|
106
|
+
params[key] = [currentTax.id];
|
107
|
+
}
|
108
|
+
return params;
|
109
|
+
};
|
110
|
+
|
111
|
+
const addOrgParams = addTaxParams('organization_ids', currentOrganization);
|
112
|
+
const addLocParams = addTaxParams('location_ids', currentLocation);
|
113
|
+
|
101
114
|
const resetToDefault = (fieldName, fieldValue) => resetFn =>
|
102
115
|
resetFn(fieldName, fieldValue);
|
103
116
|
|
@@ -107,7 +120,10 @@ class NewTemplateSyncForm extends React.Component {
|
|
107
120
|
const url = this.state.syncType === 'import' ? importUrl : exportUrl;
|
108
121
|
return submitForm({
|
109
122
|
url,
|
110
|
-
values:
|
123
|
+
values: compose(
|
124
|
+
addLocParams,
|
125
|
+
addOrgParams
|
126
|
+
)(values[this.state.syncType]),
|
111
127
|
message: `Templates were ${this.state.syncType}ed.`,
|
112
128
|
item: 'TemplateSync',
|
113
129
|
}).then(args => {
|
@@ -150,6 +166,8 @@ NewTemplateSyncForm.propTypes = {
|
|
150
166
|
exportUrl: PropTypes.string.isRequired,
|
151
167
|
importUrl: PropTypes.string.isRequired,
|
152
168
|
submitForm: PropTypes.func.isRequired,
|
169
|
+
currentLocation: PropTypes.object.isRequired,
|
170
|
+
currentOrganization: PropTypes.object.isRequired,
|
153
171
|
};
|
154
172
|
|
155
173
|
NewTemplateSyncForm.defaultProps = {
|
@@ -2,6 +2,8 @@ import { connect } from 'react-redux';
|
|
2
2
|
|
3
3
|
import * as FormActions from 'foremanReact/redux/actions/common/forms';
|
4
4
|
|
5
|
+
import { selectLayout } from 'foremanReact/components/Layout/LayoutSelectors';
|
6
|
+
|
5
7
|
import NewTemplateSyncForm from './NewTemplateSyncForm';
|
6
8
|
|
7
9
|
import {
|
@@ -22,6 +24,8 @@ const mapStateToProps = (state, ownProps) => {
|
|
22
24
|
initialValues: { ...initialFormValues },
|
23
25
|
importSettings,
|
24
26
|
exportSettings,
|
27
|
+
currentOrganization: selectLayout(state).currentOrganization,
|
28
|
+
currentLocation: selectLayout(state).currentLocation,
|
25
29
|
};
|
26
30
|
};
|
27
31
|
|
@@ -11,10 +11,10 @@ import ListViewHeader from './ListViewHeader';
|
|
11
11
|
const SyncResultList = ({ pagination, pageChange, templates, editPaths }) => (
|
12
12
|
<ListView>
|
13
13
|
<ListViewHeader />
|
14
|
-
{templatesPage(templates, pagination).map(template => (
|
14
|
+
{templatesPage(templates, pagination).map((template, idx) => (
|
15
15
|
<SyncedTemplate
|
16
16
|
template={template}
|
17
|
-
key={
|
17
|
+
key={idx}
|
18
18
|
editPath={editPaths[template.className]}
|
19
19
|
/>
|
20
20
|
))}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`expandableContent should return additional error 1`] = `
|
4
|
+
<ul>
|
5
|
+
<li>
|
6
|
+
These are additional errors
|
7
|
+
</li>
|
8
|
+
</ul>
|
9
|
+
`;
|
10
|
+
|
11
|
+
exports[`expandableContent should return additional info 1`] = `
|
12
|
+
<ul>
|
13
|
+
<li>
|
14
|
+
This is additional info
|
15
|
+
</li>
|
16
|
+
</ul>
|
17
|
+
`;
|
18
|
+
|
19
|
+
exports[`expandableContent should return attribute errors 1`] = `
|
20
|
+
<ul>
|
21
|
+
<li>
|
22
|
+
could not be processed
|
23
|
+
</li>
|
24
|
+
<li>
|
25
|
+
name: can't be blank
|
26
|
+
</li>
|
27
|
+
<li>
|
28
|
+
name: has invalid format
|
29
|
+
</li>
|
30
|
+
</ul>
|
31
|
+
`;
|
32
|
+
|
33
|
+
exports[`expandableContent should return no errors 1`] = `
|
34
|
+
<span>
|
35
|
+
There were no errors.
|
36
|
+
</span>
|
37
|
+
`;
|
@@ -114,7 +114,7 @@ export const expandableContent = template => {
|
|
114
114
|
const aggregatedErrors = template => {
|
115
115
|
const err = { ...template.errors } || {};
|
116
116
|
if (template.additionalErrors) {
|
117
|
-
err.additional = template.additionalErrors;
|
117
|
+
err.additional = [template.additionalErrors];
|
118
118
|
}
|
119
119
|
|
120
120
|
return err;
|
@@ -123,14 +123,14 @@ const aggregatedErrors = template => {
|
|
123
123
|
const aggregatedMessages = template => {
|
124
124
|
const errors = aggregatedErrors(template);
|
125
125
|
if (template.additionalInfo) {
|
126
|
-
errors.info = template.additionalInfo;
|
126
|
+
errors.info = [template.additionalInfo];
|
127
127
|
}
|
128
128
|
return errors;
|
129
129
|
};
|
130
130
|
|
131
131
|
const formatError = (key, value) => {
|
132
132
|
const omitKeys = ['base', 'additional', 'info'];
|
133
|
-
if (omitKeys.
|
133
|
+
if (omitKeys.includes(key)) {
|
134
134
|
return value;
|
135
135
|
}
|
136
136
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { testSelectorsSnapshotWithFixtures } from 'react-redux-test-utils';
|
2
|
+
|
3
|
+
import { expandableContent } from './helpers';
|
4
|
+
|
5
|
+
const fixtures = {
|
6
|
+
'should return no errors': () => expandableContent({}),
|
7
|
+
'should return additional info': () =>
|
8
|
+
expandableContent({ additionalInfo: 'This is additional info' }),
|
9
|
+
'should return additional error': () =>
|
10
|
+
expandableContent({ additionalErrors: 'These are additional errors' }),
|
11
|
+
'should return attribute errors': () =>
|
12
|
+
expandableContent({
|
13
|
+
errors: {
|
14
|
+
base: ['could not be processed'],
|
15
|
+
name: ["can't be blank", 'has invalid format'],
|
16
|
+
},
|
17
|
+
}),
|
18
|
+
};
|
19
|
+
|
20
|
+
describe('expandableContent', () =>
|
21
|
+
testSelectorsSnapshotWithFixtures(fixtures));
|
@@ -7,7 +7,7 @@ exports[`SyncResultList should render 1`] = `
|
|
7
7
|
<ListViewHeader />
|
8
8
|
<SyncedTemplate
|
9
9
|
editPath=""
|
10
|
-
key="
|
10
|
+
key="0"
|
11
11
|
template={
|
12
12
|
Object {
|
13
13
|
"additionalErrors": Array [
|
@@ -21,7 +21,7 @@ exports[`SyncResultList should render 1`] = `
|
|
21
21
|
/>
|
22
22
|
<SyncedTemplate
|
23
23
|
editPath=""
|
24
|
-
key="
|
24
|
+
key="1"
|
25
25
|
template={
|
26
26
|
Object {
|
27
27
|
"additionalErrors": null,
|
@@ -42,7 +42,7 @@ exports[`SyncResultList should render 1`] = `
|
|
42
42
|
/>
|
43
43
|
<SyncedTemplate
|
44
44
|
editPath=""
|
45
|
-
key="
|
45
|
+
key="2"
|
46
46
|
template={
|
47
47
|
Object {
|
48
48
|
"additionalErrors": null,
|
@@ -58,7 +58,7 @@ exports[`SyncResultList should render 1`] = `
|
|
58
58
|
/>
|
59
59
|
<SyncedTemplate
|
60
60
|
editPath=""
|
61
|
-
key="
|
61
|
+
key="3"
|
62
62
|
template={
|
63
63
|
Object {
|
64
64
|
"additionalErrors": "No \\"model\\" found in metadata",
|
@@ -70,7 +70,7 @@ exports[`SyncResultList should render 1`] = `
|
|
70
70
|
/>
|
71
71
|
<SyncedTemplate
|
72
72
|
editPath=""
|
73
|
-
key="
|
73
|
+
key="4"
|
74
74
|
template={
|
75
75
|
Object {
|
76
76
|
"additionalErrors": null,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_templates
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 9.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Sutcliffe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diffy
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- webpack/ForemanTemplates.js
|
98
98
|
- webpack/Routes.js
|
99
99
|
- webpack/__mocks__/foremanReact/common/helpers.js
|
100
|
+
- webpack/__mocks__/foremanReact/components/Layout/LayoutSelectors.js
|
100
101
|
- webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js
|
101
102
|
- webpack/__mocks__/foremanReact/components/common/forms/CommonForm.js
|
102
103
|
- webpack/__mocks__/foremanReact/components/common/forms/ForemanForm.js
|
@@ -164,7 +165,9 @@ files:
|
|
164
165
|
- webpack/components/TemplateSyncResult/components/SyncedTemplate/InfoItem.js
|
165
166
|
- webpack/components/TemplateSyncResult/components/SyncedTemplate/LinkInfoItem.js
|
166
167
|
- webpack/components/TemplateSyncResult/components/SyncedTemplate/StringInfoItem.js
|
168
|
+
- webpack/components/TemplateSyncResult/components/SyncedTemplate/__snapshots__/helpers.test.js.snap
|
167
169
|
- webpack/components/TemplateSyncResult/components/SyncedTemplate/helpers.js
|
170
|
+
- webpack/components/TemplateSyncResult/components/SyncedTemplate/helpers.test.js
|
168
171
|
- webpack/components/TemplateSyncResult/components/SyncedTemplate/index.js
|
169
172
|
- webpack/components/TemplateSyncResult/components/__tests__/SyncResultList.test.js
|
170
173
|
- webpack/components/TemplateSyncResult/components/__tests__/SyncedTemplate.test.js
|
@@ -195,8 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
198
|
- !ruby/object:Gem::Version
|
196
199
|
version: '0'
|
197
200
|
requirements: []
|
198
|
-
|
199
|
-
rubygems_version: 2.7.6.2
|
201
|
+
rubygems_version: 3.0.8
|
200
202
|
signing_key:
|
201
203
|
specification_version: 4
|
202
204
|
summary: Template-syncing engine for Foreman
|