-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Story/000150/story complete status (#192)
* added atoll scripts etc. * added backlog item status to UI * added ability to patch backlogitem via api * make sture status has default "N" value * updated data model docs * added reference for checkbox component * bump ver * drop as any Co-authored-by: Kevin <kevinbe71@gmail.com>
- Loading branch information
1 parent
05314f1
commit abfc8cd
Showing
16 changed files
with
345 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1,29 @@ | ||
{ | ||
"editor.rulers": [ | ||
132 | ||
], | ||
"files.exclude": { | ||
"**/.git": true, | ||
"**/.svn": true, | ||
"**/.hg": true, | ||
"**/CVS": true, | ||
"**/.DS_Store": true, | ||
"node_modules": true, | ||
".yalc": true | ||
}, | ||
"search.exclude": { | ||
"**/node_modules": true, | ||
"**/bower_components": true, | ||
"**/*.code-search": true, | ||
"build": true, | ||
"coverage": true | ||
}, | ||
"bookmarks.navigateThroughAllFiles": true, | ||
"bookmarks.backgroundLineColor": "#102030", | ||
"editor.formatOnSave": true, | ||
"editor.defaultFormatter": "esbenp.prettier-vscode", | ||
"coverage-gutters.showGutterCoverage": true, | ||
"coverage-gutters.coverageFileNames": [ | ||
"lcov.info" | ||
], | ||
"coverage-gutters.lcovname": "lcov.info", | ||
"coverage-gutters.coverageReportFileName": "coverage/**/index.html", | ||
"coverage-gutters.showLineCoverage": false | ||
} | ||
"editor.rulers": [132], | ||
"files.exclude": { | ||
"**/.git": true, | ||
"**/.svn": true, | ||
"**/.hg": true, | ||
"**/CVS": true, | ||
"**/.DS_Store": true, | ||
"node_modules": true, | ||
".yalc": true | ||
}, | ||
"search.exclude": { | ||
"**/node_modules": true, | ||
"**/bower_components": true, | ||
"**/*.code-search": true, | ||
"build": true, | ||
"coverage": true | ||
}, | ||
"bookmarks.navigateThroughAllFiles": true, | ||
"bookmarks.backgroundLineColor": "#102030", | ||
"editor.formatOnSave": true, | ||
"editor.defaultFormatter": "esbenp.prettier-vscode", | ||
"coverage-gutters.showGutterCoverage": true, | ||
"coverage-gutters.coverageFileNames": ["lcov.info"], | ||
"coverage-gutters.lcovname": "lcov.info", | ||
"coverage-gutters.coverageReportFileName": "coverage/**/index.html", | ||
"coverage-gutters.showLineCoverage": false, | ||
"deno.enable": false | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
Backlog Items | ||
============= | ||
|
||
Statuses | ||
-------- | ||
|
||
1. Not Started | ||
2. In Progress | ||
3. Completed | ||
|
||
Sub-statuses | ||
------------ | ||
|
||
Within each of the above statuses we have smaller "steps" that are defined below. These | ||
steps could actually be done in parallel and indepently and depend on a team's process and | ||
maturity with CI/CD etc. For example, someone performing manual testing could be doing it | ||
using a branch that the developer has provided for code review before the code review is | ||
complete. To support this, these sub-statuses are treated as independent checks on a | ||
checklist - once all have been completed the issue/story can "exit" its current status and | ||
"enter" the next one. | ||
|
||
**1. Not Started** | ||
1.1. Not Started - Idea | ||
1.2. Not Started - Defined | ||
|
||
**2. In Progress** | ||
2.1. In Progress - In Development | ||
2.2. In Progress - Code Review | ||
2.3. In Progress - Testing | ||
2.4. In Progress - Acceptance | ||
|
||
**3. Ready to Release** | ||
3.1. Ready to Release | ||
|
||
**4. Released** | ||
4.1. Released | ||
|
||
Feature Toggles and "Release" Status | ||
------------------------------------ | ||
|
||
A story could be implemented behind a feature toggle. The code itself could then be | ||
released to production and toggled on later. For the purpose of Atoll's data model this | ||
toggled-on state is the true "Released" status. | ||
|
||
|
||
Blocked "Status" | ||
---------------- | ||
|
||
Unlike other statuses, "blocked" simply means that a work item has been paused because something is preventing it from being | ||
worked on. The workflow in and out of the blocked state can follow a few paths: | ||
|
||
1. Not Started --> Blocked --> In Progress | ||
2. Not Started --> Blocked --> Not Started | ||
3. In Progress --> Blocked --> In Progress |
File renamed without changes.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
// test related | ||
import "jest"; | ||
|
||
// code under test | ||
import { getValidationFailureMessage, validateBaseKeys, validatePatchObjects } from "../patcher"; | ||
|
||
describe("Patcher", () => { | ||
describe("validateBaseKeys", () => { | ||
it("should handle empty objects correctly", () => { | ||
const actual = validateBaseKeys({}, {}); | ||
expect(actual.valid).toBeTruthy(); | ||
}); | ||
it("should treat null and empty objects the same", () => { | ||
const actual = validateBaseKeys(null, {}); | ||
expect(actual.valid).toBeTruthy(); | ||
}); | ||
it("should treat empty and null objects the same", () => { | ||
const actual = validateBaseKeys({}, null); | ||
expect(actual.valid).toBeTruthy(); | ||
}); | ||
it("should handle flat object structure correctly", () => { | ||
const actual = validateBaseKeys({ a: 1, b: 2, c: 3 }, { a: 10, b: 20, c: 30 }); | ||
expect(actual.valid).toBeTruthy(); | ||
}); | ||
it("should return invalid when extra fields found", () => { | ||
const actual = validateBaseKeys({ a: 1, b: 2 }, { a: 10, b: 20, c: 30 }); | ||
expect(actual.valid).toBeFalsy(); | ||
expect(actual.extraFields).toStrictEqual(["c"]); | ||
}); | ||
it("should ignore complex object fields in target node", () => { | ||
const actual = validateBaseKeys({ a: 1, complex: { x: 5, y: 9 } }, { a: 10 }); | ||
expect(actual.valid).toBeTruthy(); | ||
}); | ||
it("should treat extra complex object fields in source node as invalid", () => { | ||
const actual = validateBaseKeys({ a: 1 }, { a: 10, complex: { x: 5, y: 9 } }); | ||
expect(actual.valid).toBeFalsy(); | ||
expect(actual.extraFields).toStrictEqual(["complex"]); | ||
}); | ||
it("should ignore complex object extra fields in source node", () => { | ||
const actual = validateBaseKeys({ a: 1, complex: { x: 5, y: 9 } }, { a: 10, complex: { x: 5, y: 9, z: 7 } }); | ||
expect(actual.valid).toBeTruthy(); | ||
}); | ||
}); | ||
describe("validatePatchObjects", () => { | ||
it("should handle unpatchable nested objects correctly", () => { | ||
const actual = validatePatchObjects( | ||
{ | ||
a: 1, | ||
b: { | ||
ba: 2, | ||
c: { | ||
ca: 3 | ||
} | ||
} | ||
}, | ||
{ | ||
a: 1, | ||
b: { | ||
ba: 2, | ||
c: { | ||
ca: 3, | ||
cb: "invalid" | ||
} | ||
} | ||
} | ||
); | ||
expect(actual.valid).toBeFalsy(); | ||
expect(actual.extraFields).toStrictEqual(["b.c.cb"]); | ||
}); | ||
it("should handle patchable nested objects correctly", () => { | ||
const actual = validatePatchObjects( | ||
{ | ||
a: 1, | ||
b: { | ||
ba: 2, | ||
c: { | ||
ca: 3, | ||
cb: "valid" | ||
} | ||
} | ||
}, | ||
{ | ||
a: 1, | ||
b: { | ||
ba: 2, | ||
c: { | ||
ca: 3 | ||
} | ||
} | ||
} | ||
); | ||
expect(actual.valid).toBeTruthy(); | ||
}); | ||
}); | ||
describe("getValidationFailureMessage", () => { | ||
it("should handle a single invalid nested field", () => { | ||
const actual = getValidationFailureMessage({ valid: false, extraFields: ["b.c.cb"] }); | ||
expect(actual).toEqual("extra fields found in new object: b.c.cb"); | ||
}); | ||
it("should handle valid scenario", () => { | ||
const actual = getValidationFailureMessage({ valid: true, extraFields: [] }); | ||
expect(actual).toEqual("patch object is valid"); | ||
}); | ||
}); | ||
}); |
Oops, something went wrong.