Skip to content

Commit

Permalink
Added a test for inserting attributes in class frames, and got it pas…
Browse files Browse the repository at this point in the history
…sing.
  • Loading branch information
neilccbrown committed Jan 21, 2025
1 parent 14bac66 commit e3ce965
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/types/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -629,7 +629,7 @@ export function generateAllFrameDefinitionTypes(regenerateExistingFrames?: boole
],
colour: "#baded3",
forbiddenChildrenTypes: Object.values(ImportFrameTypesIdentifiers)
.concat(Object.values(StandardFrameTypesIdentifiers).filter((f) => f != CommentFrameTypesIdentifier.comment))
.concat(Object.values(StandardFrameTypesIdentifiers).filter((f) => f != CommentFrameTypesIdentifier.comment & f != StandardFrameTypesIdentifiers.varassign))
.concat([DefIdentifiers.classdef]),
defaultChildrenTypes: [{...EmptyFrameObject, frameType: FuncDefDefinition, labelSlotsDict: {0: {slotStructures:{fields:[{code:"__init__"}], operators: []}}, 1: {slotStructures:{fields:[{code:""}], operators: []}}}}],

Expand Down
39 changes: 39 additions & 0 deletions tests/cypress/e2e/basics.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,45 @@ describe("Classes", () => {
]},
]).concat(defaultMyCode));
});
it("Lets you add a class frame with a parent class", () => {
checkCodeEquals(defaultImports.concat(defaultMyCode));
cy.get("body").type("{uparrow}cFoo(Bar");
cy.get("body").type("{rightarrow}{rightarrow}{downarrow} foo()");
checkCodeEquals(defaultImports.concat([
{h: /class\s+Foo\(Bar\)\s*:/, b: [
{h: /def\s+__init__\s*\((self,?)?\s*\)\s*:/, b: [
"foo()",
]},
]},
]).concat(defaultMyCode));
});

it("Lets you add a class frame with class attributes and methods", () => {
checkCodeEquals(defaultImports.concat(defaultMyCode));
// Class header:
cy.get("body").type("{uparrow}cFoo");
// Constructor body:
cy.get("body").type("{rightarrow}{downarrow} foo()");
// Attribute:
cy.get("body").type("{rightarrow}{downarrow}=myattr=5");
// Methods:
cy.get("body").type("{rightarrow}ffoo{downarrow}r6");
cy.get("body").type("{rightarrow}{downarrow}fbar(x,y{downarrow}r7");
checkCodeEquals(defaultImports.concat([
{h: /class\s+Foo\s*:/, b: [
{h: /def\s+__init__\s*\((self,?)?\s*\)\s*:/, b: [
"foo()",
]},
/myattr\s*[=]\s*5/,
{h: /def\s+foo\s*\((self,?)?\s*\)\s*:/, b: [
/return\s+6/,
]},
{h: /def\s+bar\s*\((self,)?\s*x,y\s*\)\s*:/, b: [
/return\s+7/,
]},
]},
]).concat(defaultMyCode));
});
});

// Test that selecting and deleting frames using keyboard works properly:
Expand Down

0 comments on commit e3ce965

Please sign in to comment.