Skip to content

Commit

Permalink
fix: border for merged cell (#3506)
Browse files Browse the repository at this point in the history
  • Loading branch information
lumixraku authored Sep 23, 2024
1 parent 1c34bd0 commit 1c4c237
Show file tree
Hide file tree
Showing 3 changed files with 591 additions and 432 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
* limitations under the License.
*/

import type { IBorderData, Injector, IRange, Univer } from '@univerjs/core';
import { BorderStyleTypes, BorderType, ICommandService, IUniverInstanceService, RANGE_TYPE } from '@univerjs/core';
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import type { IBorderData, Injector, IRange, Univer } from '@univerjs/core';

import { SheetsSelectionsService } from '../../../services/selections/selection-manager.service';
import { AddWorksheetMergeMutation } from '../../mutations/add-worksheet-merge.mutation';
Expand Down Expand Up @@ -268,6 +268,77 @@ describe('Test style commands', () => {
cl: { rgb: '#123456' },
});
});

it('set border for range has merged and unmerged cells', async () => {
const selectionManager = get(SheetsSelectionsService);
selectionManager.addSelections([
{
range: { startRow: 0, startColumn: 0, endRow: 0, endColumn: 5, rangeType: RANGE_TYPE.NORMAL },
primary: null,
style: null,
},
]);

function getBorder({ startRow, startColumn }: IRange): IBorderData | undefined {
return get(IUniverInstanceService)
.getUniverSheetInstance('test')
?.getSheetBySheetId('sheet1')
?.getRange(startRow, startColumn)
.getBorder();
}

expect(await commandService.executeCommand(AddWorksheetMergeAllCommand.id)).toBeTruthy();

selectionManager.addSelections([
{
range: { startRow: 0, startColumn: 0, endRow: 5, endColumn: 5, rangeType: RANGE_TYPE.NORMAL },
primary: null,
style: null,
},
]);

expect(
await commandService.executeCommand(SetBorderPositionCommand.id, { value: BorderType.ALL })
).toBeTruthy();
expect(
await commandService.executeCommand(SetBorderColorCommand.id, { value: '#aaaaaa' })
).toBeTruthy();
expect(
await commandService.executeCommand(SetBorderStyleCommand.id, {
value: BorderStyleTypes.SLANT_DASH_DOT,
})
).toBeTruthy();
expect(getBorder({ startRow: 0, endRow: 0, startColumn: 5, endColumn: 5 })?.r).toStrictEqual({
s: BorderStyleTypes.SLANT_DASH_DOT,
cl: { rgb: '#aaaaaa' },
});

selectionManager.clear();
selectionManager.addSelections([
{
range: { startRow: 0, startColumn: 0, endRow: 5, endColumn: 5, rangeType: RANGE_TYPE.NORMAL },
primary: null,
style: null,
},
]);
await commandService.executeCommand(SetBorderPositionCommand.id, { value: BorderType.NONE });
expect(getBorder({ startRow: 0, endRow: 0, startColumn: 5, endColumn: 5 })?.r).toBeNull();

selectionManager.addSelections([
{
range: { startRow: 0, startColumn: 0, endRow: 5, endColumn: 5, rangeType: RANGE_TYPE.NORMAL },
primary: null,
style: null,
},
]);
// executeCommand('sheet.command.set-border-position', { value: 'inside' })
await commandService.executeCommand(SetBorderPositionCommand.id, { value: BorderType.INSIDE });
expect(getBorder({ startRow: 0, endRow: 0, startColumn: 5, endColumn: 5 })?.r).toBeFalsy();
expect(getBorder({ startRow: 1, endRow: 1, startColumn: 5, endColumn: 5 })?.r).toBeFalsy();
expect(getBorder({ startRow: 1, endRow: 1, startColumn: 5, endColumn: 5 })?.b).not.toBeNull();
expect(getBorder({ startRow: 1, endRow: 1, startColumn: 5, endColumn: 5 })?.t).not.toBeNull();
expect(getBorder({ startRow: 1, endRow: 1, startColumn: 5, endColumn: 5 })?.l).not.toBeNull();
});
});

describe('fault situations', () => {
Expand Down
Loading

0 comments on commit 1c4c237

Please sign in to comment.