Files
product_inventory/docs/SETUP.md
Ben Miller 9bc55f3a06 feat: introduce Jest testing framework and decouple Product logic
- Added Jest infrastructure (deps, config, global mocks)
- Introduced ISpreadsheetService with GAS and Mock implementations
- Refactored Product.ts to use dependency injection
- Added unit tests for Product class
- Updated documentation (README, SETUP, ARCHITECTURE) to reflect testing and init scripts
2025-12-25 03:59:23 -07:00

73 lines
2.2 KiB
Markdown

# Setup Guide
## Local Development Environment
1. **Environment Initialization**
Run the provided PowerShell script to automatically install:
- `fnm` (Fast Node Manager) via Winget
- Node.js (v22)
- Global dependencies (`@google/clasp`)
- Project dependencies (`npm install`)
```powershell
.\init.ps1
```
2. **Verify Installation**
Run tests to confirm the environment is correctly configured.
```bash
npm test
```
3. **Clasp Login**
Authenticate with Google to allow pushing code.
```powershell
clasp login
```
4. **Initialize Project**
You must either create a new Apps Script project or clone an existing one.
- **Option A: New Project**
```bash
clasp create --type sheets --title "Product Inventory" --rootDir ./dist
```
- **Option B: Existing Project**
```bash
clasp clone <scriptId> --rootDir ./dist
```
*Note: The `--rootDir ./dist` flag is crucial so that clasp knows where to look for files.*
## Google Sheets Configuration
1. **Create a Google Sheet** (or use existing).
2. **"vars" Sheet**:
Create a tab named `vars` with the following columns: `key`, `value`.
Add the following rows:
- `productPhotosFolderId`: ID of the Drive folder for photos.
- `shopifyApiKey`: Your Shopify API Key.
- `shopifyApiSecretKey`: Your Shopify API Secret.
- `shopifyAdminApiAccessToken`: The Admin API access token.
- `shopifyApiURI`: e.g., `https://your-store.myshopify.com`
- `shopifyLocationId`: Location ID for inventory.
- `shopifyCountryCodeOfOrigin`: Two-letter country code (e.g., `US`).
- `shopifyProvinceCodeOfOrigin`: Two-letter province code (e.g., `NY`).
- `SalesSyncFrequency`: Interval (in minutes) to check for new sales. Valid: 1, 5, 10, 15, 30.
## Deployment
1. **Build**
```bash
npm run build
```
2. **Push to Apps Script**
```bash
npm run deploy
```
3. **Install Triggers**
Open the Apps Script editor (Extensions > Apps Script).
Run the `reinstallTriggers` function manually once to set up the automation.