(t *testing.T)
| 337 | } |
| 338 | |
| 339 | func TestUnsetConditionalFormat(t *testing.T) { |
| 340 | f := NewFile() |
| 341 | assert.NoError(t, f.SetCellValue("Sheet1", "A1", 7)) |
| 342 | assert.NoError(t, f.UnsetConditionalFormat("Sheet1", "A1:A10")) |
| 343 | format, err := f.NewConditionalStyle(&Style{Font: &Font{Color: "9A0511"}, Fill: Fill{Type: "pattern", Color: []string{"FEC7CE"}, Pattern: 1}}) |
| 344 | assert.NoError(t, err) |
| 345 | assert.NoError(t, f.SetConditionalFormat("Sheet1", "A1:A10", []ConditionalFormatOptions{{Type: "cell", Criteria: ">", Format: &format, Value: "6"}})) |
| 346 | assert.NoError(t, f.UnsetConditionalFormat("Sheet1", "A1:A10")) |
| 347 | // Test unset conditional format with invalid range |
| 348 | assert.Equal(t, f.UnsetConditionalFormat("Sheet1", "A"), newCellNameToCoordinatesError("A", newInvalidCellNameError("A"))) |
| 349 | // Test unset conditional format on not exists worksheet |
| 350 | assert.EqualError(t, f.UnsetConditionalFormat("SheetN", "A1:A10"), "sheet SheetN does not exist") |
| 351 | // Test unset conditional format with invalid sheet name |
| 352 | assert.Equal(t, ErrSheetNameInvalid, f.UnsetConditionalFormat("Sheet:1", "A1:A10")) |
| 353 | // Test unset conditional format from extLst |
| 354 | assert.NoError(t, f.SetConditionalFormat("Sheet1", "B1:B10", []ConditionalFormatOptions{{Type: "icon_set", IconStyle: "3Stars"}})) |
| 355 | assert.NoError(t, f.SetConditionalFormat("Sheet1", "C1:C10", []ConditionalFormatOptions{{Type: "icon_set", IconStyle: "5Boxes"}})) |
| 356 | condFmts, err := f.GetConditionalFormats("Sheet1") |
| 357 | assert.NoError(t, err) |
| 358 | assert.Len(t, condFmts, 2) |
| 359 | // Unset the first extLst conditional format |
| 360 | assert.NoError(t, f.UnsetConditionalFormat("Sheet1", "B1:B10")) |
| 361 | condFmts, err = f.GetConditionalFormats("Sheet1") |
| 362 | assert.NoError(t, err) |
| 363 | assert.Len(t, condFmts, 1) |
| 364 | assert.NotNil(t, condFmts["C1:C10"]) |
| 365 | // Unset the last extLst conditional format |
| 366 | assert.NoError(t, f.UnsetConditionalFormat("Sheet1", "C1:C10")) |
| 367 | condFmts, err = f.GetConditionalFormats("Sheet1") |
| 368 | assert.NoError(t, err) |
| 369 | assert.Len(t, condFmts, 0) |
| 370 | // Save spreadsheet by the given path |
| 371 | assert.NoError(t, f.SaveAs(filepath.Join("test", "TestUnsetConditionalFormat.xlsx"))) |
| 372 | // Test get and unset conditional format with invalid sqref value |
| 373 | f = NewFile() |
| 374 | ws, err := f.workSheetReader("Sheet1") |
| 375 | assert.NoError(t, err) |
| 376 | ws.ConditionalFormatting = []*xlsxConditionalFormatting{{SQRef: ""}} |
| 377 | _, err = f.GetConditionalFormats("Sheet1") |
| 378 | assert.Equal(t, ErrParameterRequired, err) |
| 379 | ws.ConditionalFormatting = []*xlsxConditionalFormatting{{SQRef: "A"}} |
| 380 | assert.Equal(t, newCellNameToCoordinatesError("A", newInvalidCellNameError("A")), f.UnsetConditionalFormat("Sheet1", "A1")) |
| 381 | // Test unset conditional formats with invalid extension list characters |
| 382 | ws.ExtLst = &xlsxExtLst{Ext: fmt.Sprintf(`<ext uri="%s"><x14:conditionalFormattings> |
| 383 | <x14:conditionalFormatting><xm:sqref>A</xm:sqref></x14:conditionalFormatting></x14:conditionalFormattings></ext>`, ExtURIConditionalFormattings)} |
| 384 | assert.Equal(t, f.UnsetConditionalFormat("Sheet1", "A1"), newCellNameToCoordinatesError("A", newInvalidCellNameError("A"))) |
| 385 | |
| 386 | t.Run("with_unordered_sqref", func(t *testing.T) { |
| 387 | f := NewFile() |
| 388 | condFmt := []ConditionalFormatOptions{{Type: "cell", Criteria: "greater than", Value: "6"}} |
| 389 | f.SetConditionalFormat("Sheet1", "A5:A10 A15:A20 A3:A4", condFmt) |
| 390 | assert.NoError(t, f.UnsetConditionalFormat("Sheet1", "A7")) |
| 391 | condFmts, err := f.GetConditionalFormats("Sheet1") |
| 392 | assert.NoError(t, err) |
| 393 | assert.Len(t, condFmts, 1) |
| 394 | assert.Equal(t, condFmt, condFmts["A3:A6 A8:A10 A15:A20"]) |
| 395 | }) |
| 396 |
nothing calls this directly
no test coverage detected