def test_generate_project_daily_atomic_save_failure(mock_io, mock_fileutils, mock_yaml, mock_filesystem_loader, mock_jinja2_environment, mock_create_dir): """Tests that generate project daily succeeds.""" location = os.path.join('output', 'location') template_file = os.path.join('template', 'file.md') settings_file = os.path.join('settings', 'file.yml') mock_yaml.safe_load.return_value = {'vars': {'foo': 'bar', 'baz': 'qux'}, 'settings': {'weeks': 2, 'days': 2}} mock_fileutils.atomic_save = MagicMock(side_effect=OSError) mock_create_dir.return_value = 0 result = project.generate_project_daily(location, template_file, settings_file) assert 1 == result
def test_generate_project_daily_success(mock_io, mock_fileutils, mock_yaml, mock_filesystem_loader, mock_jinja2_environment, mock_create_dir): """Tests that generate project daily succeeds.""" location = os.path.join('output', 'location') template_file = os.path.join('template', 'file.md') settings_file = os.path.join('settings', 'file.yml') mock_yaml.safe_load.return_value = {'vars': {'foo': 'bar', 'baz': 'qux'}, 'settings': {'weeks': 2, 'days': 2}} mock_fileutils.atomic_save = MagicMock() mock_create_dir.return_value = 0 result = project.generate_project_daily(location, template_file, settings_file) assert 0 == result mock_jinja2_environment.assert_called_with(loader=mock_filesystem_loader.return_value, trim_blocks=True) mock_filesystem_loader.assert_called_with('template') mock_jinja2_environment.return_value.get_template.assert_called_with('file.md') expected_directory_calls = [ call(os.path.join(location, 'week01', 'day01')), call(os.path.join(location, 'week01', 'day02')), call(os.path.join(location, 'week02', 'day01')), call(os.path.join(location, 'week02', 'day02')), ] mock_create_dir.assert_has_calls(expected_directory_calls, any_order=True) mock_fileutils_enter = mock_fileutils.atomic_save.return_value.__enter__.return_value mock_render = mock_jinja2_environment.return_value.get_template.return_value.render.return_value mock_fileutils_enter.writelines.assert_called_with(mock_render.encode('utf-8'))