MCPcopy
hub / github.com/qax-os/excelize / TestDuplicateRow

Function TestDuplicateRow

rows_test.go:867–925  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

865}
866
867func 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))

Callers

nothing calls this directly

Calls 15

DuplicateRowToMethod · 0.95
SetDefinedNameMethod · 0.95
SetCellFormulaMethod · 0.95
SetCellValueMethod · 0.95
NewConditionalStyleMethod · 0.95
SetConditionalFormatMethod · 0.95
SetDropListMethod · 0.95
AddDataValidationMethod · 0.95
GetCellFormulaMethod · 0.95
GetCellValueMethod · 0.95
GetConditionalFormatsMethod · 0.95
GetDataValidationsMethod · 0.95

Tested by

no test coverage detected