Home / File/ local-prod.test.js — astro Source File

local-prod.test.js — astro Source File

Architecture documentation for local-prod.test.js, a javascript file in the astro codebase. 7 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  4f40e0d5_d00c_81a1_1c7d_b5f979d227d3["local-prod.test.js"]
  be670a78_841c_46e5_0af5_c5c328869ecb["test-adapter.js"]
  4f40e0d5_d00c_81a1_1c7d_b5f979d227d3 --> be670a78_841c_46e5_0af5_c5c328869ecb
  0a624eac_945e_c9e8_c9de_3feb9de2dd15["test-utils.js"]
  4f40e0d5_d00c_81a1_1c7d_b5f979d227d3 --> 0a624eac_945e_c9e8_c9de_3feb9de2dd15
  dd4f09ce_3fd7_8295_f616_8876cda4555c["loadFixture"]
  4f40e0d5_d00c_81a1_1c7d_b5f979d227d3 --> dd4f09ce_3fd7_8295_f616_8876cda4555c
  e1e2fac7_5a95_7a88_cb1e_0a3b91c4e607["strict"]
  4f40e0d5_d00c_81a1_1c7d_b5f979d227d3 --> e1e2fac7_5a95_7a88_cb1e_0a3b91c4e607
  c52a5f83_66e3_37d7_9ebb_767f7129bc62["node:path"]
  4f40e0d5_d00c_81a1_1c7d_b5f979d227d3 --> c52a5f83_66e3_37d7_9ebb_767f7129bc62
  6b0635f9_51ea_77aa_767b_7857878e98a6["node:test"]
  4f40e0d5_d00c_81a1_1c7d_b5f979d227d3 --> 6b0635f9_51ea_77aa_767b_7857878e98a6
  d9a92db9_c95e_9165_13ac_24b3d859d946["node:url"]
  4f40e0d5_d00c_81a1_1c7d_b5f979d227d3 --> d9a92db9_c95e_9165_13ac_24b3d859d946
  style 4f40e0d5_d00c_81a1_1c7d_b5f979d227d3 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import assert from 'node:assert/strict';
import { relative } from 'node:path';
import { after, before, describe, it } from 'node:test';
import { fileURLToPath } from 'node:url';
import testAdapter from '../../astro/test/test-adapter.js';
import { loadFixture } from '../../astro/test/test-utils.js';

describe('astro:db local database', () => {
	describe('build (not remote) with DATABASE_FILE env (file URL)', () => {
		let fixture;
		const prodDbPath = new URL('./fixtures/basics/dist/astro.db', import.meta.url).toString();
		before(async () => {
			process.env.ASTRO_DATABASE_FILE = prodDbPath;
			const root = new URL('./fixtures/local-prod/', import.meta.url);
			fixture = await loadFixture({
				root,
				outDir: fileURLToPath(new URL('./dist/file-url/', root)),
				output: 'server',
				adapter: testAdapter(),
			});
			await fixture.build();
		});

		after(async () => {
			delete process.env.ASTRO_DATABASE_FILE;
		});

		it('Can render page', async () => {
			const app = await fixture.loadTestAdapterApp();
			const request = new Request('http://example.com/');
			const response = await app.render(request);
			assert.equal(response.status, 200);
		});
	});

	describe('build (not remote) with DATABASE_FILE env (relative file path)', () => {
		let fixture;
		const absoluteFileUrl = new URL('./fixtures/basics/dist/astro.db', import.meta.url);
		const prodDbPath = relative(process.cwd(), fileURLToPath(absoluteFileUrl));

		before(async () => {
			process.env.ASTRO_DATABASE_FILE = prodDbPath;
			const root = new URL('./fixtures/local-prod/', import.meta.url);
			fixture = await loadFixture({
				root,
				outDir: fileURLToPath(new URL('./dist/relative/', root)),
				output: 'server',
				adapter: testAdapter(),
			});
			await fixture.build();
		});

		after(async () => {
			delete process.env.ASTRO_DATABASE_FILE;
		});

		it('Can render page', async () => {
			const app = await fixture.loadTestAdapterApp();
			const request = new Request('http://example.com/');
			const response = await app.render(request);
			assert.equal(response.status, 200);
		});
	});

	describe('build (not remote)', () => {
		it('should throw during the build for server output', async () => {
			delete process.env.ASTRO_DATABASE_FILE;
			const root = new URL('./fixtures/local-prod/', import.meta.url);
			const fixture = await loadFixture({
				root,
				outDir: fileURLToPath(new URL('./dist/not-remote/', root)),
				output: 'server',
				adapter: testAdapter(),
			});
			let buildError = null;
			try {
				await fixture.build();
			} catch (err) {
				buildError = err;
			}

			assert.equal(buildError instanceof Error, true);
		});

		it('should throw during the build for hybrid output', async () => {
			let root = new URL('./fixtures/local-prod/', import.meta.url);
			const fixture2 = await loadFixture({
				root,
				outDir: fileURLToPath(new URL('./dist/hybrid-output/', root)),
				output: 'static',
				adapter: testAdapter(),
			});

			delete process.env.ASTRO_DATABASE_FILE;
			let buildError = null;
			try {
				await fixture2.build();
			} catch (err) {
				buildError = err;
			}

			assert.equal(buildError instanceof Error, true);
		});
	});
});

Dependencies

Frequently Asked Questions

What does local-prod.test.js do?
local-prod.test.js is a source file in the astro codebase, written in javascript. It belongs to the IntegrationAdapters domain.
What does local-prod.test.js depend on?
local-prod.test.js imports 7 module(s): loadFixture, node:path, node:test, node:url, strict, test-adapter.js, test-utils.js.
Where is local-prod.test.js in the architecture?
local-prod.test.js is located at packages/db/test/local-prod.test.js (domain: IntegrationAdapters, directory: packages/db/test).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free