Skip to content

Commit

Permalink
error on existing name is better
Browse files Browse the repository at this point in the history
  • Loading branch information
zhenyagusev committed Dec 20, 2019
1 parent 225b16a commit 0c81758
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
8 changes: 3 additions & 5 deletions src/BookFx.Tests/Renders/BoxNameRenderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,16 @@ public class BoxNameRenderTests
.And.OnlyContain(x => x.Name == TheValidName && x.Address == range.Address));

[Fact]
public void NameRender_NameIsAlreadyExists_NameIsRedefined() =>
public void NameRender_NameIsAlreadyExists_Error() =>
Packer.OnSheet(excelSheet =>
{
excelSheet.Workbook.Names.Add(TheValidName, excelSheet.Cells[2, 2]);
var box = Make.Value().Name(TheValidName).Get;
var excelRange = excelSheet.Cells[1, 1];
box.NameRender()(excelRange);
var result = box.NameRender()(excelRange);
excelSheet.Workbook.Names.Should()
.HaveCount(1)
.And.OnlyContain(x => x.Name == TheValidName && x.Address == excelRange.Address);
result.IsValid.Should().BeFalse();
});

private static void Check(BoxCore box, Action<ExcelRange> assertion) =>
Expand Down
17 changes: 10 additions & 7 deletions src/BookFx/Renders/BoxNameRender.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,18 @@
internal static class BoxNameRender
{
public static Tee<ExcelRangeBase> NameRender(this BoxCore box) =>
excelRange =>
{
box.Name.ForEach(name =>
excelRange => box.Name.Match(
none: () => Valid(Unit()),
some: name =>
{
excelRange.Worksheet.Workbook.Names.Remove(name);
if (excelRange.Worksheet.Workbook.Names.ContainsKey(name))
{
return Errors.Book.BoxNameIsNotUnique(name);
}
excelRange.Worksheet.Workbook.Names.Add(name, excelRange);
});
return Unit();
};
return Valid(Unit());
});
}
}

0 comments on commit 0c81758

Please sign in to comment.