diff --git a/src/commands/actor/set-value.ts b/src/commands/actor/set-value.ts index 5d6d1330b..2a68aee12 100644 --- a/src/commands/actor/set-value.ts +++ b/src/commands/actor/set-value.ts @@ -1,3 +1,4 @@ +import { cachedStdinInput } from '../../entrypoints/_shared.js'; import { APIFY_STORAGE_TYPES, getApifyStorageClient, getDefaultStorageId } from '../../lib/actor.js'; import { ApifyCommand } from '../../lib/command-framework/apify-command.js'; import { Args } from '../../lib/command-framework/args.js'; @@ -56,7 +57,7 @@ export class ActorSetValueCommand extends ApifyCommand { cwd: actor.dir, }); expect(result.exitCode, `stderr: ${result.stderr}`).toBe(0); + + const recordPath = path.join(actor.dir, 'storage', 'key_value_stores', 'default', 'MY_KEY.json'); + await expect(readFile(recordPath, 'utf-8')).resolves.toBe('{"hello":"world"}'); + }); + + it('deletes a value when no value or stdin is provided', async () => { + const recordPath = path.join(actor.dir, 'storage', 'key_value_stores', 'default', 'DELETE_ME.json'); + const setResult = await runCli('apify', ['actor', 'set-value', 'DELETE_ME', '{"exists":true}'], { + cwd: actor.dir, + }); + expect(setResult.exitCode, `stderr: ${setResult.stderr}`).toBe(0); + await expect(readFile(recordPath, 'utf-8')).resolves.toBe('{"exists":true}'); + + const deleteResult = await runCli('apify', ['actor', 'set-value', 'DELETE_ME'], { + cwd: actor.dir, + }); + expect(deleteResult.exitCode, `stderr: ${deleteResult.stderr}`).toBe(0); + await expect(access(recordPath)).rejects.toThrow(); + }); + + it('sets a value from stdin', async () => { + const result = await runCli('apify', ['actor', 'set-value', 'FROM_STDIN', '--content-type', 'text/plain'], { + cwd: actor.dir, + stdin: 'VALUE', + }); + expect(result.exitCode, `stderr: ${result.stderr}`).toBe(0); + + const recordPath = path.join(actor.dir, 'storage', 'key_value_stores', 'default', 'FROM_STDIN.txt'); + await expect(readFile(recordPath, 'utf-8')).resolves.toBe('VALUE'); }); });