maestrano-connector-rails 1.3.1 → 1.3.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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/models/maestrano/connector/rails/concerns/complex_entity.rb +14 -0
- data/app/models/maestrano/connector/rails/concerns/entity.rb +8 -0
- data/app/models/maestrano/connector/rails/organization.rb +13 -0
- data/lib/generators/connector/templates/home.js +6 -1
- data/lib/generators/connector/templates/home_controller.rb +1 -0
- data/lib/generators/connector/templates/home_index.haml +27 -15
- data/lib/generators/connector/templates/layouts.haml +1 -0
- data/maestrano-connector-rails.gemspec +3 -3
- data/release_notes.md +5 -0
- data/spec/models/complex_entity_spec.rb +36 -0
- data/spec/models/entity_spec.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfff81420a6741ea4266fed785dce4f76c29c690
|
4
|
+
data.tar.gz: fdd3b60473284591c2eb525cc18c262e9d04d20b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7caeee0e3b32d1fb42b2003a2bcfbf8fc9b326f9839d0c4b538eca420f6b582ba38f106c6a6d1cd7328abed02642337443251de698024440d3334d936f1c15e1
|
7
|
+
data.tar.gz: 5ecc8fe7963ef79db58d4def70cca3bb709f9f585500d76b0179a410e1ddcc1a542792ffef94e87c6843b9633a1f70c5a6236bbccbd77308b86d813d47309510
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.2
|
@@ -30,6 +30,20 @@ module Maestrano::Connector::Rails::Concerns::ComplexEntity
|
|
30
30
|
def count_entities(entities)
|
31
31
|
entities.values.map(&:size).max
|
32
32
|
end
|
33
|
+
|
34
|
+
def public_connec_entity_name
|
35
|
+
public_name(formatted_connec_entities_names)
|
36
|
+
end
|
37
|
+
|
38
|
+
def public_external_entity_name
|
39
|
+
public_name(formatted_external_entities_names)
|
40
|
+
end
|
41
|
+
|
42
|
+
def public_name(formatted_names)
|
43
|
+
names = formatted_names.keys.map(&:pluralize)
|
44
|
+
return names.first.humanize if names.size == 1
|
45
|
+
(names[0..-2].join(', ') + " and #{names.last}").humanize
|
46
|
+
end
|
33
47
|
end
|
34
48
|
|
35
49
|
# input : {
|
@@ -134,6 +134,14 @@ module Maestrano::Connector::Rails::Concerns::Entity
|
|
134
134
|
def count_entities(entities)
|
135
135
|
entities.size
|
136
136
|
end
|
137
|
+
|
138
|
+
def public_connec_entity_name
|
139
|
+
connec_entity_name.pluralize
|
140
|
+
end
|
141
|
+
|
142
|
+
def public_external_entity_name
|
143
|
+
external_entity_name.pluralize
|
144
|
+
end
|
137
145
|
end
|
138
146
|
|
139
147
|
# ==============================================
|
@@ -44,6 +44,19 @@ module Maestrano::Connector::Rails
|
|
44
44
|
#===================================
|
45
45
|
serialize :synchronized_entities
|
46
46
|
|
47
|
+
def displayable_synchronized_entities
|
48
|
+
result = {}
|
49
|
+
synchronized_entities.each do |entity, boolean|
|
50
|
+
begin
|
51
|
+
clazz = "Entities::#{entity.to_s.titleize.split.join}".constantize
|
52
|
+
rescue
|
53
|
+
next
|
54
|
+
end
|
55
|
+
result[entity] = {value: boolean, connec_name: clazz.public_connec_entity_name, external_name: clazz.public_external_entity_name}
|
56
|
+
end
|
57
|
+
result
|
58
|
+
end
|
59
|
+
|
47
60
|
def add_member(user)
|
48
61
|
user_organization_rels.create(user: user) if tenant == user.tenant && !member?(user)
|
49
62
|
end
|
@@ -8,4 +8,9 @@ function historicalDataDisplay()
|
|
8
8
|
document.getElementById('historical-data-display-unchecked').style.display = 'block';
|
9
9
|
document.getElementById('historical-data-display-checked').style.display = 'none';
|
10
10
|
}
|
11
|
-
}
|
11
|
+
}
|
12
|
+
|
13
|
+
|
14
|
+
$(function () {
|
15
|
+
$('[data-toggle="tooltip"]').tooltip()
|
16
|
+
})
|
@@ -42,35 +42,47 @@
|
|
42
42
|
.row.link-step{class: "#{(@organization.sync_enabled && @organization.synchronized_entities.values.any?) ? 'done' : 'todo'}"}
|
43
43
|
= form_tag home_update_path(id: @organization.id), method: :put do
|
44
44
|
.col-md-1.text-center.link-step-number
|
45
|
-
%span.badge.link-step-badge
|
46
|
-
2
|
45
|
+
%span.badge.link-step-badge 2
|
47
46
|
.col-md-9.link-step-description
|
48
|
-
%h
|
49
|
-
|
47
|
+
%h You can customize which entities are synchronized by the connector:
|
48
|
+
.spacer1
|
49
|
+
.row
|
50
|
+
.col-md-11.col-md-offset-1.center
|
51
|
+
.col-md-4.col-md-offset-1
|
52
|
+
ApplicationName wording
|
53
|
+
.col-md-4
|
54
|
+
Universal wording
|
50
55
|
.spacer1
|
51
56
|
.row
|
52
57
|
.col-md-11.col-md-offset-1
|
53
|
-
- @
|
58
|
+
- @displayable_synchronized_entities.each do |k, v|
|
54
59
|
.row.sync-entity
|
55
60
|
.col-md-1.link-step-action
|
56
|
-
%input{type: "checkbox", id: "#{k}", name: "#{k}", checked: v}
|
57
|
-
.col-md-
|
58
|
-
|
59
|
-
|
60
|
-
.col-md-
|
61
|
+
%input{type: "checkbox", id: "#{k}", name: "#{k}", checked: v[:value]}
|
62
|
+
%label.col-md-8{:for => "#{k}", style: 'padding-top: 5px;'}
|
63
|
+
.col-md-6
|
64
|
+
#{v[:external_name]}
|
65
|
+
.col-md-6
|
66
|
+
#{v[:connec_name]}
|
67
|
+
-if is_admin
|
68
|
+
.col-md-3.text-right
|
61
69
|
- if v && @organization.oauth_uid && @organization.sync_enabled
|
62
|
-
= link_to
|
70
|
+
= link_to 'Force a synchronization', home_synchronize_path(opts: {only_entities: [k.to_s]}), method: :post, class: 'btn btn-warning btn-sm', title: "Force a synchronization for #{v[:external_name]} only", 'data-toggle' => 'tooltip', 'data-placement' => 'right'
|
71
|
+
|
72
|
+
.spacer2
|
73
|
+
.row
|
74
|
+
%h Chose whether to synchronize your historical data:
|
63
75
|
.spacer1
|
64
76
|
.row
|
65
|
-
.col-md-4
|
77
|
+
.col-md-4.col-md-offset-1
|
66
78
|
%label{:for => 'historical-data'} Synchronize my historical data
|
67
|
-
.col-md-
|
79
|
+
.col-md-1
|
68
80
|
%input{type: 'checkbox', id: 'historical-data', name: 'historical-data', checked: @organization.historical_data, onchange: 'historicalDataDisplay();', disabled: @organization.historical_data}
|
69
81
|
.col-md-6
|
70
82
|
%small#historical-data-display-unchecked{style: "display: #{@organization.historical_data ? 'none' : 'block'}"} Only data created after #{(@organization.date_filtering_limit && @organization.date_filtering_limit.utc || Time.now.utc).to_formatted_s(:long_ordinal)} will be synchronized
|
71
83
|
%small#historical-data-display-checked{style: "display: #{!@organization.historical_data ? 'none' : 'block'}"}
|
72
|
-
Synchronizing your historical data will share all data
|
73
|
-
|
84
|
+
Synchronizing your historical data will share all data in ApplicationName. This action is not reversible. Want to know more? Check #{link_to 'here', 'https://maestrano.atlassian.net/wiki/display/UKB/How+Connec%21+manages+Historical+Data+Sharing'}
|
85
|
+
|
74
86
|
.spacer1
|
75
87
|
.row
|
76
88
|
.col-md-2.col-md-offset-10.text-center.link-step-action
|
@@ -6,6 +6,7 @@
|
|
6
6
|
%title ApplicationName Connector
|
7
7
|
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
|
8
8
|
= javascript_include_tag 'application', 'data-turbolinks-track' => true
|
9
|
+
%script{src: 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js', integrity: 'sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa', crossorigin: 'anonymous'}
|
9
10
|
= csrf_meta_tags
|
10
11
|
%body
|
11
12
|
.navbar.navbar-fixed-top.navbar-inverse
|
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: maestrano-connector-rails 1.3.
|
5
|
+
# stub: maestrano-connector-rails 1.3.2 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "maestrano-connector-rails"
|
9
|
-
s.version = "1.3.
|
9
|
+
s.version = "1.3.2"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Pierre Berard"]
|
14
|
-
s.date = "2016-07-
|
14
|
+
s.date = "2016-07-27"
|
15
15
|
s.description = "Maestrano is the next generation marketplace for SME applications. See https://maestrano.com for details."
|
16
16
|
s.email = "pierre.berard@maestrano.com"
|
17
17
|
s.executables = ["rails"]
|
data/release_notes.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 1.3.1
|
2
|
+
|
3
|
+
### Fixes
|
4
|
+
* Fix method in organization class that caused issue with authentication
|
5
|
+
|
1
6
|
## 1.3.0
|
2
7
|
* Methods `create_external_entity` and `update_external_entity` should now returns the created/updated entity
|
3
8
|
* Home page should now include a link populated from `external.rb` to create an account
|
@@ -22,6 +22,42 @@ describe Maestrano::Connector::Rails::ComplexEntity do
|
|
22
22
|
expect(subject.count_entities(entities)).to eql(39)
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
describe 'public_connec_entity_name' do
|
27
|
+
it 'calls public name' do
|
28
|
+
allow(subject).to receive(:formatted_connec_entities_names).and_return(a: 2)
|
29
|
+
expect(subject).to receive(:public_name).with(a: 2)
|
30
|
+
subject.public_connec_entity_name
|
31
|
+
end
|
32
|
+
end
|
33
|
+
describe 'public_external_entity_name' do
|
34
|
+
it 'calls public name' do
|
35
|
+
allow(subject).to receive(:formatted_external_entities_names).and_return(a: 2)
|
36
|
+
expect(subject).to receive(:public_name).with(a: 2)
|
37
|
+
subject.public_external_entity_name
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
describe 'public_name' do
|
43
|
+
context 'when one entity' do
|
44
|
+
it 'returns the pluralized entity name' do
|
45
|
+
expect(subject.public_name({'sales_order' => 'Sales order'})).to eql('Sales orders')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when two entities' do
|
50
|
+
it 'returns the pluralized entity names separeted by a and' do
|
51
|
+
expect(subject.public_name({'Sales order' => 'Sales order', 'Purchase order' => 'Purchase order'})).to eql('Sales orders and purchase orders')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when more than two' do
|
56
|
+
it 'returns the pluralized entity names separeted by commas and a and' do
|
57
|
+
expect(subject.public_name({'Sales order' => 'Sales order', 'Purchase order' => 'Purchase order', 'Order' => 'Order'})).to eql('Sales orders, purchase orders and orders')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
25
61
|
end
|
26
62
|
|
27
63
|
describe 'instance methods' do
|
data/spec/models/entity_spec.rb
CHANGED
@@ -116,6 +116,20 @@ describe Maestrano::Connector::Rails::Entity do
|
|
116
116
|
expect(subject.count_entities([*1..27])).to eql(27)
|
117
117
|
end
|
118
118
|
end
|
119
|
+
|
120
|
+
describe 'public_connec_entity_name' do
|
121
|
+
it 'returns the connec_entity_name' do
|
122
|
+
allow(subject).to receive(:connec_entity_name).and_return('tree')
|
123
|
+
expect(subject.public_connec_entity_name).to eql('trees')
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe 'public_external_entity_name' do
|
128
|
+
it 'returns the external_entity_name' do
|
129
|
+
allow(subject).to receive(:external_entity_name).and_return('tree')
|
130
|
+
expect(subject.public_external_entity_name).to eql('trees')
|
131
|
+
end
|
132
|
+
end
|
119
133
|
end
|
120
134
|
|
121
135
|
describe 'instance methods' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maestrano-connector-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pierre Berard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|