dazscript-framework 1.0.40 → 1.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dazscript-framework",
3
- "version": "1.0.40",
3
+ "version": "1.0.41",
4
4
  "author": "Freddy Diaz",
5
5
  "license": "MPL-2.0",
6
6
  "description": "",
@@ -36,11 +36,39 @@ vi.stubGlobal('DzDir', FakeDir)
36
36
  import { saveToFile } from './file-helper'
37
37
 
38
38
  describe('saveToFile', () => {
39
- beforeEach(() => vi.clearAllMocks())
39
+ beforeEach(() => {
40
+ vi.clearAllMocks()
41
+ open.mockReturnValue(false)
42
+ write.mockReturnValue(-1)
43
+ })
40
44
 
41
45
  it('fails without writing when the file cannot be opened', () => {
42
46
  expect(saveToFile('C:/temp/settings.json', '{}')).toBe(false)
43
47
  expect(open).toHaveBeenCalledWith(FakeFile.WriteOnly)
44
48
  expect(write).not.toHaveBeenCalled()
45
49
  })
50
+
51
+ it('fails when writing reports an error', () => {
52
+ open.mockReturnValue(true)
53
+
54
+ expect(saveToFile('C:/temp/settings.json', '{}')).toBe(false)
55
+ expect(write).toHaveBeenCalledWith('{}')
56
+ expect(close).toHaveBeenCalledOnce()
57
+ })
58
+
59
+ it('fails when writing stores no bytes', () => {
60
+ open.mockReturnValue(true)
61
+ write.mockReturnValue(0)
62
+
63
+ expect(saveToFile('C:/temp/settings.json', '{}')).toBe(false)
64
+ expect(close).toHaveBeenCalledOnce()
65
+ })
66
+
67
+ it('succeeds when the file opens and writes', () => {
68
+ open.mockReturnValue(true)
69
+ write.mockReturnValue(2)
70
+
71
+ expect(saveToFile('C:/temp/settings.json', '{}')).toBe(true)
72
+ expect(close).toHaveBeenCalledOnce()
73
+ })
46
74
  })
@@ -32,22 +32,26 @@ export const readFromFile = <T>(filePath: string, cache: boolean = false): T | n
32
32
  * @returns
33
33
  */
34
34
  export const saveToFile = (filePath: string, content: string): boolean => {
35
+ let fileInfo: DzFileInfo | null = null
36
+ let file: DzFile | null = null
37
+ let opened = false
35
38
  try {
36
39
  if (!filePath || !content) return false
37
- let fileInfo = new DzFileInfo(filePath)
40
+ fileInfo = new DzFileInfo(filePath)
38
41
  let path = fileInfo.absolutePath()
39
42
  var dzDir = new DzDir(path)
40
43
  dzDir.mkpath(path)
41
- var file = new DzFile(`${filePath}`)
42
- file.open(DzFile.WriteOnly)
43
- file.write(content)
44
- file.close()
45
- fileInfo.deleteLater()
46
- file.deleteLater()
47
- return true
44
+ file = new DzFile(`${filePath}`)
45
+ opened = file.open(DzFile.WriteOnly)
46
+ if (!opened) return false
47
+ return file.write(content) > 0
48
48
  } catch (error) {
49
49
  log.error(`Error while saving file ${filePath}`)
50
50
  return false
51
+ } finally {
52
+ if (opened) file?.close()
53
+ fileInfo?.deleteLater()
54
+ file?.deleteLater()
51
55
  }
52
56
  }
53
57