(t *testing.T)
| 865 | } |
| 866 | |
| 867 | func TestDuplicateRow(t *testing.T) { |
| 868 | f := NewFile() |
| 869 | // Test duplicate row with invalid sheet name |
| 870 | assert.EqualError(t, f.DuplicateRowTo("Sheet:1", 1, 2), ErrSheetNameInvalid.Error()) |
| 871 | |
| 872 | f = NewFile() |
| 873 | assert.NoError(t, f.SetDefinedName(&DefinedName{ |
| 874 | Name: "Amount", |
| 875 | RefersTo: "Sheet1!$B$1", |
| 876 | })) |
| 877 | assert.NoError(t, f.SetCellFormula("Sheet1", "A1", "Amount+C1")) |
| 878 | assert.NoError(t, f.SetCellValue("Sheet1", "A10", "A10")) |
| 879 | |
| 880 | format, err := f.NewConditionalStyle(&Style{Font: &Font{Color: "9A0511"}, Fill: Fill{Type: "pattern", Color: []string{"FEC7CE"}, Pattern: 1}}) |
| 881 | assert.NoError(t, err) |
| 882 | |
| 883 | expected := []ConditionalFormatOptions{ |
| 884 | {Type: "cell", Criteria: "greater than", Format: &format, Value: "0"}, |
| 885 | } |
| 886 | assert.NoError(t, f.SetConditionalFormat("Sheet1", "A1", expected)) |
| 887 | |
| 888 | dv := NewDataValidation(true) |
| 889 | dv.Sqref = "A1" |
| 890 | assert.NoError(t, dv.SetDropList([]string{"1", "2", "3"})) |
| 891 | assert.NoError(t, f.AddDataValidation("Sheet1", dv)) |
| 892 | ws, ok := f.Sheet.Load("xl/worksheets/sheet1.xml") |
| 893 | assert.True(t, ok) |
| 894 | ws.(*xlsxWorksheet).DataValidations.DataValidation[0].Sqref = "A1" |
| 895 | |
| 896 | assert.NoError(t, f.DuplicateRowTo("Sheet1", 1, 10)) |
| 897 | formula, err := f.GetCellFormula("Sheet1", "A10") |
| 898 | assert.NoError(t, err) |
| 899 | assert.Equal(t, "Amount+C10", formula) |
| 900 | value, err := f.GetCellValue("Sheet1", "A11") |
| 901 | assert.NoError(t, err) |
| 902 | assert.Equal(t, "A10", value) |
| 903 | |
| 904 | cfs, err := f.GetConditionalFormats("Sheet1") |
| 905 | assert.NoError(t, err) |
| 906 | assert.Len(t, cfs, 2) |
| 907 | assert.Equal(t, expected, cfs["A10:A10"]) |
| 908 | |
| 909 | dvs, err := f.GetDataValidations("Sheet1") |
| 910 | assert.NoError(t, err) |
| 911 | assert.Len(t, dvs, 2) |
| 912 | assert.Equal(t, "A10:A10", dvs[1].Sqref) |
| 913 | |
| 914 | // Test duplicate data validation with row number exceeds maximum limit |
| 915 | assert.Equal(t, ErrMaxRows, f.duplicateDataValidations(ws.(*xlsxWorksheet), "Sheet1", 1, TotalRows+1)) |
| 916 | // Test duplicate data validation with invalid range reference |
| 917 | ws.(*xlsxWorksheet).DataValidations.DataValidation[0].Sqref = "A" |
| 918 | assert.Equal(t, newCellNameToCoordinatesError("A", newInvalidCellNameError("A")), f.duplicateDataValidations(ws.(*xlsxWorksheet), "Sheet1", 1, 10)) |
| 919 | |
| 920 | // Test duplicate conditional formatting with row number exceeds maximum limit |
| 921 | assert.Equal(t, ErrMaxRows, f.duplicateConditionalFormat(ws.(*xlsxWorksheet), "Sheet1", 1, TotalRows+1)) |
| 922 | // Test duplicate conditional formatting with invalid range reference |
| 923 | ws.(*xlsxWorksheet).ConditionalFormatting[0].SQRef = "A" |
| 924 | assert.Equal(t, newCellNameToCoordinatesError("A", newInvalidCellNameError("A")), f.duplicateConditionalFormat(ws.(*xlsxWorksheet), "Sheet1", 1, 10)) |
nothing calls this directly
no test coverage detected