/** * Test sprayStat normalization in ApplicationDetail model * Verifies that sprayStat values are normalized to 0, 1, or 3 * (SatLoc value 2 should be normalized to 1) */ require('./setup'); const { expect } = require('chai'); const mongoose = require('mongoose'); const ApplicationDetail = require('../model/application_detail'); describe('sprayStat Normalization', function() { this.timeout(10000); // Increase timeout for DB operations // Test the Mongoose setter directly by creating a test schema instance it('should normalize sprayStat value 2 to 1', function() { // Create a test document (not saved to DB) // Create a new instance with sprayStat = 2 const doc = new ApplicationDetail({ lat: 40.7128, lon: -74.0060, sprayStat: 2, fileId: new mongoose.Types.ObjectId() }); // After construction, the setter should have normalized it expect(doc.sprayStat).to.equal(1, 'sprayStat=2 should be normalized to 1'); }); it('should preserve sprayStat = 0', function() { const doc = new ApplicationDetail({ lat: 40.7128, lon: -74.0060, sprayStat: 0, fileId: new mongoose.Types.ObjectId() }); expect(doc.sprayStat).to.equal(0); }); it('should preserve sprayStat = 1', function() { const doc = new ApplicationDetail({ lat: 40.7128, lon: -74.0060, sprayStat: 1, fileId: new mongoose.Types.ObjectId() }); expect(doc.sprayStat).to.equal(1); }); it('should preserve sprayStat = 3 (segment marker)', function() { const doc = new ApplicationDetail({ lat: 40.7128, lon: -74.0060, sprayStat: 3, fileId: new mongoose.Types.ObjectId() }); expect(doc.sprayStat).to.equal(3, 'sprayStat=3 should be preserved for segment markers'); }); it('should normalize any sprayStat > 1 (except 3) to 1', function() { const testValues = [2, 4, 5, 100]; for (const val of testValues) { const doc = new ApplicationDetail({ lat: 40.7128, lon: -74.0060, sprayStat: val, fileId: new mongoose.Types.ObjectId() }); expect(doc.sprayStat).to.equal(1, `sprayStat=${val} should be normalized to 1`); } }); });