Best JavaScript code snippet using playwright-internal
updatedb.js
Source:updatedb.js  
...24var worldDeathsRef = firebaseRef.child('worldTotal').child('deaths');25var distRef = firebaseRef.child('kerala-dist');26var dbUpdateTimeRef = firebaseRef.child('dbUpdateTime');27var updateMoment;28function updateRef(ref, id){29    ref.on('value', function(snapshot){30        //console.log(snapshot.val());31        document.getElementById(id).innerHTML = snapshot.val();32    });33}34updateRef(keralaInfectedRef, 'keralaInfected');35updateRef(keralaDeathsRef, 'keralaDeaths');36updateRef(keralaRecoveredRef, 'keralaRecovered');37updateRef(keralaInfectedTodayRef, 'keralaInfectedToday');38function dbUpdateKerala(){39    var dbKeralaInfected = document.getElementById("dbKeralaInfected").value.trim();40    if(dbKeralaInfected.length != 0){41        keralaInfectedRef.set(dbKeralaInfected);42        document.getElementById("dbKeralaInfected").value = '';43    }44    var dbKeralaDeaths = document.getElementById("dbKeralaDeaths").value.trim();45    if(dbKeralaDeaths.length != 0){46        keralaDeathsRef.set(dbKeralaDeaths);47        document.getElementById("dbKeralaDeaths").value = '';48    }49    var dbKeralaRecovered = document.getElementById("dbKeralaRecovered").value.trim();50    if(dbKeralaRecovered.length != 0){51        keralaRecoveredRef.set(dbKeralaRecovered);52        document.getElementById("dbKeralaRecovered").value = '';53    }54    var dbKeralaInfectedToday = document.getElementById("dbKeralaInfectedToday").value.trim();55    if(dbKeralaInfectedToday.length != 0){56        keralaInfectedTodayRef.set(dbKeralaInfectedToday);57        document.getElementById("dbKeralaInfectedToday").value = '';58    }59    updateMoment = moment().format('DD.MM.YYYY, h:mm a');60    dbUpdateTimeRef.set(updateMoment);61}62// world update below63updateRef(worldInfectedRef, 'worldInfected');64updateRef(worldDeathsRef, 'worldDeaths');65function dbUpdateWorld(){66    var dbWorldInfected = document.getElementById("dbWorldInfected").value.trim();67    if(dbWorldInfected.length != 0){68        worldInfectedRef.set(dbWorldInfected);69        document.getElementById("dbWorldInfected").value = '';70    }71    var dbWorldDeaths = document.getElementById("dbWorldDeaths").value.trim();72    if(dbWorldDeaths.length != 0){73        worldDeathsRef.set(dbWorldDeaths);74        document.getElementById("dbWorldDeaths").value = '';75    }76    updateMoment = moment().format('DD.MM.YYYY, h:mm a');77    dbUpdateTimeRef.set(updateMoment);78}79// India update below80updateRef(indiaInfectedRef, 'indiaInfected');81updateRef(indiaDeathsRef, 'indiaDeaths');82function dbUpdateIndia(){83    var dbIndiaInfected = document.getElementById("dbIndiaInfected").value.trim();84    if(dbIndiaInfected.length != 0){85        indiaInfectedRef.set(dbIndiaInfected);86        document.getElementById("dbIndiaInfected").value = '';87    }88    var dbIndiaDeaths = document.getElementById("dbIndiaDeaths").value.trim();89    if(dbIndiaDeaths.length != 0){90        indiaDeathsRef.set(dbIndiaDeaths);91        document.getElementById("dbIndiaDeaths").value = '';92    }93    updateMoment = moment().format('DD.MM.YYYY, h:mm a');94    dbUpdateTimeRef.set(updateMoment);95}96//district update below97//district infected ref98var kasargodInfectedRef = firebaseRef.child('kerala-dist').child('kasargod').child('infected');99var kannurInfectedRef = firebaseRef.child('kerala-dist').child('kannur').child('infected');100var wayanadInfectedRef = firebaseRef.child('kerala-dist').child('wayanad').child('infected');101var kozhikodeInfectedRef = firebaseRef.child('kerala-dist').child('kozhikode').child('infected');102var malappuramInfectedRef = firebaseRef.child('kerala-dist').child('malappuram').child('infected');103var palakkadInfectedRef = firebaseRef.child('kerala-dist').child('palakkad').child('infected');104var thrissurInfectedRef = firebaseRef.child('kerala-dist').child('thrissur').child('infected');105var eranakulamInfectedRef = firebaseRef.child('kerala-dist').child('eranakulam').child('infected');106var kottayamInfectedRef = firebaseRef.child('kerala-dist').child('kottayam').child('infected');107var idukkiInfectedRef = firebaseRef.child('kerala-dist').child('idukki').child('infected');108var alappuzhaInfectedRef = firebaseRef.child('kerala-dist').child('alappuzha').child('infected');109var pathanamthittaInfectedRef = firebaseRef.child('kerala-dist').child('pathanamthitta').child('infected');110var kollamInfectedRef = firebaseRef.child('kerala-dist').child('kollam').child('infected');111var thiruvananthapuramInfectedRef = firebaseRef.child('kerala-dist').child('thiruvananthapuram').child('infected');112//district recovered ref113var kasargodRecoveredRef = firebaseRef.child('kerala-dist').child('kasargod').child('recovered');114var kannurRecoveredRef = firebaseRef.child('kerala-dist').child('kannur').child('recovered');115var wayanadRecoveredRef = firebaseRef.child('kerala-dist').child('wayanad').child('recovered');116var kozhikodeRecoveredRef = firebaseRef.child('kerala-dist').child('kozhikode').child('recovered');117var malappuramRecoveredRef = firebaseRef.child('kerala-dist').child('malappuram').child('recovered');118var palakkadRecoveredRef = firebaseRef.child('kerala-dist').child('palakkad').child('recovered');119var thrissurRecoveredRef = firebaseRef.child('kerala-dist').child('thrissur').child('recovered');120var eranakulamRecoveredRef = firebaseRef.child('kerala-dist').child('eranakulam').child('recovered');121var kottayamRecoveredRef = firebaseRef.child('kerala-dist').child('kottayam').child('recovered');122var idukkiRecoveredRef = firebaseRef.child('kerala-dist').child('idukki').child('recovered');123var alappuzhaRecoveredRef = firebaseRef.child('kerala-dist').child('alappuzha').child('recovered');124var pathanamthittaRecoveredRef = firebaseRef.child('kerala-dist').child('pathanamthitta').child('recovered');125var kollamRecoveredRef = firebaseRef.child('kerala-dist').child('kollam').child('recovered');126var thiruvananthapuramRecoveredRef = firebaseRef.child('kerala-dist').child('thiruvananthapuram').child('recovered');127// dist infected show128updateRef(kasargodInfectedRef, 'kasargodInfected');129updateRef(kannurInfectedRef, 'kannurInfected');130updateRef(wayanadInfectedRef, 'wayanadInfected');131updateRef(kozhikodeInfectedRef, 'kozhikodeInfected');132updateRef(malappuramInfectedRef, 'malappuramInfected');133updateRef(palakkadInfectedRef, 'palakkadInfected');134updateRef(thrissurInfectedRef, 'thrissurInfected');135updateRef(eranakulamInfectedRef, 'eranakulamInfected');136updateRef(kottayamInfectedRef, 'kottayamInfected');137updateRef(idukkiInfectedRef, 'idukkiInfected');138updateRef(alappuzhaInfectedRef, 'alappuzhaInfected');139updateRef(pathanamthittaInfectedRef, 'pathanamthittaInfected');140updateRef(kollamInfectedRef, 'kollamInfected');141updateRef(thiruvananthapuramInfectedRef, 'thiruvananthapuramInfected');142// dist recovered show143updateRef(kasargodRecoveredRef, 'kasargodRecovered');144updateRef(kannurRecoveredRef, 'kannurRecovered');145updateRef(wayanadRecoveredRef, 'wayanadRecovered');146updateRef(kozhikodeRecoveredRef, 'kozhikodeRecovered');147updateRef(malappuramRecoveredRef, 'malappuramRecovered');148updateRef(palakkadRecoveredRef, 'palakkadRecovered');149updateRef(thrissurRecoveredRef, 'thrissurRecovered');150updateRef(eranakulamRecoveredRef, 'eranakulamRecovered');151updateRef(kottayamRecoveredRef, 'kottayamRecovered');152updateRef(idukkiRecoveredRef, 'idukkiRecovered');153updateRef(alappuzhaRecoveredRef, 'alappuzhaRecovered');154updateRef(pathanamthittaRecoveredRef, 'pathanamthittaRecovered');155updateRef(kollamRecoveredRef, 'kollamRecovered');156updateRef(thiruvananthapuramRecoveredRef, 'thiruvananthapuramRecovered');157function dbUpdateDistrict(){158    //update each dist infected159    var dbKasargodInfected = document.getElementById("dbKasargodInfected").value.trim();160    if(dbKasargodInfected.length != 0){161        kasargodInfectedRef.set(dbKasargodInfected)162        document.getElementById("dbKasargodInfected").value = '';163    }164    //update each dist Recovered165    var dbKasargodRecovered = document.getElementById("dbKasargodRecovered").value.trim();166    if(dbKasargodRecovered.length != 0){167        kasargodRecoveredRef.set(dbKasargodRecovered)168        document.getElementById("dbKasargodRecovered").value = '';169    }170    //update each dist infected171    var dbKannurInfected = document.getElementById("dbKannurInfected").value.trim();172    if(dbKannurInfected.length != 0){173        kannurInfectedRef.set(dbKannurInfected);174        document.getElementById("dbKannurInfected").value = '';175    }176    //update each dist Recovered177    var dbKannurRecovered = document.getElementById("dbKannurRecovered").value.trim();178    if(dbKannurRecovered.length != 0){179        kannurRecoveredRef.set(dbKannurRecovered);180        document.getElementById("dbKannurRecovered").value = '';181    }182    //update each dist infected183    var dbWayanadInfected = document.getElementById("dbWayanadInfected").value.trim();184    if(dbWayanadInfected.length != 0){185        wayanadInfectedRef.set(dbWayanadInfected);186        document.getElementById("dbWayanadInfected").value = '';187    }188    //update each dist Recovered189    var dbWayanadRecovered = document.getElementById("dbWayanadRecovered").value.trim();190    if(dbWayanadRecovered.length != 0){191        wayanadRecoveredRef.set(dbWayanadRecovered);192        document.getElementById("dbWayanadRecovered").value = '';193    }194    //update each dist infected195    var dbKozhikodeInfected = document.getElementById("dbKozhikodeInfected").value.trim();196    if(dbKozhikodeInfected.length != 0){197        kozhikodeInfectedRef.set(dbKozhikodeInfected)198        document.getElementById("dbKozhikodeInfected").value = '';199    }200    //update each dist Recovered201    var dbKozhikodeRecovered = document.getElementById("dbKozhikodeRecovered").value.trim();202    if(dbKozhikodeRecovered.length != 0){203        kozhikodeRecoveredRef.set(dbKozhikodeRecovered)204        document.getElementById("dbKozhikodeRecovered").value = '';205    }206    //update each dist infected207    var dbMalappuramInfected = document.getElementById("dbMalappuramInfected").value.trim();208    if(dbMalappuramInfected.length != 0){209        malappuramInfectedRef.set(dbMalappuramInfected)210        document.getElementById("dbMalappuramInfected").value = '';211    }212     //update each dist Recovered213     var dbMalappuramRecovered = document.getElementById("dbMalappuramRecovered").value.trim();214     if(dbMalappuramRecovered.length != 0){215         malappuramRecoveredRef.set(dbMalappuramRecovered)216         document.getElementById("dbMalappuramRecovered").value = '';217     }218    //update each dist infected219    var dbPalakkadInfected = document.getElementById("dbPalakkadInfected").value.trim();220    if(dbPalakkadInfected.length != 0){221        palakkadInfectedRef.set(dbPalakkadInfected)222        document.getElementById("dbPalakkadInfected").value = '';223    }224    //update each dist Recovered225    var dbPalakkadRecovered = document.getElementById("dbPalakkadRecovered").value.trim();226    if(dbPalakkadRecovered.length != 0){227        palakkadRecoveredRef.set(dbPalakkadRecovered)228        document.getElementById("dbPalakkadRecovered").value = '';229    }230    //update each dist infected231    var dbThrissurInfected = document.getElementById("dbThrissurInfected").value.trim();232    if(dbThrissurInfected.length != 0){233        thrissurInfectedRef.set(dbThrissurInfected)234        document.getElementById("dbThrissurInfected").value = '';235    }236    //update each dist Recovered237    var dbThrissurRecovered = document.getElementById("dbThrissurRecovered").value.trim();238    if(dbThrissurRecovered.length != 0){239        thrissurRecoveredRef.set(dbThrissurRecovered)240        document.getElementById("dbThrissurRecovered").value = '';241    }242    //update each dist infected243    var dbEranakulamInfected = document.getElementById("dbEranakulamInfected").value.trim();244    if(dbEranakulamInfected.length != 0){245        eranakulamInfectedRef.set(dbEranakulamInfected)246        document.getElementById("dbEranakulamInfected").value = '';247    }248    //update each dist Recovered249    var dbEranakulamRecovered = document.getElementById("dbEranakulamRecovered").value.trim();250    if(dbEranakulamRecovered.length != 0){251        eranakulamRecoveredRef.set(dbEranakulamRecovered)252        document.getElementById("dbEranakulamRecovered").value = '';253    }254    //update each dist infected255    var dbKottayamInfected = document.getElementById("dbKottayamInfected").value.trim();256    if(dbKottayamInfected.length != 0){257        kottayamInfectedRef.set(dbKottayamInfected)258        document.getElementById("dbKottayamInfected").value = '';259    }260    //update each dist Recovered261    var dbKottayamRecovered = document.getElementById("dbKottayamRecovered").value.trim();262    if(dbKottayamRecovered.length != 0){263        kottayamRecoveredRef.set(dbKottayamRecovered)264        document.getElementById("dbKottayamRecovered").value = '';265    }266    //update each dist infected267    var dbIdukkiInfected = document.getElementById("dbIdukkiInfected").value.trim();268    if(dbIdukkiInfected.length != 0){269        idukkiInfectedRef.set(dbIdukkiInfected);270        document.getElementById("dbIdukkiInfected").value = '';271    }272    //update each dist Recovered273    var dbIdukkiRecovered = document.getElementById("dbIdukkiRecovered").value.trim();274    if(dbIdukkiRecovered.length != 0){275        idukkiRecoveredRef.set(dbIdukkiRecovered);276        document.getElementById("dbIdukkiRecovered").value = '';277    }278    //update each dist infected279    var dbAlappuzhaInfected = document.getElementById("dbAlappuzhaInfected").value.trim();280    if(dbAlappuzhaInfected.length != 0){281        alappuzhaInfectedRef.set(dbAlappuzhaInfected);282        document.getElementById("dbAlappuzhaInfected").value = '';283    }284    //update each dist Recovered285    var dbAlappuzhaRecovered = document.getElementById("dbAlappuzhaRecovered").value.trim();286    if(dbAlappuzhaRecovered.length != 0){287        alappuzhaRecoveredRef.set(dbAlappuzhaRecovered);288        document.getElementById("dbAlappuzhaRecovered").value = '';289    }290    //update each dist infected291    var dbPathanamthittaInfected = document.getElementById("dbPathanamthittaInfected").value.trim();292    if(dbPathanamthittaInfected.length != 0){293        pathanamthittaInfectedRef.set(dbPathanamthittaInfected);294        document.getElementById("dbPathanamthittaInfected").value = '';295    }296    //update each dist Recovered297    var dbPathanamthittaRecovered = document.getElementById("dbPathanamthittaRecovered").value.trim();298    if(dbPathanamthittaRecovered.length != 0){299        pathanamthittaRecoveredRef.set(dbPathanamthittaRecovered);300        document.getElementById("dbPathanamthittaRecovered").value = '';301    }302    //update each dist infected303    var dbKollamInfected = document.getElementById("dbKollamInfected").value.trim();304    if(dbKollamInfected.length != 0){305        kollamInfectedRef.set(dbKollamInfected);306        document.getElementById("dbKollamInfected").value = '';307    }308    //update each dist Recovered309    var dbKollamRecovered = document.getElementById("dbKollamRecovered").value.trim();310    if(dbKollamRecovered.length != 0){311        kollamRecoveredRef.set(dbKollamRecovered);312        document.getElementById("dbKollamRecovered").value = '';313    }314    //update each dist infected315    var dbThiruvananthapuramInfected = document.getElementById("dbThiruvananthapuramInfected").value.trim();316    if(dbThiruvananthapuramInfected.length != 0){317        thiruvananthapuramInfectedRef.set(dbThiruvananthapuramInfected);318        document.getElementById("dbThiruvananthapuramInfected").value = '';319    }320    var dbThiruvananthapuramRecovered = document.getElementById("dbThiruvananthapuramRecovered").value.trim();321    if(dbThiruvananthapuramRecovered.length != 0){322        thiruvananthapuramRecoveredRef.set(dbThiruvananthapuramRecovered);323        document.getElementById("dbThiruvananthapuramRecovered").value = '';324    }325    updateMoment = moment().format('DD.MM.YYYY, h:mm a');326    dbUpdateTimeRef.set(updateMoment);327}328function updateTime(ref, id){329    ref.on('value', function(snapshot){330        var v = snapshot.val();331        document.getElementById(id).innerHTML = moment(v, "DD.MM.YYYY h:mm a").locale('ml').fromNow() + ' à´
à´ªàµà´¡àµà´±àµà´±àµ à´àµà´¯àµà´¤àµ';332    });333}334updateTime(dbUpdateTimeRef, 'moment');335// const ml = moment('2020.01.01', 'YYYY.MM.DD').locale('ml')336// console.log(ml.fromNow());337//dist today inf338var kasargodTodayRef = firebaseRef.child('kerala-dist').child('kasargod').child('today');339var kannurTodayRef = firebaseRef.child('kerala-dist').child('kannur').child('today');340var wayanadTodayRef = firebaseRef.child('kerala-dist').child('wayanad').child('today');341var kozhikodeTodayRef = firebaseRef.child('kerala-dist').child('kozhikode').child('today');342var malappuramTodayRef = firebaseRef.child('kerala-dist').child('malappuram').child('today');343var palakkadTodayRef = firebaseRef.child('kerala-dist').child('palakkad').child('today');344var thrissurTodayRef = firebaseRef.child('kerala-dist').child('thrissur').child('today');345var eranakulamTodayRef = firebaseRef.child('kerala-dist').child('eranakulam').child('today');346var kottayamTodayRef = firebaseRef.child('kerala-dist').child('kottayam').child('today');347var idukkiTodayRef = firebaseRef.child('kerala-dist').child('idukki').child('today');348var alappuzhaTodayRef = firebaseRef.child('kerala-dist').child('alappuzha').child('today');349var pathanamthittaTodayRef = firebaseRef.child('kerala-dist').child('pathanamthitta').child('today');350var kollamTodayRef = firebaseRef.child('kerala-dist').child('kollam').child('today');351var thiruvananthapuramTodayRef = firebaseRef.child('kerala-dist').child('thiruvananthapuram').child('today');352var keralaTodayRef = firebaseRef.child('kerala-total').child('today');353updateRef(kasargodTodayRef, 'kasargodToday');354updateRef(kannurTodayRef, 'kannurToday');355updateRef(wayanadTodayRef, 'wayanadToday');356updateRef(kozhikodeTodayRef, 'kozhikodeToday');357updateRef(malappuramTodayRef, 'malappuramToday');358updateRef(palakkadTodayRef, 'palakkadToday');359updateRef(thrissurTodayRef, 'thrissurToday');360updateRef(eranakulamTodayRef, 'eranakulamToday');361updateRef(kottayamTodayRef, 'kottayamToday');362updateRef(idukkiTodayRef, 'idukkiToday');363updateRef(alappuzhaTodayRef, 'alappuzhaToday');364updateRef(pathanamthittaTodayRef, 'pathanamthittaToday');365updateRef(kollamTodayRef, 'kollamToday');366updateRef(thiruvananthapuramTodayRef, 'thiruvananthapuramToday');367updateRef(keralaTodayRef, 'keralaToday');368function dbUpdateToday(){369    var dbKeralaToday = document.getElementById("dbKeralaToday").value.trim();370    if(dbKeralaToday.length != 0){371        keralaTodayRef.set(dbKeralaToday);372        document.getElementById("dbKeralaToday").value = '';373    }374    var dbKasargodToday = document.getElementById("dbKasargodToday").value.trim();375    if(dbKasargodToday.length != 0){376        kasargodTodayRef.set(dbKasargodToday);377        document.getElementById("dbKasargodToday").value = '';378    }379    var dbKannurToday = document.getElementById("dbKannurToday").value.trim();380    if(dbKannurToday.length != 0){381        kannurTodayRef.set(dbKannurToday);382        document.getElementById("dbKannurToday").value = '';383    }384    var dbWayanadToday = document.getElementById("dbWayanadToday").value.trim();385    if(dbWayanadToday.length != 0){386        wayanadTodayRef.set(dbWayanadToday);387        document.getElementById("dbWayanadToday").value = '';388    }389    var dbKozhikodeToday = document.getElementById("dbKozhikodeToday").value.trim();390    if(dbKozhikodeToday.length != 0){391        kozhikodeTodayRef.set(dbKozhikodeToday);392        document.getElementById("dbKozhikodeToday").value = '';393    }394    var dbMalappuramToday = document.getElementById("dbMalappuramToday").value.trim();395    if(dbMalappuramToday.length != 0){396        malappuramTodayRef.set(dbMalappuramToday);397        document.getElementById("dbMalappuramToday").value = '';398    }399    var dbPalakkadToday = document.getElementById("dbPalakkadToday").value.trim();400    if(dbPalakkadToday.length != 0){401        palakkadTodayRef.set(dbPalakkadToday);402        document.getElementById("dbPalakkadToday").value = '';403    }404    var dbThrissurToday = document.getElementById("dbThrissurToday").value.trim();405    if(dbThrissurToday.length != 0){406        thrissurTodayRef.set(dbThrissurToday);407        document.getElementById("dbThrissurToday").value = '';408    }409    var dbEranakulamToday = document.getElementById("dbEranakulamToday").value.trim();410    if(dbEranakulamToday.length != 0){411        eranakulamTodayRef.set(dbEranakulamToday);412        document.getElementById("dbEranakulamToday").value = '';413    }414    var dbKottayamToday = document.getElementById("dbKottayamToday").value.trim();415    if(dbKottayamToday.length != 0){416        kottayamTodayRef.set(dbKottayamToday);417        document.getElementById("dbKottayamToday").value = '';418    }419    var dbIdukkiToday = document.getElementById("dbIdukkiToday").value.trim();420    if(dbIdukkiToday.length != 0){421        idukkiTodayRef.set(dbIdukkiToday);422        document.getElementById("dbIdukkiToday").value = '';423    }424    var dbAlappuzhaToday = document.getElementById("dbAlappuzhaToday").value.trim();425    if(dbAlappuzhaToday.length != 0){426        alappuzhaTodayRef.set(dbAlappuzhaToday);427        document.getElementById("dbAlappuzhaToday").value = '';428    }429    var dbPathanamthittaToday = document.getElementById("dbPathanamthittaToday").value.trim();430    if(dbPathanamthittaToday.length != 0){431        pathanamthittaTodayRef.set(dbPathanamthittaToday);432        document.getElementById("dbPathanamthittaToday").value = '';433    }434    var dbKollamToday = document.getElementById("dbKollamToday").value.trim();435    if(dbKollamToday.length != 0){436        kollamTodayRef.set(dbKollamToday);437        document.getElementById("dbKollamToday").value = '';438    }439    var dbThiruvananthapuramToday = document.getElementById("dbThiruvananthapuramToday").value.trim();440    if(dbThiruvananthapuramToday.length != 0){441        thiruvananthapuramTodayRef.set(dbThiruvananthapuramToday);442        document.getElementById("dbThiruvananthapuramToday").value = '';443    }444}445//-------------------------446var todaySwitch = firebaseRef.child('kerala-total').child('todaySwitch');447updateRef(todaySwitch, 'toggleText');448toggleButton.addEventListener('click', event => {449    var state;450    todaySwitch.on('value', function(snapshot){451        state = snapshot.val();452    });453    if(state == 'on'){454        todaySwitch.set('off');455    } else {456        todaySwitch.set('on');457    }...postsHandler.js
Source:postsHandler.js  
1const { db, admin, auth, functions } = require("../utils/firebase");2exports.getPosts = async (req, res) => {3  const postsRef = await db.collection("post").get();4  let posts = [];5  postsRef.forEach((doc) => posts.push(doc.data()));6  return res.json(posts);7};8exports.getInfo = async (req, res) => {9  const postsRef = await db.collection("info").get();10  let posts = [];11  postsRef.forEach((doc) => posts.push(doc.data()));12  return res.json(posts);13};14exports.updateUserInfo = async (req, res) => {15  const { userName } = req.body;16  const userId = req.user.uid;17  try {18    const updateUserRef = await db.collection("users").doc(userId);19    let data = {20      userName,21    };22    updateUserRef.update(data);23    res.status(200).send({24      status: "success",25      message: "data added successfully",26      data: data,27    });28  } catch (error) {29    res.status(500).json(error.message);30  }31};32exports.deleteUser = (req, res) => {33  admin.auth34    .deleteUser(uid)35    .then(() => {36      console.log("Successfully deleted user");37    })38    .catch((error) => {39      console.log("Error deleting user:", error);40    });41};42// exports.allUsers = async (req, res) =>{43//   try {44//       let listUsers = await auth.listUsers()45//       // for (i = 0; i < listUsers.users.length; i++){46//       //   var obj = listUsers.users[i].email47//       //   console.log(obj)48//       // }49//       var obj = listUsers.users.map(emails => emails.email)50//       console.log(listUsers)51//       return res.status(200).send(obj)52//   } catch (err) {53//       return res.status(500).send({ message: `${err}`});54//   }55// }56exports.postData = async (req, res) => {57  const { title, text } = req.body;58  try {59    const dataRef = await db.collection("post").doc();60    let entryData = {61      id: new Date(),62      title,63      text,64    };65    dataRef.set(entryData);66    res.status(200).send({67      status: "success",68      message: "entry added successfully",69      data: entryData,70    });71  } catch (error) {72    res.status(500).json(error.message);73  }74};75exports.postAtsiliepimus = async (req, res) => {76  const { atsiliepimas, name } = req.body;77  // const docId = req.params.id;78  const userId = req.user.uid;79  const userEmail = req.user.email;80  try {81    const dataRef = await db.collection("atsiliepimai").doc();82    let entryData = {83      time: new Date(),84      userId: userId,85      email: userEmail,86      documentId: dataRef.id,87      atsiliepimas,88      name,89    };90    dataRef.set(entryData);91    res.status(200).send({92      status: "success",93      message: "entry added successfully",94      data: entryData,95    });96  } catch (error) {97    res.status(500).json(error.message);98  }99};100exports.postVizitoInfo = async (req, res) => {101  const {102    Vardas,103    Pavarde,104    TelefonoNr,105    ElPastas,106    DatePicker,107    VaikoDuom,108  } = req.body;109  try {110    const vizitoRef = await db.collection("vizitas").doc();111    let vizitoData = {112      time: admin.firestore.Timestamp.fromDate(new Date(DatePicker)),113      createdTime: new Date(),114      perziureta: false,115      vardas: Vardas,116      pavarde: Pavarde,117      telNr: TelefonoNr,118      elPastas: ElPastas,119      vaikoDuomenys: VaikoDuom,120      documentId: vizitoRef.id,121    };122    vizitoRef.set(vizitoData);123    res.status(200).send({124      status: "success",125      message: "entry added successfully",126      data: vizitoData,127    });128  } catch (error) {129    res.status(500).json(error.message);130  }131};132exports.postKlausimas = async (req, res) => {133  const { klausimas, anonymousEmail, perziureta } = req.body;134  try {135    const klausimoRef = await db.collection("klausimai").doc(anonymousEmail);136    let Data = {137      createTime: new Date(),138      klausimas,139      anonymousEmail,140      perziureta: false,141    };142    klausimoRef.set(Data);143    res.status(200).send({144      status: "success",145      message: "data added successfully",146      data: Data,147    });148  } catch (error) {149    res.status(500).json(error.message);150  }151};152exports.postVaikoRez = async (req, res) => {153  const userId = req.user.uid;154  const {155    TevuVardas,156    TevuPavarde,157    TevuEmail,158    TevuTelNum,159    VaikoVardas,160    VaikoAmzius,161    AntrasVaikas,162    AntroVaikoVardas,163    AntroVaikoAmzius,164  } = req.body;165  // console.log(AntrasVaikas);166  if (AntrasVaikas === false) {167    try {168      const vaikoRezRef = await db.collection("vaikoRezervacija").doc(userId);169      let vaikoData = {170        createTime: new Date(),171        userId: userId,172        TevuVardas,173        TevuPavarde,174        TevuEmail,175        TevuTelNum,176        VaikoVardas,177        VaikoAmzius,178        AntrasVaikas,179        AdminConfirm: false,180      };181      if (!Number.isInteger(VaikoAmzius)) {182        res.status(500).json("Vaiko amzius turi buti sveikasis skaicius");183      } else if (VaikoAmzius > 3 || VaikoAmzius < 1) {184        res185          .status(500)186          .json(187            "Pirmos vaiko amzius negali buti didesnis nei 3 metai ir ne mazesnis nei 1 metai"188          );189      } else vaikoRezRef.set(vaikoData);190      const vaikoLankomumoRez = await db191        .collection("vaikoLankomumas")192        .doc(userId);193      let vaikoLankomumoData = {194        createTime: new Date(),195        userId: userId,196        Pirm_Pirmadienis: false,197        Pirm_Antradienis: false,198        Pirm_Treciadienis: false,199        Pirm_Ketvirtadienis: false,200        Pirm_Penktadienis: false,201        AntrasVaikas,202        TevuEmail,203      };204      vaikoLankomumoRez.set(vaikoLankomumoData);205      res.status(200).send({206        status: "success",207        message: "Duomenys ikelti vieno vaiko",208        data: vaikoData,209      });210    } catch (error) {211      res.status(500).json(error.message);212    }213  } else if (AntrasVaikas === true) {214    try {215      const vaikoRezRef = await db.collection("vaikoRezervacija").doc(userId);216      let vaikoData = {217        createTime: new Date(),218        userId: userId,219        TevuVardas,220        TevuPavarde,221        TevuEmail,222        TevuTelNum,223        VaikoVardas,224        VaikoAmzius,225        AntrasVaikas,226        AntroVaikoVardas,227        AntroVaikoAmzius,228        AdminConfirm: false,229      };230      if (!Number.isInteger(AntroVaikoAmzius)) {231        res.status(500).json("Vaiko amzius turi buti sveikasis skaicius");232      } else if (AntroVaikoAmzius > 3 || AntroVaikoAmzius < 1) {233        res234          .status(500)235          .json(236            "Antro vaiko amzius negali buti didesnis nei 3 metai ir ne mazesnis nei 1 metai"237          );238      } else if (!Number.isInteger(TevuTelNum)) {239        res.status(500).json("Telefono numeris turi susideti tik is skaiciu");240      } else vaikoRezRef.set(vaikoData);241      const vaikoLankomumoRez = await db242        .collection("vaikoLankomumas")243        .doc(userId);244      let vaikoLankomumoData = {245        createTime: new Date(),246        userId: userId,247        Pirm_Pirmadienis: false,248        Pirm_Antradienis: false,249        Pirm_Treciadienis: false,250        Pirm_Ketvirtadienis: false,251        Pirm_Penktadienis: false,252        Antr_Pirmadienis: false,253        Antr_Antradienis: false,254        Antr_Treciadienis: false,255        Antr_Ketvirtadienis: false,256        Antr_Penktadienis: false,257        AntrasVaikas,258        TevuEmail,259      };260      vaikoLankomumoRez.set(vaikoLankomumoData);261      res.status(200).send({262        status: "success",263        message: "Duomenys ikelti dvieju vaiku",264        data: vaikoData,265      });266    } catch (error) {267      res.status(500).json(error.message);268    }269  }270};271exports.updateVaikoLankomumaPirm = async (req, res) => {272  const userId = req.user.uid;273  const updateRef = await db274    .collection("vaikoLankomumas")275    .doc(req.params.id)276    .get();277  try {278    let entryData = {279      Pirm_Pirmadienis: !updateRef.data().Pirm_Pirmadienis,280    };281    updateRef.ref.update(entryData);282    res.status(200).send({283      status: "success",284      data: entryData,285    });286  } catch (error) {287    res.status(500).json(error.message);288  }289};290exports.updateVaikoLankomumaAntr = async (req, res) => {291  const userId = req.user.uid;292  const updateRef = await db293    .collection("vaikoLankomumas")294    .doc(req.params.id)295    .get();296  try {297    let entryData = {298      Pirm_Antradienis: !updateRef.data().Pirm_Antradienis,299    };300    updateRef.ref.update(entryData);301    res.status(200).send({302      status: "success",303      data: entryData,304    });305  } catch (error) {306    res.status(500).json(error.message);307  }308};309exports.updateVaikoLankomumaTrec = async (req, res) => {310  const userId = req.user.uid;311  const updateRef = await db312    .collection("vaikoLankomumas")313    .doc(req.params.id)314    .get();315  try {316    let entryData = {317      Pirm_Treciadienis: !updateRef.data().Pirm_Treciadienis,318    };319    updateRef.ref.update(entryData);320    res.status(200).send({321      status: "success",322      data: entryData,323    });324  } catch (error) {325    res.status(500).json(error.message);326  }327};328exports.updateVaikoLankomumaKetv = async (req, res) => {329  const userId = req.user.uid;330  const updateRef = await db331    .collection("vaikoLankomumas")332    .doc(req.params.id)333    .get();334  try {335    let entryData = {336      Pirm_Ketvirtadienis: !updateRef.data().Pirm_Ketvirtadienis,337    };338    updateRef.ref.update(entryData);339    res.status(200).send({340      status: "success",341      data: entryData,342    });343  } catch (error) {344    res.status(500).json(error.message);345  }346};347exports.updateVaikoLankomumaPenkt = async (req, res) => {348  const userId = req.user.uid;349  const updateRef = await db350    .collection("vaikoLankomumas")351    .doc(req.params.id)352    .get();353  try {354    let entryData = {355      Pirm_Penktadienis: !updateRef.data().Pirm_Penktadienis,356    };357    updateRef.ref.update(entryData);358    res.status(200).send({359      status: "success",360      data: entryData,361    });362  } catch (error) {363    res.status(500).json(error.message);364  }365};366exports.updateVaiko2LankomumaPirm = async (req, res) => {367  const userId = req.user.uid;368  const updateRef = await db369    .collection("vaikoLankomumas")370    .doc(req.params.id)371    .get();372  try {373    let entryData = {374      Antr_Pirmadienis: !updateRef.data().Antr_Pirmadienis,375    };376    updateRef.ref.update(entryData);377    res.status(200).send({378      status: "success",379      data: entryData,380    });381  } catch (error) {382    res.status(500).json(error.message);383  }384};385exports.updateVaiko2LankomumaAntr = async (req, res) => {386  const userId = req.user.uid;387  const updateRef = await db388    .collection("vaikoLankomumas")389    .doc(req.params.id)390    .get();391  try {392    let entryData = {393      Antr_Antradienis: !updateRef.data().Antr_Antradienis,394    };395    updateRef.ref.update(entryData);396    res.status(200).send({397      status: "success",398      data: entryData,399    });400  } catch (error) {401    res.status(500).json(error.message);402  }403};404exports.updateVaiko2LankomumaTrec = async (req, res) => {405  const userId = req.user.uid;406  const updateRef = await db407    .collection("vaikoLankomumas")408    .doc(req.params.id)409    .get();410  try {411    let entryData = {412      Antr_Treciadienis: !updateRef.data().Antr_Treciadienis,413    };414    updateRef.ref.update(entryData);415    res.status(200).send({416      status: "success",417      data: entryData,418    });419  } catch (error) {420    res.status(500).json(error.message);421  }422};423exports.updateVaiko2LankomumaKetv = async (req, res) => {424  const userId = req.user.uid;425  const updateRef = await db426    .collection("vaikoLankomumas")427    .doc(req.params.id)428    .get();429  try {430    let entryData = {431      Antr_Ketvirtadienis: !updateRef.data().Antr_Ketvirtadienis,432    };433    updateRef.ref.update(entryData);434    res.status(200).send({435      status: "success",436      data: entryData,437    });438  } catch (error) {439    res.status(500).json(error.message);440  }441};442exports.updateVaiko2LankomumaPenkt = async (req, res) => {443  const userId = req.user.uid;444  const updateRef = await db445    .collection("vaikoLankomumas")446    .doc(req.params.id)447    .get();448  try {449    let entryData = {450      Antr_Penktadienis: !updateRef.data().Antr_Penktadienis,451    };452    updateRef.ref.update(entryData);453    res.status(200).send({454      status: "success",455      data: entryData,456    });457  } catch (error) {458    res.status(500).json(error.message);459  }460};461exports.getVaikoLankomumoDuom = async (req, res) => {462  const userId = req.user.uid;463  const vaikoDuomRef = await db464    .collection("vaikoLankomumas")465    .where("userId", "==", userId)466    .get();467  let vaikoDuom = [];468  vaikoDuomRef.forEach((doc) => vaikoDuom.push(doc.data()));469  let vaikoData = {470    vaikoDuom,471  };472  return res.json(vaikoData);473};474exports.getVaikoDuom = async (req, res) => {475  const userId = req.user.uid;476  const vaikoDuomRef = await db477    .collection("vaikoRezervacija")478    .where("userId", "==", userId)479    .get();480  let vaikoDuom = [];481  vaikoDuomRef.forEach((doc) => vaikoDuom.push(doc.data()));482  let vaikoData = {483    vaikoDuom,484  };485  return res.json(vaikoData);486};487exports.postVaikoMaistas = async (req, res) => {488  const userId = req.user.uid;489  const { maistoKoregavimas } = req.body;490  try {491    const maistoRef = await db.collection("vaikoRezervacija").doc(userId);492    const getMaistoRef = await db493      .collection("vaikoRezervacija")494      .doc(userId)495      .get();496    let Data = {497      maistoSukurimoData: new Date(),498      maistoKoregavimas,499    };500    if (getMaistoRef._fieldsProto.AdminConfirm.booleanValue === true) {501      maistoRef.update(Data);502      res.status(200).send({503        status: "success",504        message: "data added successfully",505        data: Data,506      });507    } else {508      res.status(403).json("Vaikas dar nepriimtas i darzeli");509    }510  } catch (error) {511    res.status(500).json(error.message);512  }513};514// exports.postZinute = async (req, res) => {515//   const userId = req.user.uid;516//   const { zinute } = req.body;517//   const adminId = "EkK9USOqRLUeLyQ52qUgom7xSrf2"518//   try {519//     const zinutesRef = await db520//       .collection("Zinute")521//       .doc(userId)522//       .collection("Tekstas");523//     let data = {524//       createTime: new Date(),525//       zinute,526//       userId: userId,527//       adminId: adminId,528//     };529//     zinutesRef.add(data);530//     res.status(200).send({531//       status: "success",532//       message: "data added successfully",533//       data: data,534//     });535//   } catch (error) {536//     res.status(500).json(error.message);537//   }538// };539// exports.getZinutesDuom = async (req, res) => {540//   const userId = req.user.uid;541//   const adminId = "EkK9USOqRLUeLyQ52qUgom7xSrf2"542//   console.log(adminId)543//   try {544//     const zinutesDuomRef = await db545//       .collection("Zinute")546//       .doc(userId + adminId)547//       .collection("Tekstas")548//       .where("adminId", "==", adminId)549//       .get();550//     let zinutesDuom = [];551//     zinutesDuomRef.forEach((doc) => zinutesDuom.push(doc.data()));552//     let zinutesData = {553//       zinutesDuom,554//     };555//     res.json(zinutesData);556//   } catch (error) {557//     res.status(500).json(error.message);558//   }559// };560exports.getNaujausiAtsiliepimai = async (req, res) => {561  const atsiliepimuRef = await db562    .collection("atsiliepimai")563    .orderBy("time", "desc")564    .limit(4)565    .get();566  let atsiliepimai = [];567  atsiliepimuRef.forEach((doc) => atsiliepimai.push(doc.data()));568  let data = {569    atsiliepimai,570  };571  return res.json(data);572};573exports.deleteKomentara = async (req, res) => {574  // const userId = req.user.uid;575  await db576    .collection("atsiliepimai")577    .doc(req.params.id)578    .delete()579    .then(() => {580      console.log(req.params.id);581      if (!req.params.id) {582        res.status(500).json(error.meesage);583      } else {584        res.status(200).json("Success");585        // res.status(200).send({586        //   status: "success",587        // });588      }589    })590    .catch((error) => {591      res.status(500).json(error.message);592    });593  // const deleteRef =await db594  //   .collection("Atsiliepimai")595  //   .doc(req.params.id)596  //   .delete()597  //   .then(598  //     res.status(200).send({599  //       status: "duomenys istrinti",600  //     })601  //   ).catch((error) => alert(error));602  // .then(603  //   res.status(200).send({604  //     status: "duomenys istrinti",605  //   })606  // )607  // .catch((error) => alert(error.message));...main.jsx
Source:main.jsx  
...32      if (websocket.current && websocket.current.readyState === WebSocket.OPEN) disconnect();33    }34  }, []);35  const resetState = () => {36    updateRef(0, connectionStatusRef, setConnectionStatus);37    updateRef(null, tokenRef, setToken);38    updateRef(null, nameRef, setName);39    updateRef(null, myIdRef, setMyId);40    updateRef(null, myPlayerRef, setMyPlayer);41    updateRef({ board: [0, 0, 0, 0, 0, 0, 0, 0, 0] }, gameStateRef, setGameState);42  }43  const useInterval = (callback, delay) => {44    const savedCallback = useRef();45    useEffect(() => {46      savedCallback.current = callback;47    }, [callback]);48    useEffect(() => {49      function tick() {50        savedCallback.current();51      }52      if (delay !== null) {53        let id = setInterval(tick, delay);54        return () => clearInterval(id);55      }56    }, [delay]);57  }58  const updateRef = (newValue, ref, stateFunc) => {59    ref.current = newValue;60    stateFunc(newValue);61  }62  const findMyPlayer = (state) => {63    if (myId === state.idPlayer1 || myIdRef.current === state.idPlayer1) return 1;64    if (myId === state.idPlayer2 || myIdRef.current === state.idPlayer2) return 2;65    return null;66  }67  const findMyName = () => {68    if(myIdRef.current === gameStateRef.current.idPlayer1) return gameStateRef.current.namePlayer1;69    if(myIdRef.current === gameStateRef.current.idPlayer2) return gameStateRef.current.namePlayer2;70    return '';71  }72  const makeResult = (result) => {73    let message = '';74    let icon = null;75    if(result === 2) {76      message = 'Empate!';77      icon = (<MehOutlined />);78    }79    if(result === 3 && myPlayerRef.current === 1) {80      message = 'Parabéns ' + findMyName() + ', você venceu!';81      icon = (<SmileOutlined />);82    }83    if(result === 3 && myPlayerRef.current === 2) {84      message = findMyName() + ', infelizmente você perdeu!';85      icon = (<FrownOutlined />);86    }87    if(result === 4 && myPlayerRef.current === 1) {88      message = findMyName() + ', infelizmente você perdeu!';89      icon = (<FrownOutlined />);90    }91    if(result === 4 && myPlayerRef.current === 2) {92      message = 'Parabéns ' + findMyName() + ', você venceu!';93      icon = (<SmileOutlined />);94    }95    return {96      message: message,97      icon: icon98    };99  }100  const showResults = (status) => {101    updateRef(makeResult(status), resultsObjRef, setResultsObj);102    updateRef(true, resultsVisibleRef, setResultsVisible);103    setTimeout(104      function() {105        disconnect();106      }, 1000);107    }108  const handleAction = (response, ws) => {109    const action = response.action;110    switch (action) {111      case 2:112        if (response.token) {113          updateRef(jwt_decode(response.token).clientId, myIdRef, setMyId);114          updateRef(response.token, tokenRef, setToken);115          if (response.message) message.success(response.message);116          const request = {117            'action': 3,118            'token': response.token119          }120          ws.send(JSON.stringify(request));121        }122        else if (response.message) message.error(response.message);123        break;124      case 3:125        message.success('Você foi adicionado ao jogo');126        break;127      case 4:128        resetState();129        disconnect();130        if (response.message) message.info(response.message);131        break;132      case 5:133        if (response.message) message.info(response.message);134        break;135      case 6:136        if (response.gameState) {137          if (gameStateRef.current) {138            if (gameStateRef.current.status === 1 && response.gameState.status === 0) message.info('Seu oponente desconectou. O jogo foi encerrado');139          }140          if (!myPlayer) {141            updateRef(findMyPlayer(response.gameState), myPlayerRef, setMyPlayer);142          }143          if([2, 3, 4].includes(response.gameState.status)) showResults(response.gameState.status);144          updateRef(response.gameState, gameStateRef, setGameState);145        }146        if (response.message) message.info(response.message);147        break;148      default:149        break;150    }151  }152  const connect = () => {153    const protocol = 'ws:';154    const hostname = document.location.hostname;155    const port = socketPort;156    const ip = protocol + '//' + hostname + ':' + port;157    var ws = new WebSocket(ip);158    websocket.current = ws;159    updateRef(1, connectionStatusRef, setConnectionStatus);160    ws.onopen = () => {161      updateRef(2, connectionStatusRef, setConnectionStatus);162      const request = {163        'action': 2,164        'name': name165      }166      ws.send(JSON.stringify(request));167    }168    ws.onmessage = (response) => {169      response = JSON.parse(response.data);170      console.log(response);171      if (response && response.action) {172        handleAction(response, ws);173      }174      else if (response && response.message) message.error(response.message);175    }176    ws.onclose = () => {177      message.error('Desconectado do servidor');178      resetState();179    }180  }181  useInterval(() => {182    const syncRequest = {183      'action': 6,184      'token': token185    }186    websocket.current.send(JSON.stringify(syncRequest));187  }, (token && websocket.current.readyState === WebSocket.OPEN) ? syncDelay : null);188  const disconnect = () => {189    const request = {190      'action': 4,191      'name': name,192      'token': token193    }194    if (websocket.current && websocket.current.readyState === WebSocket.OPEN) {195      websocket.current.send(JSON.stringify(request));196      websocket.current.close();197    }198    resetState();199  }200  const setNameValue = (e) => {201    updateRef(e.target.value, nameRef, setName);202  }203  return (204    <div style={{ textAlign: 'center', height: '100vh' }}>205      <div style={{ height: '10%' }}>206        <Typography.Title level={1} style={{transform: 'translateY(50%)', WebkitTransform: 'translateY(50%)'}}>BFTicTacToe</Typography.Title>207      </div>208      {connectionStatus !== 2 ?209        <Row justify='center'>210          <Col span={24}>211            Nome: <Input style={{ width: '200px' }} onChange={setNameValue} value={name} disabled={connectionStatus !== 0}></Input>212          </Col>213          <Col span={24}>214            <Button type='primary' onClick={connect} style={{ margin: '1em' }} icon={<PlayCircleOutlined />} disabled={!name}>Conectar</Button>215          </Col>...RefrigeratorCard.test.js
Source:RefrigeratorCard.test.js  
1import React from "react";2import { render } from "@testing-library/react";3import RefrigeratorCard from "../components/RefrigeratorCard";4import userEvent from "@testing-library/user-event";5import backendAPI from "../Utils/backendAPI";6const REFRIGERATOR_INFO = {7  refrigerator_name: "something",8  id: 2,9};10it("renders successfully", () => {11  const refrigeratorCard = render(12    <RefrigeratorCard refrigerator={REFRIGERATOR_INFO} />13  );14  expect(refrigeratorCard.getByText("Created")).toBeTruthy();15});16it("doesn't show Rename and Delete if user is not owner", () => {17  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: false };18  const refrigeratorCard = render(19    <RefrigeratorCard refrigerator={refrigerator} />20  );21  expect(refrigeratorCard.queryByText("Rename")).toBeNull();22  expect(refrigeratorCard.queryByText("Delete")).toBeNull();23});24it("shows Rename and Delete if user is owner", () => {25  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };26  const refrigeratorCard = render(27    <RefrigeratorCard refrigerator={refrigerator} />28  );29  expect(refrigeratorCard.queryByText("Rename")).toBeTruthy();30  expect(refrigeratorCard.queryByText("Delete")).toBeTruthy();31});32it("clicking on Rename should open a rename modal", () => {33  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };34  const refrigeratorCard = render(35    <RefrigeratorCard refrigerator={refrigerator} />36  );37  const editButton = refrigeratorCard.queryByText("Rename");38  userEvent.click(editButton);39  expect(refrigeratorCard.queryByText("Edit Refrigerator")).toBeTruthy();40  expect(refrigeratorCard.queryByText("Cancel")).toBeTruthy();41  expect(refrigeratorCard.queryByText("Update")).toBeTruthy();42});43it("clicking cancel on rename modal closes modal", () => {44  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };45  const refrigeratorCard = render(46    <RefrigeratorCard refrigerator={refrigerator} />47  );48  const editButton = refrigeratorCard.queryByText("Rename");49  userEvent.click(editButton);50  const cancelButton = refrigeratorCard.queryByText("Cancel");51  userEvent.click(cancelButton);52  expect(refrigeratorCard.queryByText("Edit Refrigerator")).toBeNull();53  expect(refrigeratorCard.queryByText("Cancel")).toBeNull();54  expect(refrigeratorCard.queryByText("Update")).toBeNull();55});56it("clicking on Update on rename modal calls backendAPI", () => {57  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };58  backendAPI.updateRefrigerator = jest.fn(() =>59    Promise.resolve([{ ...refrigerator, refrigerator_name: "something2" }])60  );61  const updateRef = jest.fn();62  const refrigeratorCard = render(63    <RefrigeratorCard updateRef={updateRef} refrigerator={refrigerator} />64  );65  const editButton = refrigeratorCard.queryByText("Rename");66  userEvent.click(editButton);67  const updateButton = refrigeratorCard.queryByText("Update");68  userEvent.click(updateButton);69  expect(backendAPI.updateRefrigerator).toHaveBeenCalled();70});71it("clicking on Delete should open delete modal", () => {72  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };73  const refrigeratorCard = render(74    <RefrigeratorCard refrigerator={refrigerator} />75  );76  const deleteButton = refrigeratorCard.queryByText("Delete");77  userEvent.click(deleteButton);78  expect(refrigeratorCard.queryByText("Delete Refrigerator")).toBeTruthy();79  expect(80    refrigeratorCard.queryByText(81      `Are you sure you want to delete "${refrigerator.refrigerator_name}"?`82    )83  ).toBeTruthy();84  expect(refrigeratorCard.queryByText("No")).toBeTruthy();85  expect(refrigeratorCard.queryAllByText("DELETE")).toBeTruthy();86});87it("clicking on delete on delete modal calls backendAPI", () => {88  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };89  backendAPI.deleteRefrigerator = jest.fn(() =>90    Promise.resolve([{ ...refrigerator, refrigerator_name: "something2" }])91  );92  const updateRef = jest.fn();93  const refrigeratorCard = render(94    <RefrigeratorCard updateRef={updateRef} refrigerator={refrigerator} />95  );96  const deleteButton = refrigeratorCard.queryByTestId("delete-refrigerator");97  userEvent.click(deleteButton);98  const confirmDelete = refrigeratorCard.queryByTestId(99    "confirm-delete-refrigerator"100  );101  userEvent.click(confirmDelete);102  expect(backendAPI.deleteRefrigerator).toHaveBeenCalled();103});104it("confirming delete calls updateRef if statuscode is 200", async () => {105  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };106  backendAPI.deleteRefrigerator = jest.fn(() =>107    Promise.resolve({108      statusCode: 200,109    })110  );111  const updateRef = jest.fn();112  const refrigeratorCard = render(113    <RefrigeratorCard updateRef={updateRef} refrigerator={refrigerator} />114  );115  const deleteButton = refrigeratorCard.queryByTestId("delete-refrigerator");116  userEvent.click(deleteButton);117  const confirmDelete = refrigeratorCard.queryByTestId(118    "confirm-delete-refrigerator"119  );120  userEvent.click(confirmDelete);121  expect(backendAPI.deleteRefrigerator).toHaveBeenCalled();122  await new Promise((resolve) => setTimeout(resolve, 100));123  expect(updateRef).toHaveBeenCalled();124});125it("clicking on No on delete modal closes modal", () => {126  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };127  const refrigeratorCard = render(128    <RefrigeratorCard refrigerator={refrigerator} />129  );130  const deleteButton = refrigeratorCard.queryByTestId("delete-refrigerator");131  userEvent.click(deleteButton);132  const noButton = refrigeratorCard.queryByText("No");133  userEvent.click(noButton);134  expect(refrigeratorCard.queryByText("Delete Refrigerator")).toBeNull();135  expect(136    refrigeratorCard.queryByText(137      `Are you sure you want to delete "${refrigerator.refrigerator_name}"?`138    )139  ).toBeNull();140  expect(refrigeratorCard.queryByText("No")).toBeNull();141});142it("clicking on refrigerator card calls handleClick prop", () => {143  const refrigerator = { ...REFRIGERATOR_INFO, isOwner: true };144  const handleClick = jest.fn();145  const refrigeratorCard = render(146    <RefrigeratorCard handleClick={handleClick} refrigerator={refrigerator} />147  );148  userEvent.click(refrigeratorCard.queryByText(refrigerator.refrigerator_name));149  expect(handleClick).toHaveBeenCalled();...AuthContext.js
Source:AuthContext.js  
1import React, { useContext, useState, useEffect } from 'react'2import { useHistory } from "react-router-dom";3import firebase from "firebase/app";4import "firebase/auth";5import "firebase/firestore";6import "firebase/storage"7const crypto = require('crypto');8const AuthContext = React.createContext()9export function useAuth() {10    return useContext(AuthContext);11}12export function AuthProvider({ children }) {13    useEffect(() => fetchData(), [])14    const [currentUser, setCurrentUser] = useState();15    const [loading, setLoading] = useState(true);16    const [isDelete, setIsDelete] = useState(false);17    const [isAdd, setIsAdd] = useState(false);18    const [urlLink, setUrlLink] = useState()19    const [detail, setDetail] = useState('')20    const storageRef = firebase.storage().ref()21    const [fileRef, setFileRef] = useState('')22    const jobsRef = firebase.firestore().collection('jobs');23    const [jobs, setJobs] = useState([])24    async function fetchData(path) {25        if (path === "/DashBoard") {26            const snapshot = await jobsRef.where('email', '==', currentUser.email).get();27            const data = []28            snapshot.forEach(doc => {29                var temp = doc.data()30                temp.docId = doc.id31                data.push(temp)32            });33            setJobs(data)34        } else {35            const snapshot = await jobsRef.get()36            const data = []37            snapshot.forEach(doc => {38                var temp = doc.data()39                temp.docId = doc.id40                data.push(temp)41            });42            setJobs(data)43        }44    }45    function AddJob() {46        setIsAdd(!isAdd)47    }48    function jobDetails(docId) {49        jobsRef.doc(docId).get().then((doc) => {50            if (doc.exists) {51                const details = doc.data();52                return details53            } else {54                // doc.data() will be undefined in this case55                console.log("No such document!");56            }57        })58    }59    function logIn(email, password) {60        return firebase.auth().signInWithEmailAndPassword(email, password)61    }62    function signUp(email, password) {63        return firebase.auth().createUserWithEmailAndPassword(email, password);64    }65    function Delete() {66        setIsDelete(!isDelete)67    }68    function logOut() {69        setIsAdd(false)70        return firebase.auth().signOut();71    }72    function resetPassword(email) {73        return firebase.auth().sendPasswordResetEmail(email);74    }75    async function deleteDoc(docId) {76        await jobsRef.doc(docId).delete();77    }78    async function update(value, docId, field) {79        const updateRef = jobsRef.doc(docId);80        console.log(value, docId, field)81        if (field === "overview") {82            await updateRef.update({ overview: value });83        } else if (field === "requirement") {84            await updateRef.update({ requirement: value });85        } else if (field === "experience") {86            await updateRef.update({ experience: value });87        } else if (field === "position") {88            await updateRef.update({ position: value });89        } else if (field === "type") {90            await updateRef.update({ type: value });91        } else if (field === "salary") {92            await updateRef.update({ salary: value });93        } else if (field === "company") {94            await updateRef.update({ company: value });95        } else if (field === "title") {96            await updateRef.update({ title: value });97        } else if (field === "location") {98            await updateRef.update({ location: value });99        } else if (field === "logo") {100            await updateRef.update({ logo: value });101        }102        fetchDoc(docId)103    }104    async function fetchDoc(docId) {105        await jobsRef.doc(docId).get().then((doc) => {106            doc.exists ? setDetail(doc.data()) :107                console.log("No such document!");108        })109    }110    async function addDoc(data) {111        await jobsRef.doc().set(data);112        fetchData()113        setIsAdd(!isAdd)114    }115    function uploadFile(e) {116        const fileHash = crypto.createHash('sha1').update(e.target.value).digest('hex');117        const file = e.target.files[0]118        const fileReference = storageRef.child(currentUser.email + "/" + fileHash)119        fileReference.put(file).then(() => (120            fileReference.getDownloadURL()121            .then((url) => {122                setUrlLink(url)123                setFileRef(fileHash)124            })125            .catch((error) => {126                console.log(error)127            })128        ))129    }130    async function deleteImage(prevURL) {131        console.log(prevURL)132        var desertRef = storageRef.child(currentUser.email + "/" + fileRef);133        // Delete the file134        desertRef.delete().then(() => {135            console.log("Image deleted")136        }).catch((error) => {137            // Uh-oh, an error occurred!138        });139    }140    useEffect(() => {141        const unsubscribe = firebase.auth().onAuthStateChanged(user => {142            setCurrentUser(user);143            setLoading(false);144        })145        return unsubscribe;146    }, [])147    const value = {148        currentUser,149        signUp,150        logIn,151        logOut,152        resetPassword,153        addDoc,154        jobDetails,155        deleteDoc,156        fetchData,157        jobs,158        isDelete,159        Delete,160        isAdd,161        AddJob,162        uploadFile,163        urlLink,164        update,165        detail,166        fetchDoc,167        deleteImage,168        fileRef169    }170    return ( <171        AuthContext.Provider value = { value } > {!loading && children } <172        /AuthContext.Provider>173    )...UpdateUserDetails.js
Source:UpdateUserDetails.js  
1import firebase from "../firebase";2import { SendEmail } from "./SendEmail";3//! Adding new user to firebase db4export async function AddNewUser(newUserData) {5  //register new user with auth6  const newUser = await firebase.register(7    newUserData.firstName,8    newUserData.email,9    newUserData.password10  );11  //add to users collection12  firebase.db.collection("users").doc(newUser).set({13    id: newUser,14    isAdmin: false,15    firstName: newUserData.firstName,16    lastName: newUserData.lastName,17    businessName: newUserData.businessName,18    phone: newUserData.phone,19    username: newUserData.email,20    email: newUserData.email,21    currentStep: 0,22    stepStatus: "started",23    projectStatus: "started",24  });25  //add to websites collection26  firebase.db27    .collection("websites")28    .doc(newUser)29    .set({30      pages: newUserData.pageArr,31      id: newUser,32      client: newUserData.email,33      logo_url: "",34      designQuestions: {35        businessName: newUserData.businessName,36        references: newUserData.references,37        fonts: newUserData.fonts,38        colors: newUserData.colors,39        comments: newUserData.comments,40      },41    });42}43//Add lead to db - if not checked out44export async function AddNewLead(leadDoc) {45  await firebase.db.collection("leads").doc(leadDoc.email).set({46    leadDoc,47  });48}49//update lead in db50export async function UpdateLead(updatedLeadDoc) {51  const docRef = firebase.db.collection("leads").doc(updatedLeadDoc.email);52  const doc = await docRef.get();53  if (!doc.exists) {54    AddNewLead(updatedLeadDoc);55  } else {56    docRef.update({57      updatedLeadDoc,58    });59  }60}61export async function handleAddMockupLink(user, mockupLink) {62  if (!user) return;63  const updateRef = firebase.db.collection("websites").doc(user.id);64  await updateRef.update(65    {66      mockupLink: mockupLink,67      mockupStatus: "pending",68    },69    { merge: true }70  );71  const content = "Your Mockup Link has been added.";72  await SendEmail(content, user.email);73}74export async function handleAddStagingLink(user, stagingLink) {75  if (!user) return;76  const updateRef = firebase.db.collection("websites").doc(user.id);77  await updateRef.update(78    {79      stagingLink: stagingLink,80      stagingStatus: "pending",81    },82    { merge: true }83  );84  const content = "Your Staging Link has been added.";85  console.log(user.email);86  await SendEmail(content, user.email);87}88export async function handleApproveDesignQuestions(user, callback) {89  if (!user) return;90  const updateRef = firebase.db.collection("users").doc(user.id);91  updateRef.update(92    {93      designQuestionStatus: "approved",94      stepStatus: "started",95      currentStep: user.currentStep + 1,96      projectStatus: "Selecting Hosting Package",97    },98    { merge: true }99  );100  await callback();101  const content = "Your Design questions have been approved.";102  await SendEmail(content, user.email);103}104//TODO function for updating design questions105export async function UpdateDesignQuestionsInDB(userId, updatedDoc) {106  const updateRef = firebase.db.collection("websites").doc(userId);107  updateRef.update(108    {109      designQuestions: updatedDoc,110    },111    { merge: true }112  );113}114//TODO function for updating hosting package selection115export async function UpdateHostingPackageInDB(userId, updatedDoc) {116  const updateRef = firebase.db.collection("websites").doc(userId);117  updateRef.update(118    {119      hostingPackage: updatedDoc,120    },121    { merge: true }122  );123}124//TODO function for updating stepstatus125export async function UpdateStepStatusInDB(userId, updatedDoc) {126  const { projectStatus, stepStatus } = updatedDoc;127  const updateRef = firebase.db.collection("users").doc(userId);128  updateRef.update(129    {130      projectStatus: projectStatus,131      stepStatus: stepStatus,132    },133    { merge: true }134  );135}136//TODO function for updating logo137export async function UpdateLogoUrlInDB(userId, updatedDoc) {138  const updateRef = firebase.db.collection("websites").doc(userId);139  updateRef.update(140    {141      logo_url: updatedDoc,142    },143    { merge: true }144  );145}146//TODO function for updating page content ?probably also need page title or something for this147export async function UpdatePageContentInDB(userId, updatedDoc, pageTitle) {148  const updateRef = firebase.db.collection("websites").doc(userId);149  const titleString = pageTitle + "Info";150  updateRef.update(151    {152      [titleString]: updatedDoc,153    },154    { merge: true }155  );...UpdateUser.js
Source:UpdateUser.js  
1import React, { createRef, useEffect } from 'react';2import { Modal, Form, Button, Col } from 'react-bootstrap';3const UpdateUser = props => {4  useEffect(() => {5    console.log('props', props.selectedUser)6  }, [props.selectedUser])7  const updateRef = createRef();8  const onSubmitUpdateUser = e => {9    e.preventDefault();10    e.target.className += " was-validated";11    updateRef.current.email.value = checkEmail(updateRef.current.email.value) ? updateRef.current.email.value : "";12    updateRef.current.pass.value = checkPassword(updateRef.current.pass.value) ? updateRef.current.pass.value : "";13    const updateUser = {14      username: updateRef.current.name.value,15      email: updateRef.current.email.value,16      full_name: updateRef.current.fullName.value,17      password: updateRef.current.pass.value,18      role: updateRef.current.role.value19    }20    updateRef.email && updateRef.password && props.update(props.selectedUser._id, updateUser);21  }22  const checkEmail = (email) => {23    return email && email.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);24  }25  const checkPassword = (pass) => {26    return pass && pass.length > 5;27  }28  return (29    < Modal show={props.show} onHide={props.onHide} >30      <Modal.Header closeButton>31        <Modal.Title>Edit User</Modal.Title>32      </Modal.Header>33      <Form className="needs-validation" noValidate ref={updateRef} onSubmit={onSubmitUpdateUser}>34        <Modal.Body>35          <Form.Row>36            <Col>37              <Form.Group controlId="name">38                <Form.Label>Name</Form.Label>39                <Form.Control name="newName" placeholder="New User Name" required defaultValue={props.selectedUser ? props.selectedUser.username : ""} />40                <div className="invalid-feedback">41                  <div className="fieldError"> Invalid value.</div>42                </div>43              </Form.Group>44              <Form.Group controlId="email">45                <Form.Label>Email</Form.Label>46                <Form.Control name="newEmail" placeholder="Email" type="email" required defaultValue={props.selectedUser ? props.selectedUser.email : ""} />47                <div className="invalid-feedback">48                  <div className="fieldError"> Invalid value.</div>49                </div>50              </Form.Group>51              <Form.Group controlId="fullName">52                <Form.Label>Full Name</Form.Label>53                <Form.Control name="newFullName" placeholder="Full Name" required defaultValue={props.selectedUser ? props.selectedUser.full_name : ""} />54                <div className="invalid-feedback">55                  <div className="fieldError"> Invalid value.</div>56                </div>57              </Form.Group>58              <Form.Group controlId="pass">59                <Form.Label>Password</Form.Label>60                <Form.Control name="newPass" placeholder="Password should be over 6 letters" required defaultValue={props.selectedUser ? props.selectedUser.password : ""} />61              </Form.Group>62              <Form.Group controlId="role">63                <Form.Label>Role</Form.Label>64                <Form.Control as="select" name="newRole" required defaultValue={props.selectedUser ? props.selectedUser.role : "student"}>65                  <option value="STUDENT">Student</option>66                  <option value="TUTOR">Tutor</option>67                  <option value="ADMIN">Admin</option>68                </Form.Control>69                <div className="invalid-feedback">70                  <div className="fieldError"> Invalid value.</div>71                </div>72              </Form.Group>73            </Col>74          </Form.Row>75        </Modal.Body>76        <Modal.Footer>77          <Button variant="primary" type="submit">78            Update79          </Button>80        </Modal.Footer>81      </Form>82    </Modal >83  )84}...useTake.js
Source:useTake.js  
1import { useEffect, useRef, useState } from "react";2import { getStore } from "./createManager";3function useTake(name = "master") {4  const store = getStore(name);5  const updateRef = useRef({6    shouldUpdate: true,7    setInit: false,8    subKey: Symbol(),9  });10  const [, setUpdateTrigger] = useState({});11  useEffect(() => {12    updateRef.current.shouldUpdate = true;13    return () => {14      updateRef.current.shouldUpdate = false;15      store._removeListener(updateRef.current.subKey);16    };17  }, []);18  // init19  if (!updateRef.current.setInit) {20    store._addListener(updateRef.current.subKey, setUpdateTrigger);21    updateRef.current.setInitial = true;22  }23  return [store._state, store._dispatcher];24}...Using AI Code Generation
1const {chromium} = require('playwright');2(async () => {3    const browser = await chromium.launch();4    const page = await browser.newPage();5    await page.evaluate(() => {6        const input = document.querySelector('input[type=text]');7        const updateRef = input._updateRef;8        updateRef('value', 'Hello');9        updateRef('selectionStart', 0);10        updateRef('selectionEnd', 0);11    });12    await page.screenshot({path: 'google.png'});13    await browser.close();14})();15const {chromium} = require('playwright');16(async () => {17    const browser = await chromium.launch();18    const page = await browser.newPage();19    await page.evaluate(() => {20        const input = document.querySelector('input[type=text]');21        const updateRef = input._updateRef;22        updateRef('value', 'Hello');23        updateRef('selectionStart', 0);24        updateRef('selectionEnd', 0);25    });26    await page.screenshot({path: 'google.png'});27    await browser.close();28})();29const {chromium} = require('playwright');30(async () => {31    const browser = await chromium.launch();32    const page = await browser.newPage();33    await page.evaluate(() => {34        const input = document.querySelector('input[type=text]');35        const updateRef = input._updateRef;36        updateRef('value', 'Hello');37        updateRef('selectionStart', 0);38        updateRef('selectionEnd', 0);39    });40    await page.screenshot({path: 'google.png'});41    await browser.close();42})();43const {chromium} = require('playwright');44(async () => {45    const browser = await chromium.launch();46    const page = await browser.newPage();47    await page.evaluate(() => {48        const input = document.querySelector('input[type=text]');49        const updateRef = input._updateRef;50        updateRef('value', 'Hello');Using AI Code Generation
1const { updateRef } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');2const { context } = require('playwright-core/lib/server/supplements/recorder/recorderApp');3updateRef(context, 'recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });4await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });5await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });6await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });7await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });8await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });9await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });10await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });11await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });12await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });13await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });14await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });15await page.updateRef('recorderApp', { recorderApp: { ...context.recorderApp, updateRef } });16await page.updateRef('recorderApp', { recorderApp:Using AI Code Generation
1const { updateRef } = require('@playwright/test/lib/test/ref');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4  await updateRef(page, 'myRef', 'myValue');5  const refValue = await page.evaluate(() => window['playwright'].test.selectors.get('myRef'));6  console.log(refValue);7});Using AI Code Generation
1const { updateRef } = require('@playwright/test');2(async () => {3  await updateRef({4  });5})();6const { updateRef } = require('@playwright/test');7(async () => {8  await updateRef({9  });10})();Using AI Code Generation
1const { updateRef } = require('playwright/lib/server/supplements/recorder/recorderApp');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  await page.screenshot({ path: 'example.png' });8  await updateRef('example.png');9  await browser.close();10})();LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
