Skip to content

Commit 7f4f2b6

Browse files
RobinLallierAxelRagobert
authored andcommitted
TEST: Duplicate a portfolio (closes #190)
1 parent 2b6c57b commit 7f4f2b6

File tree

5 files changed

+50
-11
lines changed

5 files changed

+50
-11
lines changed

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ source "https://rubygems.org"
22

33
gem "cucumber"
44
gem "cuprite"
5+
gem "rspec"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#language: fr
2+
3+
Fonctionnalité: Dupliquer un portfolio pour un usage privé
4+
5+
Contexte:
6+
7+
Soit "vitraux" le portfolio ouvert
8+
Soit le point de vue "Histoire des religions" rattaché au portfolio "vitraux"
9+
Soit le corpus "Vitraux - Dr. Krieger" rattaché au portfolio "vitraux"
10+
11+
Scénario: Dupliquer un portfolio
12+
13+
Soit l'utilisateur est connecté
14+
Quand on créé une copie du portfolio appelée "dupp-vitraux" avec le corpus "Vitraux - Dr. Krieger" et le point de vue "Histoire des religions"
15+
Alors le titre affiché est "DUPP-VITRAUX"
16+
Et un des corpus affichés est "Vitraux - Dr. Krieger"
17+
Et un des points de vue affichés est "Histoire des religions"

features/step_definitions/portfolio.rb

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
Capybara.run_server = false
55
Capybara.default_driver = :cuprite
66
Capybara.javascript_driver = :cuprite
7-
Capybara.app_host = "http://localhost:3000"
7+
Capybara.app_host = "http://vitraux.local:3000"
88
Capybara.default_max_wait_time = 10
99

1010
def getUUID(itemName)
@@ -48,6 +48,13 @@ def getUUID(itemName)
4848
# On the remote servers
4949
end
5050

51+
Soit("l'utilisateur est connecté") do
52+
find_link(href: '#login').click
53+
fill_in("Nom d'utilisateur", with: "alice")
54+
fill_in("Mot de passe", with: "whiterabbit")
55+
click_on('Confirmer')
56+
end
57+
5158
Soit("{string} le portfolio spécifié dans la configuration") do |portfolio|
5259
case portfolio
5360
when "vitraux"
@@ -110,6 +117,20 @@ def getUUID(itemName)
110117
click_on item
111118
end
112119

120+
def in_modal()
121+
f = find('.modal-content')
122+
end
123+
124+
Quand("on créé une copie du portfolio appelée {string} avec le corpus {string} et le point de vue {string}") do |name, corpus, viewpoint|
125+
click_button('alice')
126+
click_link('Dupliquer')
127+
in_modal.fill_in('copyName', with: name)
128+
in_modal.check(corpus)
129+
in_modal.check(viewpoint)
130+
in_modal.click_on('Valider')
131+
in_modal.click_on('Confirmer')
132+
end
133+
113134
# Outcomes
114135

115136
Alors("le titre affiché est {string}") do |portfolio|
@@ -139,4 +160,3 @@ def getUUID(itemName)
139160
Alors ("l'item {string} n'est pas affiché") do |item|
140161
expect(page).not_to have_content item
141162
end
142-

reverse-proxy/launcher.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
sudo sed -i '/^127.0.0.1 localhost/ s/$/ vitraux.local dupp-vitraux.local/' /etc/hosts

src/components/Duplication/Duplicator.jsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ class Duplicator extends Component {
2323
this.closeToast = this.closeToast.bind(this)
2424
this.addUserToEntity = this.addUserToEntity.bind(this)
2525
}
26-
26+
2727
handleClose() {
2828
this.setState({ showModal: false, showModalConfirmation: false });
2929
}
30-
30+
3131
handleShow() {
3232
this.setState({ showModal: true });
3333
}
@@ -133,22 +133,22 @@ class Duplicator extends Component {
133133
})
134134
}
135135

136-
render() {
136+
render() {
137137
let name = this.props.userConnected + '-' + this.props.portfolio
138138
let corpora = this.props.corpora.map((v, i) =>
139139
<div className='Modal-Group' key={v.id}>
140-
<input className='Modal-CheckBox Corpus' value={v.id} onChange={this.onChangeCheckBox} type="checkbox"/>
140+
<input name={v.id} className='Modal-CheckBox Corpus' value={v.id} onChange={this.onChangeCheckBox} type="checkbox"/>
141141
{v.id}
142142
</div>
143143
);
144144

145145
let viewpoints = this.props.viewpoints.map((v, i) =>
146146
<div className='Modal-Group' key={v.id}>
147-
<input className='Modal-CheckBox ViewPoint' value={v.id} onChange={this.onChangeCheckBox} type="checkbox"/>
147+
<input name={v.name} className='Modal-CheckBox ViewPoint' value={v.id} onChange={this.onChangeCheckBox} type="checkbox"/>
148148
{v.name}
149149
</div>
150150
);
151-
151+
152152

153153
return (
154154
<div>
@@ -175,7 +175,7 @@ class Duplicator extends Component {
175175
<Modal show={this.state.showModal}>
176176
<Modal.Body>
177177
<h3>Nom du portfolio</h3>
178-
<input type='text' className='Modal-Input form-control' defaultValue={name} placeholder='Nom du nouveau portfolio' id="portfolioDuplicatedName"/>
178+
<input type='text' name="copyName" className='Modal-Input form-control' defaultValue={name} placeholder='Nom du nouveau portfolio' id="portfolioDuplicatedName"/>
179179
<div className='Modal-Group Modal-Title'>
180180
<h3>Corpus</h3>
181181
<div className='Modal-Group'><input className='Modal-CheckBox checkCorpora' type="checkbox" onChange={this.onChangeCheckBox}/>Tout</div>
@@ -187,7 +187,7 @@ class Duplicator extends Component {
187187
<br/>
188188
<div className='Modal-Group Modal-Title'>
189189
<h3>Points de vue</h3>
190-
<div className='Modal-Group'><input className='Modal-CheckBox checkViewPoints' type="checkbox" onChange={this.onChangeCheckBox}/>Tout</div>
190+
<div className='Modal-Group'><input className='Modal-CheckBox checkViewPoints' name={name} type="checkbox" onChange={this.onChangeCheckBox}/>Tout</div>
191191
</div>
192192
<hr/>
193193
<div id="viewPointsList">
@@ -205,7 +205,7 @@ class Duplicator extends Component {
205205
</Modal>
206206
<Dropdown.Item eventKey="2" onClick={this.handleShow}>Dupliquer</Dropdown.Item>
207207
</div>
208-
208+
209209
)
210210
}
211211
}

0 commit comments

Comments
 (0)