mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 06:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| describe("errors", () => {
 | |
|     test("first argument must be coercible to object", () => {
 | |
|         expect(() => {
 | |
|             new AggregateError();
 | |
|         }).toThrowWithMessage(TypeError, "ToObject on null or undefined");
 | |
|     });
 | |
| 
 | |
|     test("@@iterator throws", () => {
 | |
|         expect(() => {
 | |
|             new AggregateError({
 | |
|                 [Symbol.iterator]() {
 | |
|                     throw Error("oops!");
 | |
|                 },
 | |
|             });
 | |
|         }).toThrowWithMessage(Error, "oops!");
 | |
|     });
 | |
| });
 | |
| 
 | |
| describe("normal behavior", () => {
 | |
|     test("length is 2", () => {
 | |
|         expect(AggregateError).toHaveLength(2);
 | |
|     });
 | |
| 
 | |
|     test("name is AggregateError", () => {
 | |
|         expect(AggregateError.name).toBe("AggregateError");
 | |
|     });
 | |
| 
 | |
|     test("Prototype of the AggregateError constructor is the Error constructor", () => {
 | |
|         expect(Object.getPrototypeOf(AggregateError)).toBe(Error);
 | |
|     });
 | |
| 
 | |
|     test("Prototype of AggregateError.prototype is Error.prototype", () => {
 | |
|         expect(Object.getPrototypeOf(AggregateError.prototype)).toBe(Error.prototype);
 | |
|     });
 | |
| 
 | |
|     test("basic functionality", () => {
 | |
|         expect(AggregateError([])).toBeInstanceOf(AggregateError);
 | |
|         expect(new AggregateError([])).toBeInstanceOf(AggregateError);
 | |
|         expect(new AggregateError([]).toString()).toBe("AggregateError");
 | |
|         expect(new AggregateError([], "Foo").toString()).toBe("AggregateError: Foo");
 | |
|         expect(new AggregateError([]).hasOwnProperty("errors")).toBeTrue();
 | |
|         const errors = [1, 2, 3];
 | |
|         expect(new AggregateError(errors).errors).toEqual(errors);
 | |
|         expect(new AggregateError(errors).errors).not.toBe(errors);
 | |
|         expect(
 | |
|             new AggregateError({
 | |
|                 [Symbol.iterator]: (i = 0) => ({
 | |
|                     next() {
 | |
|                         if (i < 3) {
 | |
|                             i++;
 | |
|                             return { value: i };
 | |
|                         }
 | |
|                         return { value: null, done: true };
 | |
|                     },
 | |
|                 }),
 | |
|             }).errors
 | |
|         ).toEqual(errors);
 | |
|     });
 | |
| 
 | |
|     test("supports options object with cause", () => {
 | |
|         const cause = new Error();
 | |
|         const error = new AggregateError([], "test", { cause });
 | |
|         expect(error.hasOwnProperty("cause")).toBeTrue();
 | |
|         expect(error.cause).toBe(cause);
 | |
|     });
 | |
| });
 | 
