Skip to content

Commit

Permalink
Add testing SinglePoint.generate_task method
Browse files Browse the repository at this point in the history
  • Loading branch information
JosePizarro3 committed Sep 18, 2024
1 parent 889238f commit 5059c3c
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 5 deletions.
14 changes: 9 additions & 5 deletions src/nomad_simulations/schema_packages/workflow/single_point.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,25 +47,29 @@ class SinglePoint(SimulationWorkflow):
""",
)

def generate_task(self) -> Task:
def generate_task(self, archive: 'EntryArchive', logger: 'BoundLogger') -> Task:
"""
Generates the `Task` section for the `SinglePoint` workflow with their `inputs` and `outputs`.
Returns:
Task: The generated `Task` section.
"""
# Populate `_input_systems`, `_input_methods` and `_outputs`
self._resolve_inputs_outputs_from_archive(archive=archive, logger=logger)

# Generate the `Task` section
task = Task()
if self._input_systems is not None and len(self._input_systems) > 0:
if self._input_systems:
task.m_add_sub_section(
Task.inputs,
Link(name='Input Model System', section=self._input_systems[0]),
)
if self._input_methods is not None and len(self._input_methods) > 0:
if self._input_methods:
task.m_add_sub_section(
Task.inputs,
Link(name='Input Model Method', section=self._input_methods[0]),
)
if self._outputs is not None and len(self._outputs) > 0:
if self._outputs:
task.m_add_sub_section(
Task.outputs,
Link(name='Output Data', section=self._outputs[-1]),
Expand Down Expand Up @@ -95,7 +99,7 @@ def normalize(self, archive: 'EntryArchive', logger: 'BoundLogger') -> None:

# Generate the `tasks` section if this does not exist
if not self.tasks:
task = self.generate_task()
task = self.generate_task(archive=archive, logger=logger)
self.tasks.append(task)

# Resolve `n_scf_steps`
Expand Down
100 changes: 100 additions & 0 deletions tests/workflow/test_single_point.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#
# Copyright The NOMAD Authors.
#
# This file is part of NOMAD. See https://nomad-lab.eu for further info.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

from typing import Optional

import pytest
from nomad.datamodel import EntryArchive
from nomad.datamodel.metainfo.workflow import Link, Task, Workflow

from nomad_simulations.schema_packages.model_method import BaseModelMethod, ModelMethod
from nomad_simulations.schema_packages.model_system import ModelSystem
from nomad_simulations.schema_packages.outputs import Outputs
from nomad_simulations.schema_packages.workflow import SinglePoint

from ..conftest import generate_simulation
from . import logger


class TestSinglePoint:
@pytest.mark.parametrize(
'model_system, model_method, outputs, result',
[
# empty sections in archive.data
(None, None, None, Task()),
# only one section in archive.data
(ModelSystem(), None, None, Task()),
# another section in archive.data
(None, ModelMethod(), None, Task()),
# only two sections in archive.data
(ModelSystem(), ModelMethod(), None, Task()),
# all sections in archive.data
(
ModelSystem(),
ModelMethod(),
Outputs(),
Task(
inputs=[
Link(name='Input Model System', section=ModelSystem()),
Link(name='Input Model Method', section=ModelMethod()),
],
outputs=[
Link(name='Output Data', section=Outputs()),
],
),
),
],
)
def test_generate_task(
self,
model_system: Optional[ModelSystem],
model_method: Optional[ModelMethod],
outputs: Optional[Outputs],
result: Task,
):
"""
Test the `generate_task` method of the `SinglePoint` section.
"""
archive = EntryArchive()
simulation = generate_simulation(
model_system=model_system, model_method=model_method, outputs=outputs
)
archive.data = simulation
workflow = SinglePoint()
archive.workflow2 = workflow

single_point_task = workflow.generate_task(archive=archive, logger=logger)
if not result.inputs:
assert isinstance(single_point_task, Task)
assert not single_point_task.inputs and not single_point_task.outputs
else:
assert single_point_task.inputs[0].name == result.inputs[0].name
assert single_point_task.inputs[1].name == result.inputs[1].name
assert single_point_task.outputs[0].name == result.outputs[0].name

def test_resolve_n_scf_steps():
"""
Test the `resolve_n_scf_steps` method of the `SinglePoint` section.
"""
assert True

def test_normalize():
"""
Test the `normalize` method of the `SinglePoint` section.
"""
assert True

1 comment on commit 5059c3c

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
src/nomad_simulations
   __init__.py4250%3–4
   _version.py11282%5–6
src/nomad_simulations/schema_packages
   __init__.py15287%57–59
   atoms_state.py1902189%31–33, 219–222, 246, 301–302, 370–371, 373, 555, 567–568, 629–633, 648–652, 659
   basis_set.py2402888%8–9, 122–133, 172–185, 208, 391–395, 417–418, 462–465, 584, 615, 617
   general.py89891%22–25, 139, 203, 313–314, 324
   model_method.py2657771%28–30, 189–192, 195–202, 294–295, 315, 336–357, 373–399, 402–419, 773, 784, 826–833, 871, 890, 970, 1027, 1102, 1216
   model_system.py3002392%43–45, 382, 577–580, 627–634, 808–809, 1030–1034, 1040–1041, 1049–1050, 1055, 1078
   numerical_settings.py2596176%30–32, 235, 237–238, 241–244, 248–249, 256–259, 268–271, 275–278, 280–283, 288–291, 297–300, 487–514, 589, 624–627, 651, 654, 699, 701–704, 708, 712, 759, 763–784, 839–840, 907
   outputs.py1201092%27–28, 270–273, 313–316, 341, 343, 380, 399
   physical_property.py102793%38–40, 220, 349–351
   variables.py861286%26–28, 116, 139, 163, 185, 207, 229, 251, 274, 294
src/nomad_simulations/schema_packages/properties
   band_gap.py51590%26–28, 153–154
   band_structure.py1232580%27–29, 250–283, 296, 303, 339–340, 343, 390–391, 396
   energies.py42979%25–27, 54, 75, 100, 121, 137, 152
   fermi_surface.py17476%25–27, 58
   forces.py22673%26–28, 55, 75, 98
   greens_function.py991387%25–27, 228–229, 232, 253–254, 257, 278–279, 282, 418
   hopping_matrix.py29583%25–27, 76, 112
   permittivity.py48883%25–27, 115–123
   spectral_profile.py26012851%27–29, 75–78, 113–116, 217–318, 374–386, 411–414, 434, 439–442, 484–520, 544, 591–594, 610–611, 616–622
   thermodynamics.py752764%25–27, 53, 74, 90, 99, 108, 119, 128, 155, 165, 175, 190–192, 195, 211, 231–233, 236, 252, 272–274, 277
src/nomad_simulations/schema_packages/utils
   utils.py711579%27–32, 86–95, 104–105, 110, 113
src/nomad_simulations/schema_packages/workflow
   base_workflows.py56395%23–24, 169
   dft_plus_tb.py513629%23–24, 80–92, 98–119, 130–136, 139–166
   single_point.py371657%26–27, 86–91, 94–106
TOTAL267655379% 

Tests Skipped Failures Errors Time
436 0 💤 2 ❌ 0 🔥 4.191s ⏱️

Please sign in to comment.