add tests batch 20

This commit is contained in:
root
2026-06-09 01:03:53 -04:00
parent 95efb9652e
commit 6be4875c5e
1502 changed files with 13797 additions and 11313 deletions
+32 -39
View File
@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
use App\Models\BaseModel;
class WhatsappGroupMembership extends BaseModel
{
@@ -20,17 +21,16 @@ class WhatsappGroupMembership extends BaseModel
'verified_by',
'verified_at',
];
public $timestamps = true; // created_at, updated_at
protected $casts = [
'class_section_id' => 'integer',
'subject_id' => 'integer',
'is_member' => 'boolean',
'verified_by' => 'integer',
'verified_at' => 'datetime',
'created_at' => 'datetime',
'updated_at' => 'datetime',
'subject_id' => 'integer',
'is_member' => 'boolean',
'verified_by' => 'integer',
'verified_at' => 'datetime',
'created_at' => 'datetime',
'updated_at' => 'datetime',
];
/* ============================================================
@@ -38,8 +38,7 @@ class WhatsappGroupMembership extends BaseModel
* ============================================================
*/
public const TYPE_PRIMARY = 'primary';
public const TYPE_SECOND = 'second';
public const TYPE_SECOND = 'second';
public static function normType(string $type): string
{
@@ -54,7 +53,6 @@ class WhatsappGroupMembership extends BaseModel
public function scopeForSections(Builder $q, array $sectionIds): Builder
{
$ids = array_values(array_unique(array_filter(array_map('intval', $sectionIds))));
return empty($ids) ? $q->whereRaw('1=0') : $q->whereIn('class_section_id', $ids);
}
@@ -66,14 +64,13 @@ class WhatsappGroupMembership extends BaseModel
public function scopeForSemester(Builder $q, string $sem): Builder
{
$sem = trim($sem);
return $sem === '' ? $q : $q->where('semester', $sem);
}
public function scopeForSubject(Builder $q, string $type, int $subjectId): Builder
{
return $q->where('subject_type', static::normType($type))
->where('subject_id', $subjectId);
->where('subject_id', $subjectId);
}
/* ============================================================
@@ -88,12 +85,10 @@ class WhatsappGroupMembership extends BaseModel
public static function getBySectionsAndTerm(array $sectionIds, string $year, string $sem): array
{
$ids = array_values(array_unique(array_filter(array_map('intval', $sectionIds))));
if (empty($ids)) {
return [];
}
if (empty($ids)) return [];
$year = trim($year);
$sem = trim($sem);
$sem = trim($sem);
$q = static::query()
->forSections($ids)
@@ -110,8 +105,8 @@ class WhatsappGroupMembership extends BaseModel
$out = [];
foreach ($rows as $m) {
$k = sprintf('%d:%s:%d', (int) $m->class_section_id, (string) $m->subject_type, (int) $m->subject_id);
if (! isset($out[$k])) {
$k = sprintf('%d:%s:%d', (int)$m->class_section_id, (string)$m->subject_type, (int)$m->subject_id);
if (!isset($out[$k])) {
$out[$k] = $m->toArray();
}
}
@@ -139,15 +134,15 @@ class WhatsappGroupMembership extends BaseModel
): int {
$type = static::normType($type);
$year = trim($year);
$sem = trim($sem);
$sem = trim($sem);
$payload = [
'class_section_id' => $classSectionId,
'school_year' => $year,
'semester' => $sem,
'subject_type' => $type,
'subject_id' => $subjectId,
'is_member' => $isMember ? 1 : 0,
'school_year' => $year,
'semester' => $sem,
'subject_type' => $type,
'subject_id' => $subjectId,
'is_member' => $isMember ? 1 : 0,
];
if ($verifiedBy) {
@@ -160,14 +155,13 @@ class WhatsappGroupMembership extends BaseModel
$row = static::query()->updateOrCreate(
[
'class_section_id' => $classSectionId,
'school_year' => $year,
'semester' => $sem,
'subject_type' => $type,
'subject_id' => $subjectId,
'school_year' => $year,
'semester' => $sem,
'subject_type' => $type,
'subject_id' => $subjectId,
],
$payload
);
return (int) $row->id;
}
@@ -183,7 +177,7 @@ class WhatsappGroupMembership extends BaseModel
if ($existing) {
// Keep semester from the existing row if present (legacy behavior).
if (! empty($existing->semester)) {
if (!empty($existing->semester)) {
$payload['semester'] = (string) $existing->semester;
}
@@ -195,7 +189,6 @@ class WhatsappGroupMembership extends BaseModel
// No existing row => create a new one (semester remains blank)
$created = static::query()->create($payload);
return (int) $created->id;
}
@@ -210,13 +203,13 @@ class WhatsappGroupMembership extends BaseModel
return [
'class_section_id' => [$req, 'integer', 'min:1'],
'school_year' => [$req, 'string', 'max:20'],
'semester' => ['nullable', 'string', 'max:20'],
'subject_type' => [$req, 'string', 'in:'.implode(',', [self::TYPE_PRIMARY, self::TYPE_SECOND])],
'subject_id' => [$req, 'integer', 'min:1'],
'is_member' => ['nullable', 'boolean'],
'verified_by' => ['nullable', 'integer'],
'verified_at' => ['nullable', 'date'],
'school_year' => [$req, 'string', 'max:20'],
'semester' => ['nullable', 'string', 'max:20'],
'subject_type' => [$req, 'string', 'in:' . implode(',', [self::TYPE_PRIMARY, self::TYPE_SECOND])],
'subject_id' => [$req, 'integer', 'min:1'],
'is_member' => ['nullable', 'boolean'],
'verified_by' => ['nullable', 'integer'],
'verified_at' => ['nullable', 'date'],
];
}
}
}