Skip to content

Commit 9d1cad1

Browse files
Update tests
1 parent 1271e23 commit 9d1cad1

3 files changed

Lines changed: 39 additions & 18 deletions

File tree

tests/configuration/test_advanced.py

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -192,20 +192,23 @@ def test_advanced_magnetic_settings(generate_structure_data):
192192
MagnetizationConfigurationSettingsModel,
193193
MagnetizationConfigurationSettingsPanel,
194194
)
195+
from aiidalab_qe.utils import fetch_pseudo_family_by_label
195196

196197
model = MagnetizationConfigurationSettingsModel()
197198
magnetic = MagnetizationConfigurationSettingsPanel(model=model)
198-
magnetic.render()
199199

200-
model.family = "SSSP/1.3/PBE/efficiency"
200+
pseudo_family = fetch_pseudo_family_by_label("SSSP/1.3/PBE/efficiency")
201201

202202
structure = generate_structure_data(name="LiCoO2")
203203
model.input_structure = structure
204-
model._update_default_moments()
204+
model.spin_type = "collinear"
205+
model.dictionary = {
206+
kind.name: pseudo_family.get_pseudo(kind.symbol).uuid
207+
for kind in structure.kinds
208+
}
209+
210+
magnetic.render()
205211

206-
# The sssp fixture sets the number of valence electrons to 4 for all electrons. Here, we are only
207-
# testing that the correct logic is applied, i.e., 0.1 * number of electrons for elements with
208-
# default magnetic moment 0.
209212
assert model._defaults["moments"] == {"Li": 0.4, "Co": 5, "O": 0.4}
210213

211214
structure = StructureData(
@@ -215,14 +218,31 @@ def test_advanced_magnetic_settings(generate_structure_data):
215218
[1.923685, 1.110640, 3.141364],
216219
]
217220
)
218-
structure.append_atom(position=(0.0, 0.0, 0.0), symbols="Ni", name="Ni1")
219221
structure.append_atom(
220-
position=(1.923685, 1.110640, 0.785341), symbols="Ni", name="Ni2"
222+
position=(0.0, 0.0, 0.0),
223+
symbols="Ni",
224+
name="Ni1",
225+
)
226+
structure.append_atom(
227+
position=(1.923685, 1.110640, 0.785341),
228+
symbols="Ni",
229+
name="Ni2",
230+
)
231+
structure.append_atom(
232+
position=(1.923685, 0.0, 2.356204),
233+
symbols="O",
234+
name="O1",
235+
)
236+
structure.append_atom(
237+
position=(1.923685, 0.0, 0.785341),
238+
symbols="O",
239+
name="O2",
221240
)
222-
structure.append_atom(position=(1.923685, 0.0, 2.356204), symbols="O", name="O1")
223-
structure.append_atom(position=(1.923685, 0.0, 0.785341), symbols="O", name="O2")
224241

225242
model.input_structure = structure
226-
model._update_default_moments()
243+
model.dictionary = {
244+
kind.name: pseudo_family.get_pseudo(kind.symbol).uuid
245+
for kind in structure.kinds
246+
}
227247

228248
assert model._defaults["moments"] == {"O1": 0.4, "O2": 0.4, "Ni1": 5, "Ni2": 5}

tests/conftest.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"Si",
2121
"Co",
2222
"Mo",
23+
"Ni",
2324
]
2425

2526

@@ -308,11 +309,11 @@ def pseudodojo(generate_upf_data_for_session):
308309
def generate_upf_data():
309310
"""Return a `UpfData` instance for the given element a file for which should exist in `tests/fixtures/pseudos`."""
310311

311-
def _generate_upf_data(element, filename=None, perturb=False):
312+
def _generate_upf_data(element, filename=None, z_valence=4):
312313
"""Return `UpfData` node."""
313314
from aiida_pseudo.data.pseudo import UpfData
314315

315-
z_valence = 5.0 if perturb else 4.0
316+
z_valence = str(float(z_valence))
316317
content = f'<UPF version="2.0.1"><PP_HEADER\nelement="{element}"\nz_valence="{z_valence}"\n/></UPF>\n'
317318
stream = io.BytesIO(content.encode("utf-8"))
318319

tests/test_pseudo.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def test_pseudos_settings(generate_structure_data, generate_upf_data):
211211

212212
# Test reset from uploaded state
213213
uploader: PseudoUploadWidget = pseudos.setter_widget.children[1]
214-
new_O_pseudo = generate_upf_data("O", "O_new.upf", perturb=True)
214+
new_O_pseudo = generate_upf_data("O", "O_new.upf", z_valence=5)
215215
uploader._on_file_upload(
216216
{
217217
"new": {
@@ -290,7 +290,7 @@ def test_pseudo_upload_widget(generate_upf_data):
290290
assert "Identical pseudo" in w.message
291291

292292
# Check different content but same filename is rejected
293-
different_content_same_filename = generate_upf_data("O", "O.upf", perturb=True)
293+
different_content_same_filename = generate_upf_data("O", "O.upf", z_valence=6)
294294
w._on_file_upload(
295295
{
296296
"new": {
@@ -319,11 +319,11 @@ def test_pseudo_upload_widget(generate_upf_data):
319319
assert "not a valid UPF file" in w.message
320320

321321
# Check valid pseudo is accepted
322-
valid = generate_upf_data("O", "O_new.upf", perturb=True)
322+
valid = generate_upf_data("O", "O_valid.upf", z_valence=7)
323323
w._on_file_upload(
324324
{
325325
"new": {
326-
"O_new.upf": {
326+
"O_valid.upf": {
327327
"content": bytes(
328328
valid.get_content(),
329329
encoding="utf-8",
@@ -332,5 +332,5 @@ def test_pseudo_upload_widget(generate_upf_data):
332332
},
333333
}
334334
)
335-
assert w.pseudo.filename == "O_new.upf"
335+
assert w.pseudo.filename == "O_valid.upf"
336336
assert "uploaded successfully" in w.message

0 commit comments

Comments
 (0)